676cd6d02ae3b839aab74e080aa20a5beb82024f
[deliverable/binutils-gdb.git] / gdb / ada-lang.c
1 /* Ada language support routines for GDB, the GNU debugger.
2
3 Copyright (C) 1992-2019 Free Software Foundation, Inc.
4
5 This file is part of GDB.
6
7 This program is free software; you can redistribute it and/or modify
8 it under the terms of the GNU General Public License as published by
9 the Free Software Foundation; either version 3 of the License, or
10 (at your option) any later version.
11
12 This program is distributed in the hope that it will be useful,
13 but WITHOUT ANY WARRANTY; without even the implied warranty of
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 GNU General Public License for more details.
16
17 You should have received a copy of the GNU General Public License
18 along with this program. If not, see <http://www.gnu.org/licenses/>. */
19
20
21 #include "defs.h"
22 #include <ctype.h>
23 #include "demangle.h"
24 #include "gdb_regex.h"
25 #include "frame.h"
26 #include "symtab.h"
27 #include "gdbtypes.h"
28 #include "gdbcmd.h"
29 #include "expression.h"
30 #include "parser-defs.h"
31 #include "language.h"
32 #include "varobj.h"
33 #include "c-lang.h"
34 #include "inferior.h"
35 #include "symfile.h"
36 #include "objfiles.h"
37 #include "breakpoint.h"
38 #include "gdbcore.h"
39 #include "hashtab.h"
40 #include "gdb_obstack.h"
41 #include "ada-lang.h"
42 #include "completer.h"
43 #include <sys/stat.h>
44 #include "ui-out.h"
45 #include "block.h"
46 #include "infcall.h"
47 #include "dictionary.h"
48 #include "annotate.h"
49 #include "valprint.h"
50 #include "source.h"
51 #include "observable.h"
52 #include "common/vec.h"
53 #include "stack.h"
54 #include "common/gdb_vecs.h"
55 #include "typeprint.h"
56 #include "namespace.h"
57
58 #include "psymtab.h"
59 #include "value.h"
60 #include "mi/mi-common.h"
61 #include "arch-utils.h"
62 #include "cli/cli-utils.h"
63 #include "common/function-view.h"
64 #include "common/byte-vector.h"
65 #include <algorithm>
66 #include <map>
67
68 /* Define whether or not the C operator '/' truncates towards zero for
69 differently signed operands (truncation direction is undefined in C).
70 Copied from valarith.c. */
71
72 #ifndef TRUNCATION_TOWARDS_ZERO
73 #define TRUNCATION_TOWARDS_ZERO ((-5 / 2) == -2)
74 #endif
75
76 static struct type *desc_base_type (struct type *);
77
78 static struct type *desc_bounds_type (struct type *);
79
80 static struct value *desc_bounds (struct value *);
81
82 static int fat_pntr_bounds_bitpos (struct type *);
83
84 static int fat_pntr_bounds_bitsize (struct type *);
85
86 static struct type *desc_data_target_type (struct type *);
87
88 static struct value *desc_data (struct value *);
89
90 static int fat_pntr_data_bitpos (struct type *);
91
92 static int fat_pntr_data_bitsize (struct type *);
93
94 static struct value *desc_one_bound (struct value *, int, int);
95
96 static int desc_bound_bitpos (struct type *, int, int);
97
98 static int desc_bound_bitsize (struct type *, int, int);
99
100 static struct type *desc_index_type (struct type *, int);
101
102 static int desc_arity (struct type *);
103
104 static int ada_type_match (struct type *, struct type *, int);
105
106 static int ada_args_match (struct symbol *, struct value **, int);
107
108 static struct value *make_array_descriptor (struct type *, struct value *);
109
110 static void ada_add_block_symbols (struct obstack *,
111 const struct block *,
112 const lookup_name_info &lookup_name,
113 domain_enum, struct objfile *);
114
115 static void ada_add_all_symbols (struct obstack *, const struct block *,
116 const lookup_name_info &lookup_name,
117 domain_enum, int, int *);
118
119 static int is_nonfunction (struct block_symbol *, int);
120
121 static void add_defn_to_vec (struct obstack *, struct symbol *,
122 const struct block *);
123
124 static int num_defns_collected (struct obstack *);
125
126 static struct block_symbol *defns_collected (struct obstack *, int);
127
128 static struct value *resolve_subexp (expression_up *, int *, int,
129 struct type *, int,
130 innermost_block_tracker *);
131
132 static void replace_operator_with_call (expression_up *, int, int, int,
133 struct symbol *, const struct block *);
134
135 static int possible_user_operator_p (enum exp_opcode, struct value **);
136
137 static const char *ada_op_name (enum exp_opcode);
138
139 static const char *ada_decoded_op_name (enum exp_opcode);
140
141 static int numeric_type_p (struct type *);
142
143 static int integer_type_p (struct type *);
144
145 static int scalar_type_p (struct type *);
146
147 static int discrete_type_p (struct type *);
148
149 static enum ada_renaming_category parse_old_style_renaming (struct type *,
150 const char **,
151 int *,
152 const char **);
153
154 static struct symbol *find_old_style_renaming_symbol (const char *,
155 const struct block *);
156
157 static struct type *ada_lookup_struct_elt_type (struct type *, const char *,
158 int, int);
159
160 static struct value *evaluate_subexp_type (struct expression *, int *);
161
162 static struct type *ada_find_parallel_type_with_name (struct type *,
163 const char *);
164
165 static int is_dynamic_field (struct type *, int);
166
167 static struct type *to_fixed_variant_branch_type (struct type *,
168 const gdb_byte *,
169 CORE_ADDR, struct value *);
170
171 static struct type *to_fixed_array_type (struct type *, struct value *, int);
172
173 static struct type *to_fixed_range_type (struct type *, struct value *);
174
175 static struct type *to_static_fixed_type (struct type *);
176 static struct type *static_unwrap_type (struct type *type);
177
178 static struct value *unwrap_value (struct value *);
179
180 static struct type *constrained_packed_array_type (struct type *, long *);
181
182 static struct type *decode_constrained_packed_array_type (struct type *);
183
184 static long decode_packed_array_bitsize (struct type *);
185
186 static struct value *decode_constrained_packed_array (struct value *);
187
188 static int ada_is_packed_array_type (struct type *);
189
190 static int ada_is_unconstrained_packed_array_type (struct type *);
191
192 static struct value *value_subscript_packed (struct value *, int,
193 struct value **);
194
195 static struct value *coerce_unspec_val_to_type (struct value *,
196 struct type *);
197
198 static int lesseq_defined_than (struct symbol *, struct symbol *);
199
200 static int equiv_types (struct type *, struct type *);
201
202 static int is_name_suffix (const char *);
203
204 static int advance_wild_match (const char **, const char *, int);
205
206 static bool wild_match (const char *name, const char *patn);
207
208 static struct value *ada_coerce_ref (struct value *);
209
210 static LONGEST pos_atr (struct value *);
211
212 static struct value *value_pos_atr (struct type *, struct value *);
213
214 static struct value *value_val_atr (struct type *, struct value *);
215
216 static struct symbol *standard_lookup (const char *, const struct block *,
217 domain_enum);
218
219 static struct value *ada_search_struct_field (const char *, struct value *, int,
220 struct type *);
221
222 static struct value *ada_value_primitive_field (struct value *, int, int,
223 struct type *);
224
225 static int find_struct_field (const char *, struct type *, int,
226 struct type **, int *, int *, int *, int *);
227
228 static int ada_resolve_function (struct block_symbol *, int,
229 struct value **, int, const char *,
230 struct type *, int);
231
232 static int ada_is_direct_array_type (struct type *);
233
234 static void ada_language_arch_info (struct gdbarch *,
235 struct language_arch_info *);
236
237 static struct value *ada_index_struct_field (int, struct value *, int,
238 struct type *);
239
240 static struct value *assign_aggregate (struct value *, struct value *,
241 struct expression *,
242 int *, enum noside);
243
244 static void aggregate_assign_from_choices (struct value *, struct value *,
245 struct expression *,
246 int *, LONGEST *, int *,
247 int, LONGEST, LONGEST);
248
249 static void aggregate_assign_positional (struct value *, struct value *,
250 struct expression *,
251 int *, LONGEST *, int *, int,
252 LONGEST, LONGEST);
253
254
255 static void aggregate_assign_others (struct value *, struct value *,
256 struct expression *,
257 int *, LONGEST *, int, LONGEST, LONGEST);
258
259
260 static void add_component_interval (LONGEST, LONGEST, LONGEST *, int *, int);
261
262
263 static struct value *ada_evaluate_subexp (struct type *, struct expression *,
264 int *, enum noside);
265
266 static void ada_forward_operator_length (struct expression *, int, int *,
267 int *);
268
269 static struct type *ada_find_any_type (const char *name);
270
271 static symbol_name_matcher_ftype *ada_get_symbol_name_matcher
272 (const lookup_name_info &lookup_name);
273
274 \f
275
276 /* The result of a symbol lookup to be stored in our symbol cache. */
277
278 struct cache_entry
279 {
280 /* The name used to perform the lookup. */
281 const char *name;
282 /* The namespace used during the lookup. */
283 domain_enum domain;
284 /* The symbol returned by the lookup, or NULL if no matching symbol
285 was found. */
286 struct symbol *sym;
287 /* The block where the symbol was found, or NULL if no matching
288 symbol was found. */
289 const struct block *block;
290 /* A pointer to the next entry with the same hash. */
291 struct cache_entry *next;
292 };
293
294 /* The Ada symbol cache, used to store the result of Ada-mode symbol
295 lookups in the course of executing the user's commands.
296
297 The cache is implemented using a simple, fixed-sized hash.
298 The size is fixed on the grounds that there are not likely to be
299 all that many symbols looked up during any given session, regardless
300 of the size of the symbol table. If we decide to go to a resizable
301 table, let's just use the stuff from libiberty instead. */
302
303 #define HASH_SIZE 1009
304
305 struct ada_symbol_cache
306 {
307 /* An obstack used to store the entries in our cache. */
308 struct obstack cache_space;
309
310 /* The root of the hash table used to implement our symbol cache. */
311 struct cache_entry *root[HASH_SIZE];
312 };
313
314 static void ada_free_symbol_cache (struct ada_symbol_cache *sym_cache);
315
316 /* Maximum-sized dynamic type. */
317 static unsigned int varsize_limit;
318
319 static const char ada_completer_word_break_characters[] =
320 #ifdef VMS
321 " \t\n!@#%^&*()+=|~`}{[]\";:?/,-";
322 #else
323 " \t\n!@#$%^&*()+=|~`}{[]\";:?/,-";
324 #endif
325
326 /* The name of the symbol to use to get the name of the main subprogram. */
327 static const char ADA_MAIN_PROGRAM_SYMBOL_NAME[]
328 = "__gnat_ada_main_program_name";
329
330 /* Limit on the number of warnings to raise per expression evaluation. */
331 static int warning_limit = 2;
332
333 /* Number of warning messages issued; reset to 0 by cleanups after
334 expression evaluation. */
335 static int warnings_issued = 0;
336
337 static const char *known_runtime_file_name_patterns[] = {
338 ADA_KNOWN_RUNTIME_FILE_NAME_PATTERNS NULL
339 };
340
341 static const char *known_auxiliary_function_name_patterns[] = {
342 ADA_KNOWN_AUXILIARY_FUNCTION_NAME_PATTERNS NULL
343 };
344
345 /* Maintenance-related settings for this module. */
346
347 static struct cmd_list_element *maint_set_ada_cmdlist;
348 static struct cmd_list_element *maint_show_ada_cmdlist;
349
350 /* Implement the "maintenance set ada" (prefix) command. */
351
352 static void
353 maint_set_ada_cmd (const char *args, int from_tty)
354 {
355 help_list (maint_set_ada_cmdlist, "maintenance set ada ", all_commands,
356 gdb_stdout);
357 }
358
359 /* Implement the "maintenance show ada" (prefix) command. */
360
361 static void
362 maint_show_ada_cmd (const char *args, int from_tty)
363 {
364 cmd_show_list (maint_show_ada_cmdlist, from_tty, "");
365 }
366
367 /* The "maintenance ada set/show ignore-descriptive-type" value. */
368
369 static int ada_ignore_descriptive_types_p = 0;
370
371 /* Inferior-specific data. */
372
373 /* Per-inferior data for this module. */
374
375 struct ada_inferior_data
376 {
377 /* The ada__tags__type_specific_data type, which is used when decoding
378 tagged types. With older versions of GNAT, this type was directly
379 accessible through a component ("tsd") in the object tag. But this
380 is no longer the case, so we cache it for each inferior. */
381 struct type *tsd_type;
382
383 /* The exception_support_info data. This data is used to determine
384 how to implement support for Ada exception catchpoints in a given
385 inferior. */
386 const struct exception_support_info *exception_info;
387 };
388
389 /* Our key to this module's inferior data. */
390 static const struct inferior_data *ada_inferior_data;
391
392 /* A cleanup routine for our inferior data. */
393 static void
394 ada_inferior_data_cleanup (struct inferior *inf, void *arg)
395 {
396 struct ada_inferior_data *data;
397
398 data = (struct ada_inferior_data *) inferior_data (inf, ada_inferior_data);
399 if (data != NULL)
400 xfree (data);
401 }
402
403 /* Return our inferior data for the given inferior (INF).
404
405 This function always returns a valid pointer to an allocated
406 ada_inferior_data structure. If INF's inferior data has not
407 been previously set, this functions creates a new one with all
408 fields set to zero, sets INF's inferior to it, and then returns
409 a pointer to that newly allocated ada_inferior_data. */
410
411 static struct ada_inferior_data *
412 get_ada_inferior_data (struct inferior *inf)
413 {
414 struct ada_inferior_data *data;
415
416 data = (struct ada_inferior_data *) inferior_data (inf, ada_inferior_data);
417 if (data == NULL)
418 {
419 data = XCNEW (struct ada_inferior_data);
420 set_inferior_data (inf, ada_inferior_data, data);
421 }
422
423 return data;
424 }
425
426 /* Perform all necessary cleanups regarding our module's inferior data
427 that is required after the inferior INF just exited. */
428
429 static void
430 ada_inferior_exit (struct inferior *inf)
431 {
432 ada_inferior_data_cleanup (inf, NULL);
433 set_inferior_data (inf, ada_inferior_data, NULL);
434 }
435
436
437 /* program-space-specific data. */
438
439 /* This module's per-program-space data. */
440 struct ada_pspace_data
441 {
442 /* The Ada symbol cache. */
443 struct ada_symbol_cache *sym_cache;
444 };
445
446 /* Key to our per-program-space data. */
447 static const struct program_space_data *ada_pspace_data_handle;
448
449 /* Return this module's data for the given program space (PSPACE).
450 If not is found, add a zero'ed one now.
451
452 This function always returns a valid object. */
453
454 static struct ada_pspace_data *
455 get_ada_pspace_data (struct program_space *pspace)
456 {
457 struct ada_pspace_data *data;
458
459 data = ((struct ada_pspace_data *)
460 program_space_data (pspace, ada_pspace_data_handle));
461 if (data == NULL)
462 {
463 data = XCNEW (struct ada_pspace_data);
464 set_program_space_data (pspace, ada_pspace_data_handle, data);
465 }
466
467 return data;
468 }
469
470 /* The cleanup callback for this module's per-program-space data. */
471
472 static void
473 ada_pspace_data_cleanup (struct program_space *pspace, void *data)
474 {
475 struct ada_pspace_data *pspace_data = (struct ada_pspace_data *) data;
476
477 if (pspace_data->sym_cache != NULL)
478 ada_free_symbol_cache (pspace_data->sym_cache);
479 xfree (pspace_data);
480 }
481
482 /* Utilities */
483
484 /* If TYPE is a TYPE_CODE_TYPEDEF type, return the target type after
485 all typedef layers have been peeled. Otherwise, return TYPE.
486
487 Normally, we really expect a typedef type to only have 1 typedef layer.
488 In other words, we really expect the target type of a typedef type to be
489 a non-typedef type. This is particularly true for Ada units, because
490 the language does not have a typedef vs not-typedef distinction.
491 In that respect, the Ada compiler has been trying to eliminate as many
492 typedef definitions in the debugging information, since they generally
493 do not bring any extra information (we still use typedef under certain
494 circumstances related mostly to the GNAT encoding).
495
496 Unfortunately, we have seen situations where the debugging information
497 generated by the compiler leads to such multiple typedef layers. For
498 instance, consider the following example with stabs:
499
500 .stabs "pck__float_array___XUP:Tt(0,46)=s16P_ARRAY:(0,47)=[...]"[...]
501 .stabs "pck__float_array___XUP:t(0,36)=(0,46)",128,0,6,0
502
503 This is an error in the debugging information which causes type
504 pck__float_array___XUP to be defined twice, and the second time,
505 it is defined as a typedef of a typedef.
506
507 This is on the fringe of legality as far as debugging information is
508 concerned, and certainly unexpected. But it is easy to handle these
509 situations correctly, so we can afford to be lenient in this case. */
510
511 static struct type *
512 ada_typedef_target_type (struct type *type)
513 {
514 while (TYPE_CODE (type) == TYPE_CODE_TYPEDEF)
515 type = TYPE_TARGET_TYPE (type);
516 return type;
517 }
518
519 /* Given DECODED_NAME a string holding a symbol name in its
520 decoded form (ie using the Ada dotted notation), returns
521 its unqualified name. */
522
523 static const char *
524 ada_unqualified_name (const char *decoded_name)
525 {
526 const char *result;
527
528 /* If the decoded name starts with '<', it means that the encoded
529 name does not follow standard naming conventions, and thus that
530 it is not your typical Ada symbol name. Trying to unqualify it
531 is therefore pointless and possibly erroneous. */
532 if (decoded_name[0] == '<')
533 return decoded_name;
534
535 result = strrchr (decoded_name, '.');
536 if (result != NULL)
537 result++; /* Skip the dot... */
538 else
539 result = decoded_name;
540
541 return result;
542 }
543
544 /* Return a string starting with '<', followed by STR, and '>'. */
545
546 static std::string
547 add_angle_brackets (const char *str)
548 {
549 return string_printf ("<%s>", str);
550 }
551
552 static const char *
553 ada_get_gdb_completer_word_break_characters (void)
554 {
555 return ada_completer_word_break_characters;
556 }
557
558 /* Print an array element index using the Ada syntax. */
559
560 static void
561 ada_print_array_index (struct value *index_value, struct ui_file *stream,
562 const struct value_print_options *options)
563 {
564 LA_VALUE_PRINT (index_value, stream, options);
565 fprintf_filtered (stream, " => ");
566 }
567
568 /* la_watch_location_expression for Ada. */
569
570 gdb::unique_xmalloc_ptr<char>
571 ada_watch_location_expression (struct type *type, CORE_ADDR addr)
572 {
573 type = check_typedef (TYPE_TARGET_TYPE (check_typedef (type)));
574 std::string name = type_to_string (type);
575 return gdb::unique_xmalloc_ptr<char>
576 (xstrprintf ("{%s} %s", name.c_str (), core_addr_to_string (addr)));
577 }
578
579 /* Assuming VECT points to an array of *SIZE objects of size
580 ELEMENT_SIZE, grow it to contain at least MIN_SIZE objects,
581 updating *SIZE as necessary and returning the (new) array. */
582
583 void *
584 grow_vect (void *vect, size_t *size, size_t min_size, int element_size)
585 {
586 if (*size < min_size)
587 {
588 *size *= 2;
589 if (*size < min_size)
590 *size = min_size;
591 vect = xrealloc (vect, *size * element_size);
592 }
593 return vect;
594 }
595
596 /* True (non-zero) iff TARGET matches FIELD_NAME up to any trailing
597 suffix of FIELD_NAME beginning "___". */
598
599 static int
600 field_name_match (const char *field_name, const char *target)
601 {
602 int len = strlen (target);
603
604 return
605 (strncmp (field_name, target, len) == 0
606 && (field_name[len] == '\0'
607 || (startswith (field_name + len, "___")
608 && strcmp (field_name + strlen (field_name) - 6,
609 "___XVN") != 0)));
610 }
611
612
613 /* Assuming TYPE is a TYPE_CODE_STRUCT or a TYPE_CODE_TYPDEF to
614 a TYPE_CODE_STRUCT, find the field whose name matches FIELD_NAME,
615 and return its index. This function also handles fields whose name
616 have ___ suffixes because the compiler sometimes alters their name
617 by adding such a suffix to represent fields with certain constraints.
618 If the field could not be found, return a negative number if
619 MAYBE_MISSING is set. Otherwise raise an error. */
620
621 int
622 ada_get_field_index (const struct type *type, const char *field_name,
623 int maybe_missing)
624 {
625 int fieldno;
626 struct type *struct_type = check_typedef ((struct type *) type);
627
628 for (fieldno = 0; fieldno < TYPE_NFIELDS (struct_type); fieldno++)
629 if (field_name_match (TYPE_FIELD_NAME (struct_type, fieldno), field_name))
630 return fieldno;
631
632 if (!maybe_missing)
633 error (_("Unable to find field %s in struct %s. Aborting"),
634 field_name, TYPE_NAME (struct_type));
635
636 return -1;
637 }
638
639 /* The length of the prefix of NAME prior to any "___" suffix. */
640
641 int
642 ada_name_prefix_len (const char *name)
643 {
644 if (name == NULL)
645 return 0;
646 else
647 {
648 const char *p = strstr (name, "___");
649
650 if (p == NULL)
651 return strlen (name);
652 else
653 return p - name;
654 }
655 }
656
657 /* Return non-zero if SUFFIX is a suffix of STR.
658 Return zero if STR is null. */
659
660 static int
661 is_suffix (const char *str, const char *suffix)
662 {
663 int len1, len2;
664
665 if (str == NULL)
666 return 0;
667 len1 = strlen (str);
668 len2 = strlen (suffix);
669 return (len1 >= len2 && strcmp (str + len1 - len2, suffix) == 0);
670 }
671
672 /* The contents of value VAL, treated as a value of type TYPE. The
673 result is an lval in memory if VAL is. */
674
675 static struct value *
676 coerce_unspec_val_to_type (struct value *val, struct type *type)
677 {
678 type = ada_check_typedef (type);
679 if (value_type (val) == type)
680 return val;
681 else
682 {
683 struct value *result;
684
685 /* Make sure that the object size is not unreasonable before
686 trying to allocate some memory for it. */
687 ada_ensure_varsize_limit (type);
688
689 if (value_lazy (val)
690 || TYPE_LENGTH (type) > TYPE_LENGTH (value_type (val)))
691 result = allocate_value_lazy (type);
692 else
693 {
694 result = allocate_value (type);
695 value_contents_copy_raw (result, 0, val, 0, TYPE_LENGTH (type));
696 }
697 set_value_component_location (result, val);
698 set_value_bitsize (result, value_bitsize (val));
699 set_value_bitpos (result, value_bitpos (val));
700 set_value_address (result, value_address (val));
701 return result;
702 }
703 }
704
705 static const gdb_byte *
706 cond_offset_host (const gdb_byte *valaddr, long offset)
707 {
708 if (valaddr == NULL)
709 return NULL;
710 else
711 return valaddr + offset;
712 }
713
714 static CORE_ADDR
715 cond_offset_target (CORE_ADDR address, long offset)
716 {
717 if (address == 0)
718 return 0;
719 else
720 return address + offset;
721 }
722
723 /* Issue a warning (as for the definition of warning in utils.c, but
724 with exactly one argument rather than ...), unless the limit on the
725 number of warnings has passed during the evaluation of the current
726 expression. */
727
728 /* FIXME: cagney/2004-10-10: This function is mimicking the behavior
729 provided by "complaint". */
730 static void lim_warning (const char *format, ...) ATTRIBUTE_PRINTF (1, 2);
731
732 static void
733 lim_warning (const char *format, ...)
734 {
735 va_list args;
736
737 va_start (args, format);
738 warnings_issued += 1;
739 if (warnings_issued <= warning_limit)
740 vwarning (format, args);
741
742 va_end (args);
743 }
744
745 /* Issue an error if the size of an object of type T is unreasonable,
746 i.e. if it would be a bad idea to allocate a value of this type in
747 GDB. */
748
749 void
750 ada_ensure_varsize_limit (const struct type *type)
751 {
752 if (TYPE_LENGTH (type) > varsize_limit)
753 error (_("object size is larger than varsize-limit"));
754 }
755
756 /* Maximum value of a SIZE-byte signed integer type. */
757 static LONGEST
758 max_of_size (int size)
759 {
760 LONGEST top_bit = (LONGEST) 1 << (size * 8 - 2);
761
762 return top_bit | (top_bit - 1);
763 }
764
765 /* Minimum value of a SIZE-byte signed integer type. */
766 static LONGEST
767 min_of_size (int size)
768 {
769 return -max_of_size (size) - 1;
770 }
771
772 /* Maximum value of a SIZE-byte unsigned integer type. */
773 static ULONGEST
774 umax_of_size (int size)
775 {
776 ULONGEST top_bit = (ULONGEST) 1 << (size * 8 - 1);
777
778 return top_bit | (top_bit - 1);
779 }
780
781 /* Maximum value of integral type T, as a signed quantity. */
782 static LONGEST
783 max_of_type (struct type *t)
784 {
785 if (TYPE_UNSIGNED (t))
786 return (LONGEST) umax_of_size (TYPE_LENGTH (t));
787 else
788 return max_of_size (TYPE_LENGTH (t));
789 }
790
791 /* Minimum value of integral type T, as a signed quantity. */
792 static LONGEST
793 min_of_type (struct type *t)
794 {
795 if (TYPE_UNSIGNED (t))
796 return 0;
797 else
798 return min_of_size (TYPE_LENGTH (t));
799 }
800
801 /* The largest value in the domain of TYPE, a discrete type, as an integer. */
802 LONGEST
803 ada_discrete_type_high_bound (struct type *type)
804 {
805 type = resolve_dynamic_type (type, NULL, 0);
806 switch (TYPE_CODE (type))
807 {
808 case TYPE_CODE_RANGE:
809 return TYPE_HIGH_BOUND (type);
810 case TYPE_CODE_ENUM:
811 return TYPE_FIELD_ENUMVAL (type, TYPE_NFIELDS (type) - 1);
812 case TYPE_CODE_BOOL:
813 return 1;
814 case TYPE_CODE_CHAR:
815 case TYPE_CODE_INT:
816 return max_of_type (type);
817 default:
818 error (_("Unexpected type in ada_discrete_type_high_bound."));
819 }
820 }
821
822 /* The smallest value in the domain of TYPE, a discrete type, as an integer. */
823 LONGEST
824 ada_discrete_type_low_bound (struct type *type)
825 {
826 type = resolve_dynamic_type (type, NULL, 0);
827 switch (TYPE_CODE (type))
828 {
829 case TYPE_CODE_RANGE:
830 return TYPE_LOW_BOUND (type);
831 case TYPE_CODE_ENUM:
832 return TYPE_FIELD_ENUMVAL (type, 0);
833 case TYPE_CODE_BOOL:
834 return 0;
835 case TYPE_CODE_CHAR:
836 case TYPE_CODE_INT:
837 return min_of_type (type);
838 default:
839 error (_("Unexpected type in ada_discrete_type_low_bound."));
840 }
841 }
842
843 /* The identity on non-range types. For range types, the underlying
844 non-range scalar type. */
845
846 static struct type *
847 get_base_type (struct type *type)
848 {
849 while (type != NULL && TYPE_CODE (type) == TYPE_CODE_RANGE)
850 {
851 if (type == TYPE_TARGET_TYPE (type) || TYPE_TARGET_TYPE (type) == NULL)
852 return type;
853 type = TYPE_TARGET_TYPE (type);
854 }
855 return type;
856 }
857
858 /* Return a decoded version of the given VALUE. This means returning
859 a value whose type is obtained by applying all the GNAT-specific
860 encondings, making the resulting type a static but standard description
861 of the initial type. */
862
863 struct value *
864 ada_get_decoded_value (struct value *value)
865 {
866 struct type *type = ada_check_typedef (value_type (value));
867
868 if (ada_is_array_descriptor_type (type)
869 || (ada_is_constrained_packed_array_type (type)
870 && TYPE_CODE (type) != TYPE_CODE_PTR))
871 {
872 if (TYPE_CODE (type) == TYPE_CODE_TYPEDEF) /* array access type. */
873 value = ada_coerce_to_simple_array_ptr (value);
874 else
875 value = ada_coerce_to_simple_array (value);
876 }
877 else
878 value = ada_to_fixed_value (value);
879
880 return value;
881 }
882
883 /* Same as ada_get_decoded_value, but with the given TYPE.
884 Because there is no associated actual value for this type,
885 the resulting type might be a best-effort approximation in
886 the case of dynamic types. */
887
888 struct type *
889 ada_get_decoded_type (struct type *type)
890 {
891 type = to_static_fixed_type (type);
892 if (ada_is_constrained_packed_array_type (type))
893 type = ada_coerce_to_simple_array_type (type);
894 return type;
895 }
896
897 \f
898
899 /* Language Selection */
900
901 /* If the main program is in Ada, return language_ada, otherwise return LANG
902 (the main program is in Ada iif the adainit symbol is found). */
903
904 enum language
905 ada_update_initial_language (enum language lang)
906 {
907 if (lookup_minimal_symbol ("adainit", (const char *) NULL,
908 (struct objfile *) NULL).minsym != NULL)
909 return language_ada;
910
911 return lang;
912 }
913
914 /* If the main procedure is written in Ada, then return its name.
915 The result is good until the next call. Return NULL if the main
916 procedure doesn't appear to be in Ada. */
917
918 char *
919 ada_main_name (void)
920 {
921 struct bound_minimal_symbol msym;
922 static gdb::unique_xmalloc_ptr<char> main_program_name;
923
924 /* For Ada, the name of the main procedure is stored in a specific
925 string constant, generated by the binder. Look for that symbol,
926 extract its address, and then read that string. If we didn't find
927 that string, then most probably the main procedure is not written
928 in Ada. */
929 msym = lookup_minimal_symbol (ADA_MAIN_PROGRAM_SYMBOL_NAME, NULL, NULL);
930
931 if (msym.minsym != NULL)
932 {
933 CORE_ADDR main_program_name_addr;
934 int err_code;
935
936 main_program_name_addr = BMSYMBOL_VALUE_ADDRESS (msym);
937 if (main_program_name_addr == 0)
938 error (_("Invalid address for Ada main program name."));
939
940 target_read_string (main_program_name_addr, &main_program_name,
941 1024, &err_code);
942
943 if (err_code != 0)
944 return NULL;
945 return main_program_name.get ();
946 }
947
948 /* The main procedure doesn't seem to be in Ada. */
949 return NULL;
950 }
951 \f
952 /* Symbols */
953
954 /* Table of Ada operators and their GNAT-encoded names. Last entry is pair
955 of NULLs. */
956
957 const struct ada_opname_map ada_opname_table[] = {
958 {"Oadd", "\"+\"", BINOP_ADD},
959 {"Osubtract", "\"-\"", BINOP_SUB},
960 {"Omultiply", "\"*\"", BINOP_MUL},
961 {"Odivide", "\"/\"", BINOP_DIV},
962 {"Omod", "\"mod\"", BINOP_MOD},
963 {"Orem", "\"rem\"", BINOP_REM},
964 {"Oexpon", "\"**\"", BINOP_EXP},
965 {"Olt", "\"<\"", BINOP_LESS},
966 {"Ole", "\"<=\"", BINOP_LEQ},
967 {"Ogt", "\">\"", BINOP_GTR},
968 {"Oge", "\">=\"", BINOP_GEQ},
969 {"Oeq", "\"=\"", BINOP_EQUAL},
970 {"One", "\"/=\"", BINOP_NOTEQUAL},
971 {"Oand", "\"and\"", BINOP_BITWISE_AND},
972 {"Oor", "\"or\"", BINOP_BITWISE_IOR},
973 {"Oxor", "\"xor\"", BINOP_BITWISE_XOR},
974 {"Oconcat", "\"&\"", BINOP_CONCAT},
975 {"Oabs", "\"abs\"", UNOP_ABS},
976 {"Onot", "\"not\"", UNOP_LOGICAL_NOT},
977 {"Oadd", "\"+\"", UNOP_PLUS},
978 {"Osubtract", "\"-\"", UNOP_NEG},
979 {NULL, NULL}
980 };
981
982 /* The "encoded" form of DECODED, according to GNAT conventions. The
983 result is valid until the next call to ada_encode. If
984 THROW_ERRORS, throw an error if invalid operator name is found.
985 Otherwise, return NULL in that case. */
986
987 static char *
988 ada_encode_1 (const char *decoded, bool throw_errors)
989 {
990 static char *encoding_buffer = NULL;
991 static size_t encoding_buffer_size = 0;
992 const char *p;
993 int k;
994
995 if (decoded == NULL)
996 return NULL;
997
998 GROW_VECT (encoding_buffer, encoding_buffer_size,
999 2 * strlen (decoded) + 10);
1000
1001 k = 0;
1002 for (p = decoded; *p != '\0'; p += 1)
1003 {
1004 if (*p == '.')
1005 {
1006 encoding_buffer[k] = encoding_buffer[k + 1] = '_';
1007 k += 2;
1008 }
1009 else if (*p == '"')
1010 {
1011 const struct ada_opname_map *mapping;
1012
1013 for (mapping = ada_opname_table;
1014 mapping->encoded != NULL
1015 && !startswith (p, mapping->decoded); mapping += 1)
1016 ;
1017 if (mapping->encoded == NULL)
1018 {
1019 if (throw_errors)
1020 error (_("invalid Ada operator name: %s"), p);
1021 else
1022 return NULL;
1023 }
1024 strcpy (encoding_buffer + k, mapping->encoded);
1025 k += strlen (mapping->encoded);
1026 break;
1027 }
1028 else
1029 {
1030 encoding_buffer[k] = *p;
1031 k += 1;
1032 }
1033 }
1034
1035 encoding_buffer[k] = '\0';
1036 return encoding_buffer;
1037 }
1038
1039 /* The "encoded" form of DECODED, according to GNAT conventions.
1040 The result is valid until the next call to ada_encode. */
1041
1042 char *
1043 ada_encode (const char *decoded)
1044 {
1045 return ada_encode_1 (decoded, true);
1046 }
1047
1048 /* Return NAME folded to lower case, or, if surrounded by single
1049 quotes, unfolded, but with the quotes stripped away. Result good
1050 to next call. */
1051
1052 char *
1053 ada_fold_name (const char *name)
1054 {
1055 static char *fold_buffer = NULL;
1056 static size_t fold_buffer_size = 0;
1057
1058 int len = strlen (name);
1059 GROW_VECT (fold_buffer, fold_buffer_size, len + 1);
1060
1061 if (name[0] == '\'')
1062 {
1063 strncpy (fold_buffer, name + 1, len - 2);
1064 fold_buffer[len - 2] = '\000';
1065 }
1066 else
1067 {
1068 int i;
1069
1070 for (i = 0; i <= len; i += 1)
1071 fold_buffer[i] = tolower (name[i]);
1072 }
1073
1074 return fold_buffer;
1075 }
1076
1077 /* Return nonzero if C is either a digit or a lowercase alphabet character. */
1078
1079 static int
1080 is_lower_alphanum (const char c)
1081 {
1082 return (isdigit (c) || (isalpha (c) && islower (c)));
1083 }
1084
1085 /* ENCODED is the linkage name of a symbol and LEN contains its length.
1086 This function saves in LEN the length of that same symbol name but
1087 without either of these suffixes:
1088 . .{DIGIT}+
1089 . ${DIGIT}+
1090 . ___{DIGIT}+
1091 . __{DIGIT}+.
1092
1093 These are suffixes introduced by the compiler for entities such as
1094 nested subprogram for instance, in order to avoid name clashes.
1095 They do not serve any purpose for the debugger. */
1096
1097 static void
1098 ada_remove_trailing_digits (const char *encoded, int *len)
1099 {
1100 if (*len > 1 && isdigit (encoded[*len - 1]))
1101 {
1102 int i = *len - 2;
1103
1104 while (i > 0 && isdigit (encoded[i]))
1105 i--;
1106 if (i >= 0 && encoded[i] == '.')
1107 *len = i;
1108 else if (i >= 0 && encoded[i] == '$')
1109 *len = i;
1110 else if (i >= 2 && startswith (encoded + i - 2, "___"))
1111 *len = i - 2;
1112 else if (i >= 1 && startswith (encoded + i - 1, "__"))
1113 *len = i - 1;
1114 }
1115 }
1116
1117 /* Remove the suffix introduced by the compiler for protected object
1118 subprograms. */
1119
1120 static void
1121 ada_remove_po_subprogram_suffix (const char *encoded, int *len)
1122 {
1123 /* Remove trailing N. */
1124
1125 /* Protected entry subprograms are broken into two
1126 separate subprograms: The first one is unprotected, and has
1127 a 'N' suffix; the second is the protected version, and has
1128 the 'P' suffix. The second calls the first one after handling
1129 the protection. Since the P subprograms are internally generated,
1130 we leave these names undecoded, giving the user a clue that this
1131 entity is internal. */
1132
1133 if (*len > 1
1134 && encoded[*len - 1] == 'N'
1135 && (isdigit (encoded[*len - 2]) || islower (encoded[*len - 2])))
1136 *len = *len - 1;
1137 }
1138
1139 /* Remove trailing X[bn]* suffixes (indicating names in package bodies). */
1140
1141 static void
1142 ada_remove_Xbn_suffix (const char *encoded, int *len)
1143 {
1144 int i = *len - 1;
1145
1146 while (i > 0 && (encoded[i] == 'b' || encoded[i] == 'n'))
1147 i--;
1148
1149 if (encoded[i] != 'X')
1150 return;
1151
1152 if (i == 0)
1153 return;
1154
1155 if (isalnum (encoded[i-1]))
1156 *len = i;
1157 }
1158
1159 /* If ENCODED follows the GNAT entity encoding conventions, then return
1160 the decoded form of ENCODED. Otherwise, return "<%s>" where "%s" is
1161 replaced by ENCODED.
1162
1163 The resulting string is valid until the next call of ada_decode.
1164 If the string is unchanged by decoding, the original string pointer
1165 is returned. */
1166
1167 const char *
1168 ada_decode (const char *encoded)
1169 {
1170 int i, j;
1171 int len0;
1172 const char *p;
1173 char *decoded;
1174 int at_start_name;
1175 static char *decoding_buffer = NULL;
1176 static size_t decoding_buffer_size = 0;
1177
1178 /* With function descriptors on PPC64, the value of a symbol named
1179 ".FN", if it exists, is the entry point of the function "FN". */
1180 if (encoded[0] == '.')
1181 encoded += 1;
1182
1183 /* The name of the Ada main procedure starts with "_ada_".
1184 This prefix is not part of the decoded name, so skip this part
1185 if we see this prefix. */
1186 if (startswith (encoded, "_ada_"))
1187 encoded += 5;
1188
1189 /* If the name starts with '_', then it is not a properly encoded
1190 name, so do not attempt to decode it. Similarly, if the name
1191 starts with '<', the name should not be decoded. */
1192 if (encoded[0] == '_' || encoded[0] == '<')
1193 goto Suppress;
1194
1195 len0 = strlen (encoded);
1196
1197 ada_remove_trailing_digits (encoded, &len0);
1198 ada_remove_po_subprogram_suffix (encoded, &len0);
1199
1200 /* Remove the ___X.* suffix if present. Do not forget to verify that
1201 the suffix is located before the current "end" of ENCODED. We want
1202 to avoid re-matching parts of ENCODED that have previously been
1203 marked as discarded (by decrementing LEN0). */
1204 p = strstr (encoded, "___");
1205 if (p != NULL && p - encoded < len0 - 3)
1206 {
1207 if (p[3] == 'X')
1208 len0 = p - encoded;
1209 else
1210 goto Suppress;
1211 }
1212
1213 /* Remove any trailing TKB suffix. It tells us that this symbol
1214 is for the body of a task, but that information does not actually
1215 appear in the decoded name. */
1216
1217 if (len0 > 3 && startswith (encoded + len0 - 3, "TKB"))
1218 len0 -= 3;
1219
1220 /* Remove any trailing TB suffix. The TB suffix is slightly different
1221 from the TKB suffix because it is used for non-anonymous task
1222 bodies. */
1223
1224 if (len0 > 2 && startswith (encoded + len0 - 2, "TB"))
1225 len0 -= 2;
1226
1227 /* Remove trailing "B" suffixes. */
1228 /* FIXME: brobecker/2006-04-19: Not sure what this are used for... */
1229
1230 if (len0 > 1 && startswith (encoded + len0 - 1, "B"))
1231 len0 -= 1;
1232
1233 /* Make decoded big enough for possible expansion by operator name. */
1234
1235 GROW_VECT (decoding_buffer, decoding_buffer_size, 2 * len0 + 1);
1236 decoded = decoding_buffer;
1237
1238 /* Remove trailing __{digit}+ or trailing ${digit}+. */
1239
1240 if (len0 > 1 && isdigit (encoded[len0 - 1]))
1241 {
1242 i = len0 - 2;
1243 while ((i >= 0 && isdigit (encoded[i]))
1244 || (i >= 1 && encoded[i] == '_' && isdigit (encoded[i - 1])))
1245 i -= 1;
1246 if (i > 1 && encoded[i] == '_' && encoded[i - 1] == '_')
1247 len0 = i - 1;
1248 else if (encoded[i] == '$')
1249 len0 = i;
1250 }
1251
1252 /* The first few characters that are not alphabetic are not part
1253 of any encoding we use, so we can copy them over verbatim. */
1254
1255 for (i = 0, j = 0; i < len0 && !isalpha (encoded[i]); i += 1, j += 1)
1256 decoded[j] = encoded[i];
1257
1258 at_start_name = 1;
1259 while (i < len0)
1260 {
1261 /* Is this a symbol function? */
1262 if (at_start_name && encoded[i] == 'O')
1263 {
1264 int k;
1265
1266 for (k = 0; ada_opname_table[k].encoded != NULL; k += 1)
1267 {
1268 int op_len = strlen (ada_opname_table[k].encoded);
1269 if ((strncmp (ada_opname_table[k].encoded + 1, encoded + i + 1,
1270 op_len - 1) == 0)
1271 && !isalnum (encoded[i + op_len]))
1272 {
1273 strcpy (decoded + j, ada_opname_table[k].decoded);
1274 at_start_name = 0;
1275 i += op_len;
1276 j += strlen (ada_opname_table[k].decoded);
1277 break;
1278 }
1279 }
1280 if (ada_opname_table[k].encoded != NULL)
1281 continue;
1282 }
1283 at_start_name = 0;
1284
1285 /* Replace "TK__" with "__", which will eventually be translated
1286 into "." (just below). */
1287
1288 if (i < len0 - 4 && startswith (encoded + i, "TK__"))
1289 i += 2;
1290
1291 /* Replace "__B_{DIGITS}+__" sequences by "__", which will eventually
1292 be translated into "." (just below). These are internal names
1293 generated for anonymous blocks inside which our symbol is nested. */
1294
1295 if (len0 - i > 5 && encoded [i] == '_' && encoded [i+1] == '_'
1296 && encoded [i+2] == 'B' && encoded [i+3] == '_'
1297 && isdigit (encoded [i+4]))
1298 {
1299 int k = i + 5;
1300
1301 while (k < len0 && isdigit (encoded[k]))
1302 k++; /* Skip any extra digit. */
1303
1304 /* Double-check that the "__B_{DIGITS}+" sequence we found
1305 is indeed followed by "__". */
1306 if (len0 - k > 2 && encoded [k] == '_' && encoded [k+1] == '_')
1307 i = k;
1308 }
1309
1310 /* Remove _E{DIGITS}+[sb] */
1311
1312 /* Just as for protected object subprograms, there are 2 categories
1313 of subprograms created by the compiler for each entry. The first
1314 one implements the actual entry code, and has a suffix following
1315 the convention above; the second one implements the barrier and
1316 uses the same convention as above, except that the 'E' is replaced
1317 by a 'B'.
1318
1319 Just as above, we do not decode the name of barrier functions
1320 to give the user a clue that the code he is debugging has been
1321 internally generated. */
1322
1323 if (len0 - i > 3 && encoded [i] == '_' && encoded[i+1] == 'E'
1324 && isdigit (encoded[i+2]))
1325 {
1326 int k = i + 3;
1327
1328 while (k < len0 && isdigit (encoded[k]))
1329 k++;
1330
1331 if (k < len0
1332 && (encoded[k] == 'b' || encoded[k] == 's'))
1333 {
1334 k++;
1335 /* Just as an extra precaution, make sure that if this
1336 suffix is followed by anything else, it is a '_'.
1337 Otherwise, we matched this sequence by accident. */
1338 if (k == len0
1339 || (k < len0 && encoded[k] == '_'))
1340 i = k;
1341 }
1342 }
1343
1344 /* Remove trailing "N" in [a-z0-9]+N__. The N is added by
1345 the GNAT front-end in protected object subprograms. */
1346
1347 if (i < len0 + 3
1348 && encoded[i] == 'N' && encoded[i+1] == '_' && encoded[i+2] == '_')
1349 {
1350 /* Backtrack a bit up until we reach either the begining of
1351 the encoded name, or "__". Make sure that we only find
1352 digits or lowercase characters. */
1353 const char *ptr = encoded + i - 1;
1354
1355 while (ptr >= encoded && is_lower_alphanum (ptr[0]))
1356 ptr--;
1357 if (ptr < encoded
1358 || (ptr > encoded && ptr[0] == '_' && ptr[-1] == '_'))
1359 i++;
1360 }
1361
1362 if (encoded[i] == 'X' && i != 0 && isalnum (encoded[i - 1]))
1363 {
1364 /* This is a X[bn]* sequence not separated from the previous
1365 part of the name with a non-alpha-numeric character (in other
1366 words, immediately following an alpha-numeric character), then
1367 verify that it is placed at the end of the encoded name. If
1368 not, then the encoding is not valid and we should abort the
1369 decoding. Otherwise, just skip it, it is used in body-nested
1370 package names. */
1371 do
1372 i += 1;
1373 while (i < len0 && (encoded[i] == 'b' || encoded[i] == 'n'));
1374 if (i < len0)
1375 goto Suppress;
1376 }
1377 else if (i < len0 - 2 && encoded[i] == '_' && encoded[i + 1] == '_')
1378 {
1379 /* Replace '__' by '.'. */
1380 decoded[j] = '.';
1381 at_start_name = 1;
1382 i += 2;
1383 j += 1;
1384 }
1385 else
1386 {
1387 /* It's a character part of the decoded name, so just copy it
1388 over. */
1389 decoded[j] = encoded[i];
1390 i += 1;
1391 j += 1;
1392 }
1393 }
1394 decoded[j] = '\000';
1395
1396 /* Decoded names should never contain any uppercase character.
1397 Double-check this, and abort the decoding if we find one. */
1398
1399 for (i = 0; decoded[i] != '\0'; i += 1)
1400 if (isupper (decoded[i]) || decoded[i] == ' ')
1401 goto Suppress;
1402
1403 if (strcmp (decoded, encoded) == 0)
1404 return encoded;
1405 else
1406 return decoded;
1407
1408 Suppress:
1409 GROW_VECT (decoding_buffer, decoding_buffer_size, strlen (encoded) + 3);
1410 decoded = decoding_buffer;
1411 if (encoded[0] == '<')
1412 strcpy (decoded, encoded);
1413 else
1414 xsnprintf (decoded, decoding_buffer_size, "<%s>", encoded);
1415 return decoded;
1416
1417 }
1418
1419 /* Table for keeping permanent unique copies of decoded names. Once
1420 allocated, names in this table are never released. While this is a
1421 storage leak, it should not be significant unless there are massive
1422 changes in the set of decoded names in successive versions of a
1423 symbol table loaded during a single session. */
1424 static struct htab *decoded_names_store;
1425
1426 /* Returns the decoded name of GSYMBOL, as for ada_decode, caching it
1427 in the language-specific part of GSYMBOL, if it has not been
1428 previously computed. Tries to save the decoded name in the same
1429 obstack as GSYMBOL, if possible, and otherwise on the heap (so that,
1430 in any case, the decoded symbol has a lifetime at least that of
1431 GSYMBOL).
1432 The GSYMBOL parameter is "mutable" in the C++ sense: logically
1433 const, but nevertheless modified to a semantically equivalent form
1434 when a decoded name is cached in it. */
1435
1436 const char *
1437 ada_decode_symbol (const struct general_symbol_info *arg)
1438 {
1439 struct general_symbol_info *gsymbol = (struct general_symbol_info *) arg;
1440 const char **resultp =
1441 &gsymbol->language_specific.demangled_name;
1442
1443 if (!gsymbol->ada_mangled)
1444 {
1445 const char *decoded = ada_decode (gsymbol->name);
1446 struct obstack *obstack = gsymbol->language_specific.obstack;
1447
1448 gsymbol->ada_mangled = 1;
1449
1450 if (obstack != NULL)
1451 *resultp
1452 = (const char *) obstack_copy0 (obstack, decoded, strlen (decoded));
1453 else
1454 {
1455 /* Sometimes, we can't find a corresponding objfile, in
1456 which case, we put the result on the heap. Since we only
1457 decode when needed, we hope this usually does not cause a
1458 significant memory leak (FIXME). */
1459
1460 char **slot = (char **) htab_find_slot (decoded_names_store,
1461 decoded, INSERT);
1462
1463 if (*slot == NULL)
1464 *slot = xstrdup (decoded);
1465 *resultp = *slot;
1466 }
1467 }
1468
1469 return *resultp;
1470 }
1471
1472 static char *
1473 ada_la_decode (const char *encoded, int options)
1474 {
1475 return xstrdup (ada_decode (encoded));
1476 }
1477
1478 /* Implement la_sniff_from_mangled_name for Ada. */
1479
1480 static int
1481 ada_sniff_from_mangled_name (const char *mangled, char **out)
1482 {
1483 const char *demangled = ada_decode (mangled);
1484
1485 *out = NULL;
1486
1487 if (demangled != mangled && demangled != NULL && demangled[0] != '<')
1488 {
1489 /* Set the gsymbol language to Ada, but still return 0.
1490 Two reasons for that:
1491
1492 1. For Ada, we prefer computing the symbol's decoded name
1493 on the fly rather than pre-compute it, in order to save
1494 memory (Ada projects are typically very large).
1495
1496 2. There are some areas in the definition of the GNAT
1497 encoding where, with a bit of bad luck, we might be able
1498 to decode a non-Ada symbol, generating an incorrect
1499 demangled name (Eg: names ending with "TB" for instance
1500 are identified as task bodies and so stripped from
1501 the decoded name returned).
1502
1503 Returning 1, here, but not setting *DEMANGLED, helps us get a
1504 little bit of the best of both worlds. Because we're last,
1505 we should not affect any of the other languages that were
1506 able to demangle the symbol before us; we get to correctly
1507 tag Ada symbols as such; and even if we incorrectly tagged a
1508 non-Ada symbol, which should be rare, any routing through the
1509 Ada language should be transparent (Ada tries to behave much
1510 like C/C++ with non-Ada symbols). */
1511 return 1;
1512 }
1513
1514 return 0;
1515 }
1516
1517 \f
1518
1519 /* Arrays */
1520
1521 /* Assuming that INDEX_DESC_TYPE is an ___XA structure, a structure
1522 generated by the GNAT compiler to describe the index type used
1523 for each dimension of an array, check whether it follows the latest
1524 known encoding. If not, fix it up to conform to the latest encoding.
1525 Otherwise, do nothing. This function also does nothing if
1526 INDEX_DESC_TYPE is NULL.
1527
1528 The GNAT encoding used to describle the array index type evolved a bit.
1529 Initially, the information would be provided through the name of each
1530 field of the structure type only, while the type of these fields was
1531 described as unspecified and irrelevant. The debugger was then expected
1532 to perform a global type lookup using the name of that field in order
1533 to get access to the full index type description. Because these global
1534 lookups can be very expensive, the encoding was later enhanced to make
1535 the global lookup unnecessary by defining the field type as being
1536 the full index type description.
1537
1538 The purpose of this routine is to allow us to support older versions
1539 of the compiler by detecting the use of the older encoding, and by
1540 fixing up the INDEX_DESC_TYPE to follow the new one (at this point,
1541 we essentially replace each field's meaningless type by the associated
1542 index subtype). */
1543
1544 void
1545 ada_fixup_array_indexes_type (struct type *index_desc_type)
1546 {
1547 int i;
1548
1549 if (index_desc_type == NULL)
1550 return;
1551 gdb_assert (TYPE_NFIELDS (index_desc_type) > 0);
1552
1553 /* Check if INDEX_DESC_TYPE follows the older encoding (it is sufficient
1554 to check one field only, no need to check them all). If not, return
1555 now.
1556
1557 If our INDEX_DESC_TYPE was generated using the older encoding,
1558 the field type should be a meaningless integer type whose name
1559 is not equal to the field name. */
1560 if (TYPE_NAME (TYPE_FIELD_TYPE (index_desc_type, 0)) != NULL
1561 && strcmp (TYPE_NAME (TYPE_FIELD_TYPE (index_desc_type, 0)),
1562 TYPE_FIELD_NAME (index_desc_type, 0)) == 0)
1563 return;
1564
1565 /* Fixup each field of INDEX_DESC_TYPE. */
1566 for (i = 0; i < TYPE_NFIELDS (index_desc_type); i++)
1567 {
1568 const char *name = TYPE_FIELD_NAME (index_desc_type, i);
1569 struct type *raw_type = ada_check_typedef (ada_find_any_type (name));
1570
1571 if (raw_type)
1572 TYPE_FIELD_TYPE (index_desc_type, i) = raw_type;
1573 }
1574 }
1575
1576 /* Names of MAX_ADA_DIMENS bounds in P_BOUNDS fields of array descriptors. */
1577
1578 static const char *bound_name[] = {
1579 "LB0", "UB0", "LB1", "UB1", "LB2", "UB2", "LB3", "UB3",
1580 "LB4", "UB4", "LB5", "UB5", "LB6", "UB6", "LB7", "UB7"
1581 };
1582
1583 /* Maximum number of array dimensions we are prepared to handle. */
1584
1585 #define MAX_ADA_DIMENS (sizeof(bound_name) / (2*sizeof(char *)))
1586
1587
1588 /* The desc_* routines return primitive portions of array descriptors
1589 (fat pointers). */
1590
1591 /* The descriptor or array type, if any, indicated by TYPE; removes
1592 level of indirection, if needed. */
1593
1594 static struct type *
1595 desc_base_type (struct type *type)
1596 {
1597 if (type == NULL)
1598 return NULL;
1599 type = ada_check_typedef (type);
1600 if (TYPE_CODE (type) == TYPE_CODE_TYPEDEF)
1601 type = ada_typedef_target_type (type);
1602
1603 if (type != NULL
1604 && (TYPE_CODE (type) == TYPE_CODE_PTR
1605 || TYPE_CODE (type) == TYPE_CODE_REF))
1606 return ada_check_typedef (TYPE_TARGET_TYPE (type));
1607 else
1608 return type;
1609 }
1610
1611 /* True iff TYPE indicates a "thin" array pointer type. */
1612
1613 static int
1614 is_thin_pntr (struct type *type)
1615 {
1616 return
1617 is_suffix (ada_type_name (desc_base_type (type)), "___XUT")
1618 || is_suffix (ada_type_name (desc_base_type (type)), "___XUT___XVE");
1619 }
1620
1621 /* The descriptor type for thin pointer type TYPE. */
1622
1623 static struct type *
1624 thin_descriptor_type (struct type *type)
1625 {
1626 struct type *base_type = desc_base_type (type);
1627
1628 if (base_type == NULL)
1629 return NULL;
1630 if (is_suffix (ada_type_name (base_type), "___XVE"))
1631 return base_type;
1632 else
1633 {
1634 struct type *alt_type = ada_find_parallel_type (base_type, "___XVE");
1635
1636 if (alt_type == NULL)
1637 return base_type;
1638 else
1639 return alt_type;
1640 }
1641 }
1642
1643 /* A pointer to the array data for thin-pointer value VAL. */
1644
1645 static struct value *
1646 thin_data_pntr (struct value *val)
1647 {
1648 struct type *type = ada_check_typedef (value_type (val));
1649 struct type *data_type = desc_data_target_type (thin_descriptor_type (type));
1650
1651 data_type = lookup_pointer_type (data_type);
1652
1653 if (TYPE_CODE (type) == TYPE_CODE_PTR)
1654 return value_cast (data_type, value_copy (val));
1655 else
1656 return value_from_longest (data_type, value_address (val));
1657 }
1658
1659 /* True iff TYPE indicates a "thick" array pointer type. */
1660
1661 static int
1662 is_thick_pntr (struct type *type)
1663 {
1664 type = desc_base_type (type);
1665 return (type != NULL && TYPE_CODE (type) == TYPE_CODE_STRUCT
1666 && lookup_struct_elt_type (type, "P_BOUNDS", 1) != NULL);
1667 }
1668
1669 /* If TYPE is the type of an array descriptor (fat or thin pointer) or a
1670 pointer to one, the type of its bounds data; otherwise, NULL. */
1671
1672 static struct type *
1673 desc_bounds_type (struct type *type)
1674 {
1675 struct type *r;
1676
1677 type = desc_base_type (type);
1678
1679 if (type == NULL)
1680 return NULL;
1681 else if (is_thin_pntr (type))
1682 {
1683 type = thin_descriptor_type (type);
1684 if (type == NULL)
1685 return NULL;
1686 r = lookup_struct_elt_type (type, "BOUNDS", 1);
1687 if (r != NULL)
1688 return ada_check_typedef (r);
1689 }
1690 else if (TYPE_CODE (type) == TYPE_CODE_STRUCT)
1691 {
1692 r = lookup_struct_elt_type (type, "P_BOUNDS", 1);
1693 if (r != NULL)
1694 return ada_check_typedef (TYPE_TARGET_TYPE (ada_check_typedef (r)));
1695 }
1696 return NULL;
1697 }
1698
1699 /* If ARR is an array descriptor (fat or thin pointer), or pointer to
1700 one, a pointer to its bounds data. Otherwise NULL. */
1701
1702 static struct value *
1703 desc_bounds (struct value *arr)
1704 {
1705 struct type *type = ada_check_typedef (value_type (arr));
1706
1707 if (is_thin_pntr (type))
1708 {
1709 struct type *bounds_type =
1710 desc_bounds_type (thin_descriptor_type (type));
1711 LONGEST addr;
1712
1713 if (bounds_type == NULL)
1714 error (_("Bad GNAT array descriptor"));
1715
1716 /* NOTE: The following calculation is not really kosher, but
1717 since desc_type is an XVE-encoded type (and shouldn't be),
1718 the correct calculation is a real pain. FIXME (and fix GCC). */
1719 if (TYPE_CODE (type) == TYPE_CODE_PTR)
1720 addr = value_as_long (arr);
1721 else
1722 addr = value_address (arr);
1723
1724 return
1725 value_from_longest (lookup_pointer_type (bounds_type),
1726 addr - TYPE_LENGTH (bounds_type));
1727 }
1728
1729 else if (is_thick_pntr (type))
1730 {
1731 struct value *p_bounds = value_struct_elt (&arr, NULL, "P_BOUNDS", NULL,
1732 _("Bad GNAT array descriptor"));
1733 struct type *p_bounds_type = value_type (p_bounds);
1734
1735 if (p_bounds_type
1736 && TYPE_CODE (p_bounds_type) == TYPE_CODE_PTR)
1737 {
1738 struct type *target_type = TYPE_TARGET_TYPE (p_bounds_type);
1739
1740 if (TYPE_STUB (target_type))
1741 p_bounds = value_cast (lookup_pointer_type
1742 (ada_check_typedef (target_type)),
1743 p_bounds);
1744 }
1745 else
1746 error (_("Bad GNAT array descriptor"));
1747
1748 return p_bounds;
1749 }
1750 else
1751 return NULL;
1752 }
1753
1754 /* If TYPE is the type of an array-descriptor (fat pointer), the bit
1755 position of the field containing the address of the bounds data. */
1756
1757 static int
1758 fat_pntr_bounds_bitpos (struct type *type)
1759 {
1760 return TYPE_FIELD_BITPOS (desc_base_type (type), 1);
1761 }
1762
1763 /* If TYPE is the type of an array-descriptor (fat pointer), the bit
1764 size of the field containing the address of the bounds data. */
1765
1766 static int
1767 fat_pntr_bounds_bitsize (struct type *type)
1768 {
1769 type = desc_base_type (type);
1770
1771 if (TYPE_FIELD_BITSIZE (type, 1) > 0)
1772 return TYPE_FIELD_BITSIZE (type, 1);
1773 else
1774 return 8 * TYPE_LENGTH (ada_check_typedef (TYPE_FIELD_TYPE (type, 1)));
1775 }
1776
1777 /* If TYPE is the type of an array descriptor (fat or thin pointer) or a
1778 pointer to one, the type of its array data (a array-with-no-bounds type);
1779 otherwise, NULL. Use ada_type_of_array to get an array type with bounds
1780 data. */
1781
1782 static struct type *
1783 desc_data_target_type (struct type *type)
1784 {
1785 type = desc_base_type (type);
1786
1787 /* NOTE: The following is bogus; see comment in desc_bounds. */
1788 if (is_thin_pntr (type))
1789 return desc_base_type (TYPE_FIELD_TYPE (thin_descriptor_type (type), 1));
1790 else if (is_thick_pntr (type))
1791 {
1792 struct type *data_type = lookup_struct_elt_type (type, "P_ARRAY", 1);
1793
1794 if (data_type
1795 && TYPE_CODE (ada_check_typedef (data_type)) == TYPE_CODE_PTR)
1796 return ada_check_typedef (TYPE_TARGET_TYPE (data_type));
1797 }
1798
1799 return NULL;
1800 }
1801
1802 /* If ARR is an array descriptor (fat or thin pointer), a pointer to
1803 its array data. */
1804
1805 static struct value *
1806 desc_data (struct value *arr)
1807 {
1808 struct type *type = value_type (arr);
1809
1810 if (is_thin_pntr (type))
1811 return thin_data_pntr (arr);
1812 else if (is_thick_pntr (type))
1813 return value_struct_elt (&arr, NULL, "P_ARRAY", NULL,
1814 _("Bad GNAT array descriptor"));
1815 else
1816 return NULL;
1817 }
1818
1819
1820 /* If TYPE is the type of an array-descriptor (fat pointer), the bit
1821 position of the field containing the address of the data. */
1822
1823 static int
1824 fat_pntr_data_bitpos (struct type *type)
1825 {
1826 return TYPE_FIELD_BITPOS (desc_base_type (type), 0);
1827 }
1828
1829 /* If TYPE is the type of an array-descriptor (fat pointer), the bit
1830 size of the field containing the address of the data. */
1831
1832 static int
1833 fat_pntr_data_bitsize (struct type *type)
1834 {
1835 type = desc_base_type (type);
1836
1837 if (TYPE_FIELD_BITSIZE (type, 0) > 0)
1838 return TYPE_FIELD_BITSIZE (type, 0);
1839 else
1840 return TARGET_CHAR_BIT * TYPE_LENGTH (TYPE_FIELD_TYPE (type, 0));
1841 }
1842
1843 /* If BOUNDS is an array-bounds structure (or pointer to one), return
1844 the Ith lower bound stored in it, if WHICH is 0, and the Ith upper
1845 bound, if WHICH is 1. The first bound is I=1. */
1846
1847 static struct value *
1848 desc_one_bound (struct value *bounds, int i, int which)
1849 {
1850 return value_struct_elt (&bounds, NULL, bound_name[2 * i + which - 2], NULL,
1851 _("Bad GNAT array descriptor bounds"));
1852 }
1853
1854 /* If BOUNDS is an array-bounds structure type, return the bit position
1855 of the Ith lower bound stored in it, if WHICH is 0, and the Ith upper
1856 bound, if WHICH is 1. The first bound is I=1. */
1857
1858 static int
1859 desc_bound_bitpos (struct type *type, int i, int which)
1860 {
1861 return TYPE_FIELD_BITPOS (desc_base_type (type), 2 * i + which - 2);
1862 }
1863
1864 /* If BOUNDS is an array-bounds structure type, return the bit field size
1865 of the Ith lower bound stored in it, if WHICH is 0, and the Ith upper
1866 bound, if WHICH is 1. The first bound is I=1. */
1867
1868 static int
1869 desc_bound_bitsize (struct type *type, int i, int which)
1870 {
1871 type = desc_base_type (type);
1872
1873 if (TYPE_FIELD_BITSIZE (type, 2 * i + which - 2) > 0)
1874 return TYPE_FIELD_BITSIZE (type, 2 * i + which - 2);
1875 else
1876 return 8 * TYPE_LENGTH (TYPE_FIELD_TYPE (type, 2 * i + which - 2));
1877 }
1878
1879 /* If TYPE is the type of an array-bounds structure, the type of its
1880 Ith bound (numbering from 1). Otherwise, NULL. */
1881
1882 static struct type *
1883 desc_index_type (struct type *type, int i)
1884 {
1885 type = desc_base_type (type);
1886
1887 if (TYPE_CODE (type) == TYPE_CODE_STRUCT)
1888 return lookup_struct_elt_type (type, bound_name[2 * i - 2], 1);
1889 else
1890 return NULL;
1891 }
1892
1893 /* The number of index positions in the array-bounds type TYPE.
1894 Return 0 if TYPE is NULL. */
1895
1896 static int
1897 desc_arity (struct type *type)
1898 {
1899 type = desc_base_type (type);
1900
1901 if (type != NULL)
1902 return TYPE_NFIELDS (type) / 2;
1903 return 0;
1904 }
1905
1906 /* Non-zero iff TYPE is a simple array type (not a pointer to one) or
1907 an array descriptor type (representing an unconstrained array
1908 type). */
1909
1910 static int
1911 ada_is_direct_array_type (struct type *type)
1912 {
1913 if (type == NULL)
1914 return 0;
1915 type = ada_check_typedef (type);
1916 return (TYPE_CODE (type) == TYPE_CODE_ARRAY
1917 || ada_is_array_descriptor_type (type));
1918 }
1919
1920 /* Non-zero iff TYPE represents any kind of array in Ada, or a pointer
1921 * to one. */
1922
1923 static int
1924 ada_is_array_type (struct type *type)
1925 {
1926 while (type != NULL
1927 && (TYPE_CODE (type) == TYPE_CODE_PTR
1928 || TYPE_CODE (type) == TYPE_CODE_REF))
1929 type = TYPE_TARGET_TYPE (type);
1930 return ada_is_direct_array_type (type);
1931 }
1932
1933 /* Non-zero iff TYPE is a simple array type or pointer to one. */
1934
1935 int
1936 ada_is_simple_array_type (struct type *type)
1937 {
1938 if (type == NULL)
1939 return 0;
1940 type = ada_check_typedef (type);
1941 return (TYPE_CODE (type) == TYPE_CODE_ARRAY
1942 || (TYPE_CODE (type) == TYPE_CODE_PTR
1943 && TYPE_CODE (ada_check_typedef (TYPE_TARGET_TYPE (type)))
1944 == TYPE_CODE_ARRAY));
1945 }
1946
1947 /* Non-zero iff TYPE belongs to a GNAT array descriptor. */
1948
1949 int
1950 ada_is_array_descriptor_type (struct type *type)
1951 {
1952 struct type *data_type = desc_data_target_type (type);
1953
1954 if (type == NULL)
1955 return 0;
1956 type = ada_check_typedef (type);
1957 return (data_type != NULL
1958 && TYPE_CODE (data_type) == TYPE_CODE_ARRAY
1959 && desc_arity (desc_bounds_type (type)) > 0);
1960 }
1961
1962 /* Non-zero iff type is a partially mal-formed GNAT array
1963 descriptor. FIXME: This is to compensate for some problems with
1964 debugging output from GNAT. Re-examine periodically to see if it
1965 is still needed. */
1966
1967 int
1968 ada_is_bogus_array_descriptor (struct type *type)
1969 {
1970 return
1971 type != NULL
1972 && TYPE_CODE (type) == TYPE_CODE_STRUCT
1973 && (lookup_struct_elt_type (type, "P_BOUNDS", 1) != NULL
1974 || lookup_struct_elt_type (type, "P_ARRAY", 1) != NULL)
1975 && !ada_is_array_descriptor_type (type);
1976 }
1977
1978
1979 /* If ARR has a record type in the form of a standard GNAT array descriptor,
1980 (fat pointer) returns the type of the array data described---specifically,
1981 a pointer-to-array type. If BOUNDS is non-zero, the bounds data are filled
1982 in from the descriptor; otherwise, they are left unspecified. If
1983 the ARR denotes a null array descriptor and BOUNDS is non-zero,
1984 returns NULL. The result is simply the type of ARR if ARR is not
1985 a descriptor. */
1986 struct type *
1987 ada_type_of_array (struct value *arr, int bounds)
1988 {
1989 if (ada_is_constrained_packed_array_type (value_type (arr)))
1990 return decode_constrained_packed_array_type (value_type (arr));
1991
1992 if (!ada_is_array_descriptor_type (value_type (arr)))
1993 return value_type (arr);
1994
1995 if (!bounds)
1996 {
1997 struct type *array_type =
1998 ada_check_typedef (desc_data_target_type (value_type (arr)));
1999
2000 if (ada_is_unconstrained_packed_array_type (value_type (arr)))
2001 TYPE_FIELD_BITSIZE (array_type, 0) =
2002 decode_packed_array_bitsize (value_type (arr));
2003
2004 return array_type;
2005 }
2006 else
2007 {
2008 struct type *elt_type;
2009 int arity;
2010 struct value *descriptor;
2011
2012 elt_type = ada_array_element_type (value_type (arr), -1);
2013 arity = ada_array_arity (value_type (arr));
2014
2015 if (elt_type == NULL || arity == 0)
2016 return ada_check_typedef (value_type (arr));
2017
2018 descriptor = desc_bounds (arr);
2019 if (value_as_long (descriptor) == 0)
2020 return NULL;
2021 while (arity > 0)
2022 {
2023 struct type *range_type = alloc_type_copy (value_type (arr));
2024 struct type *array_type = alloc_type_copy (value_type (arr));
2025 struct value *low = desc_one_bound (descriptor, arity, 0);
2026 struct value *high = desc_one_bound (descriptor, arity, 1);
2027
2028 arity -= 1;
2029 create_static_range_type (range_type, value_type (low),
2030 longest_to_int (value_as_long (low)),
2031 longest_to_int (value_as_long (high)));
2032 elt_type = create_array_type (array_type, elt_type, range_type);
2033
2034 if (ada_is_unconstrained_packed_array_type (value_type (arr)))
2035 {
2036 /* We need to store the element packed bitsize, as well as
2037 recompute the array size, because it was previously
2038 computed based on the unpacked element size. */
2039 LONGEST lo = value_as_long (low);
2040 LONGEST hi = value_as_long (high);
2041
2042 TYPE_FIELD_BITSIZE (elt_type, 0) =
2043 decode_packed_array_bitsize (value_type (arr));
2044 /* If the array has no element, then the size is already
2045 zero, and does not need to be recomputed. */
2046 if (lo < hi)
2047 {
2048 int array_bitsize =
2049 (hi - lo + 1) * TYPE_FIELD_BITSIZE (elt_type, 0);
2050
2051 TYPE_LENGTH (array_type) = (array_bitsize + 7) / 8;
2052 }
2053 }
2054 }
2055
2056 return lookup_pointer_type (elt_type);
2057 }
2058 }
2059
2060 /* If ARR does not represent an array, returns ARR unchanged.
2061 Otherwise, returns either a standard GDB array with bounds set
2062 appropriately or, if ARR is a non-null fat pointer, a pointer to a standard
2063 GDB array. Returns NULL if ARR is a null fat pointer. */
2064
2065 struct value *
2066 ada_coerce_to_simple_array_ptr (struct value *arr)
2067 {
2068 if (ada_is_array_descriptor_type (value_type (arr)))
2069 {
2070 struct type *arrType = ada_type_of_array (arr, 1);
2071
2072 if (arrType == NULL)
2073 return NULL;
2074 return value_cast (arrType, value_copy (desc_data (arr)));
2075 }
2076 else if (ada_is_constrained_packed_array_type (value_type (arr)))
2077 return decode_constrained_packed_array (arr);
2078 else
2079 return arr;
2080 }
2081
2082 /* If ARR does not represent an array, returns ARR unchanged.
2083 Otherwise, returns a standard GDB array describing ARR (which may
2084 be ARR itself if it already is in the proper form). */
2085
2086 struct value *
2087 ada_coerce_to_simple_array (struct value *arr)
2088 {
2089 if (ada_is_array_descriptor_type (value_type (arr)))
2090 {
2091 struct value *arrVal = ada_coerce_to_simple_array_ptr (arr);
2092
2093 if (arrVal == NULL)
2094 error (_("Bounds unavailable for null array pointer."));
2095 ada_ensure_varsize_limit (TYPE_TARGET_TYPE (value_type (arrVal)));
2096 return value_ind (arrVal);
2097 }
2098 else if (ada_is_constrained_packed_array_type (value_type (arr)))
2099 return decode_constrained_packed_array (arr);
2100 else
2101 return arr;
2102 }
2103
2104 /* If TYPE represents a GNAT array type, return it translated to an
2105 ordinary GDB array type (possibly with BITSIZE fields indicating
2106 packing). For other types, is the identity. */
2107
2108 struct type *
2109 ada_coerce_to_simple_array_type (struct type *type)
2110 {
2111 if (ada_is_constrained_packed_array_type (type))
2112 return decode_constrained_packed_array_type (type);
2113
2114 if (ada_is_array_descriptor_type (type))
2115 return ada_check_typedef (desc_data_target_type (type));
2116
2117 return type;
2118 }
2119
2120 /* Non-zero iff TYPE represents a standard GNAT packed-array type. */
2121
2122 static int
2123 ada_is_packed_array_type (struct type *type)
2124 {
2125 if (type == NULL)
2126 return 0;
2127 type = desc_base_type (type);
2128 type = ada_check_typedef (type);
2129 return
2130 ada_type_name (type) != NULL
2131 && strstr (ada_type_name (type), "___XP") != NULL;
2132 }
2133
2134 /* Non-zero iff TYPE represents a standard GNAT constrained
2135 packed-array type. */
2136
2137 int
2138 ada_is_constrained_packed_array_type (struct type *type)
2139 {
2140 return ada_is_packed_array_type (type)
2141 && !ada_is_array_descriptor_type (type);
2142 }
2143
2144 /* Non-zero iff TYPE represents an array descriptor for a
2145 unconstrained packed-array type. */
2146
2147 static int
2148 ada_is_unconstrained_packed_array_type (struct type *type)
2149 {
2150 return ada_is_packed_array_type (type)
2151 && ada_is_array_descriptor_type (type);
2152 }
2153
2154 /* Given that TYPE encodes a packed array type (constrained or unconstrained),
2155 return the size of its elements in bits. */
2156
2157 static long
2158 decode_packed_array_bitsize (struct type *type)
2159 {
2160 const char *raw_name;
2161 const char *tail;
2162 long bits;
2163
2164 /* Access to arrays implemented as fat pointers are encoded as a typedef
2165 of the fat pointer type. We need the name of the fat pointer type
2166 to do the decoding, so strip the typedef layer. */
2167 if (TYPE_CODE (type) == TYPE_CODE_TYPEDEF)
2168 type = ada_typedef_target_type (type);
2169
2170 raw_name = ada_type_name (ada_check_typedef (type));
2171 if (!raw_name)
2172 raw_name = ada_type_name (desc_base_type (type));
2173
2174 if (!raw_name)
2175 return 0;
2176
2177 tail = strstr (raw_name, "___XP");
2178 gdb_assert (tail != NULL);
2179
2180 if (sscanf (tail + sizeof ("___XP") - 1, "%ld", &bits) != 1)
2181 {
2182 lim_warning
2183 (_("could not understand bit size information on packed array"));
2184 return 0;
2185 }
2186
2187 return bits;
2188 }
2189
2190 /* Given that TYPE is a standard GDB array type with all bounds filled
2191 in, and that the element size of its ultimate scalar constituents
2192 (that is, either its elements, or, if it is an array of arrays, its
2193 elements' elements, etc.) is *ELT_BITS, return an identical type,
2194 but with the bit sizes of its elements (and those of any
2195 constituent arrays) recorded in the BITSIZE components of its
2196 TYPE_FIELD_BITSIZE values, and with *ELT_BITS set to its total size
2197 in bits.
2198
2199 Note that, for arrays whose index type has an XA encoding where
2200 a bound references a record discriminant, getting that discriminant,
2201 and therefore the actual value of that bound, is not possible
2202 because none of the given parameters gives us access to the record.
2203 This function assumes that it is OK in the context where it is being
2204 used to return an array whose bounds are still dynamic and where
2205 the length is arbitrary. */
2206
2207 static struct type *
2208 constrained_packed_array_type (struct type *type, long *elt_bits)
2209 {
2210 struct type *new_elt_type;
2211 struct type *new_type;
2212 struct type *index_type_desc;
2213 struct type *index_type;
2214 LONGEST low_bound, high_bound;
2215
2216 type = ada_check_typedef (type);
2217 if (TYPE_CODE (type) != TYPE_CODE_ARRAY)
2218 return type;
2219
2220 index_type_desc = ada_find_parallel_type (type, "___XA");
2221 if (index_type_desc)
2222 index_type = to_fixed_range_type (TYPE_FIELD_TYPE (index_type_desc, 0),
2223 NULL);
2224 else
2225 index_type = TYPE_INDEX_TYPE (type);
2226
2227 new_type = alloc_type_copy (type);
2228 new_elt_type =
2229 constrained_packed_array_type (ada_check_typedef (TYPE_TARGET_TYPE (type)),
2230 elt_bits);
2231 create_array_type (new_type, new_elt_type, index_type);
2232 TYPE_FIELD_BITSIZE (new_type, 0) = *elt_bits;
2233 TYPE_NAME (new_type) = ada_type_name (type);
2234
2235 if ((TYPE_CODE (check_typedef (index_type)) == TYPE_CODE_RANGE
2236 && is_dynamic_type (check_typedef (index_type)))
2237 || get_discrete_bounds (index_type, &low_bound, &high_bound) < 0)
2238 low_bound = high_bound = 0;
2239 if (high_bound < low_bound)
2240 *elt_bits = TYPE_LENGTH (new_type) = 0;
2241 else
2242 {
2243 *elt_bits *= (high_bound - low_bound + 1);
2244 TYPE_LENGTH (new_type) =
2245 (*elt_bits + HOST_CHAR_BIT - 1) / HOST_CHAR_BIT;
2246 }
2247
2248 TYPE_FIXED_INSTANCE (new_type) = 1;
2249 return new_type;
2250 }
2251
2252 /* The array type encoded by TYPE, where
2253 ada_is_constrained_packed_array_type (TYPE). */
2254
2255 static struct type *
2256 decode_constrained_packed_array_type (struct type *type)
2257 {
2258 const char *raw_name = ada_type_name (ada_check_typedef (type));
2259 char *name;
2260 const char *tail;
2261 struct type *shadow_type;
2262 long bits;
2263
2264 if (!raw_name)
2265 raw_name = ada_type_name (desc_base_type (type));
2266
2267 if (!raw_name)
2268 return NULL;
2269
2270 name = (char *) alloca (strlen (raw_name) + 1);
2271 tail = strstr (raw_name, "___XP");
2272 type = desc_base_type (type);
2273
2274 memcpy (name, raw_name, tail - raw_name);
2275 name[tail - raw_name] = '\000';
2276
2277 shadow_type = ada_find_parallel_type_with_name (type, name);
2278
2279 if (shadow_type == NULL)
2280 {
2281 lim_warning (_("could not find bounds information on packed array"));
2282 return NULL;
2283 }
2284 shadow_type = check_typedef (shadow_type);
2285
2286 if (TYPE_CODE (shadow_type) != TYPE_CODE_ARRAY)
2287 {
2288 lim_warning (_("could not understand bounds "
2289 "information on packed array"));
2290 return NULL;
2291 }
2292
2293 bits = decode_packed_array_bitsize (type);
2294 return constrained_packed_array_type (shadow_type, &bits);
2295 }
2296
2297 /* Given that ARR is a struct value *indicating a GNAT constrained packed
2298 array, returns a simple array that denotes that array. Its type is a
2299 standard GDB array type except that the BITSIZEs of the array
2300 target types are set to the number of bits in each element, and the
2301 type length is set appropriately. */
2302
2303 static struct value *
2304 decode_constrained_packed_array (struct value *arr)
2305 {
2306 struct type *type;
2307
2308 /* If our value is a pointer, then dereference it. Likewise if
2309 the value is a reference. Make sure that this operation does not
2310 cause the target type to be fixed, as this would indirectly cause
2311 this array to be decoded. The rest of the routine assumes that
2312 the array hasn't been decoded yet, so we use the basic "coerce_ref"
2313 and "value_ind" routines to perform the dereferencing, as opposed
2314 to using "ada_coerce_ref" or "ada_value_ind". */
2315 arr = coerce_ref (arr);
2316 if (TYPE_CODE (ada_check_typedef (value_type (arr))) == TYPE_CODE_PTR)
2317 arr = value_ind (arr);
2318
2319 type = decode_constrained_packed_array_type (value_type (arr));
2320 if (type == NULL)
2321 {
2322 error (_("can't unpack array"));
2323 return NULL;
2324 }
2325
2326 if (gdbarch_bits_big_endian (get_type_arch (value_type (arr)))
2327 && ada_is_modular_type (value_type (arr)))
2328 {
2329 /* This is a (right-justified) modular type representing a packed
2330 array with no wrapper. In order to interpret the value through
2331 the (left-justified) packed array type we just built, we must
2332 first left-justify it. */
2333 int bit_size, bit_pos;
2334 ULONGEST mod;
2335
2336 mod = ada_modulus (value_type (arr)) - 1;
2337 bit_size = 0;
2338 while (mod > 0)
2339 {
2340 bit_size += 1;
2341 mod >>= 1;
2342 }
2343 bit_pos = HOST_CHAR_BIT * TYPE_LENGTH (value_type (arr)) - bit_size;
2344 arr = ada_value_primitive_packed_val (arr, NULL,
2345 bit_pos / HOST_CHAR_BIT,
2346 bit_pos % HOST_CHAR_BIT,
2347 bit_size,
2348 type);
2349 }
2350
2351 return coerce_unspec_val_to_type (arr, type);
2352 }
2353
2354
2355 /* The value of the element of packed array ARR at the ARITY indices
2356 given in IND. ARR must be a simple array. */
2357
2358 static struct value *
2359 value_subscript_packed (struct value *arr, int arity, struct value **ind)
2360 {
2361 int i;
2362 int bits, elt_off, bit_off;
2363 long elt_total_bit_offset;
2364 struct type *elt_type;
2365 struct value *v;
2366
2367 bits = 0;
2368 elt_total_bit_offset = 0;
2369 elt_type = ada_check_typedef (value_type (arr));
2370 for (i = 0; i < arity; i += 1)
2371 {
2372 if (TYPE_CODE (elt_type) != TYPE_CODE_ARRAY
2373 || TYPE_FIELD_BITSIZE (elt_type, 0) == 0)
2374 error
2375 (_("attempt to do packed indexing of "
2376 "something other than a packed array"));
2377 else
2378 {
2379 struct type *range_type = TYPE_INDEX_TYPE (elt_type);
2380 LONGEST lowerbound, upperbound;
2381 LONGEST idx;
2382
2383 if (get_discrete_bounds (range_type, &lowerbound, &upperbound) < 0)
2384 {
2385 lim_warning (_("don't know bounds of array"));
2386 lowerbound = upperbound = 0;
2387 }
2388
2389 idx = pos_atr (ind[i]);
2390 if (idx < lowerbound || idx > upperbound)
2391 lim_warning (_("packed array index %ld out of bounds"),
2392 (long) idx);
2393 bits = TYPE_FIELD_BITSIZE (elt_type, 0);
2394 elt_total_bit_offset += (idx - lowerbound) * bits;
2395 elt_type = ada_check_typedef (TYPE_TARGET_TYPE (elt_type));
2396 }
2397 }
2398 elt_off = elt_total_bit_offset / HOST_CHAR_BIT;
2399 bit_off = elt_total_bit_offset % HOST_CHAR_BIT;
2400
2401 v = ada_value_primitive_packed_val (arr, NULL, elt_off, bit_off,
2402 bits, elt_type);
2403 return v;
2404 }
2405
2406 /* Non-zero iff TYPE includes negative integer values. */
2407
2408 static int
2409 has_negatives (struct type *type)
2410 {
2411 switch (TYPE_CODE (type))
2412 {
2413 default:
2414 return 0;
2415 case TYPE_CODE_INT:
2416 return !TYPE_UNSIGNED (type);
2417 case TYPE_CODE_RANGE:
2418 return TYPE_LOW_BOUND (type) < 0;
2419 }
2420 }
2421
2422 /* With SRC being a buffer containing BIT_SIZE bits of data at BIT_OFFSET,
2423 unpack that data into UNPACKED. UNPACKED_LEN is the size in bytes of
2424 the unpacked buffer.
2425
2426 The size of the unpacked buffer (UNPACKED_LEN) is expected to be large
2427 enough to contain at least BIT_OFFSET bits. If not, an error is raised.
2428
2429 IS_BIG_ENDIAN is nonzero if the data is stored in big endian mode,
2430 zero otherwise.
2431
2432 IS_SIGNED_TYPE is nonzero if the data corresponds to a signed type.
2433
2434 IS_SCALAR is nonzero if the data corresponds to a signed type. */
2435
2436 static void
2437 ada_unpack_from_contents (const gdb_byte *src, int bit_offset, int bit_size,
2438 gdb_byte *unpacked, int unpacked_len,
2439 int is_big_endian, int is_signed_type,
2440 int is_scalar)
2441 {
2442 int src_len = (bit_size + bit_offset + HOST_CHAR_BIT - 1) / 8;
2443 int src_idx; /* Index into the source area */
2444 int src_bytes_left; /* Number of source bytes left to process. */
2445 int srcBitsLeft; /* Number of source bits left to move */
2446 int unusedLS; /* Number of bits in next significant
2447 byte of source that are unused */
2448
2449 int unpacked_idx; /* Index into the unpacked buffer */
2450 int unpacked_bytes_left; /* Number of bytes left to set in unpacked. */
2451
2452 unsigned long accum; /* Staging area for bits being transferred */
2453 int accumSize; /* Number of meaningful bits in accum */
2454 unsigned char sign;
2455
2456 /* Transmit bytes from least to most significant; delta is the direction
2457 the indices move. */
2458 int delta = is_big_endian ? -1 : 1;
2459
2460 /* Make sure that unpacked is large enough to receive the BIT_SIZE
2461 bits from SRC. .*/
2462 if ((bit_size + HOST_CHAR_BIT - 1) / HOST_CHAR_BIT > unpacked_len)
2463 error (_("Cannot unpack %d bits into buffer of %d bytes"),
2464 bit_size, unpacked_len);
2465
2466 srcBitsLeft = bit_size;
2467 src_bytes_left = src_len;
2468 unpacked_bytes_left = unpacked_len;
2469 sign = 0;
2470
2471 if (is_big_endian)
2472 {
2473 src_idx = src_len - 1;
2474 if (is_signed_type
2475 && ((src[0] << bit_offset) & (1 << (HOST_CHAR_BIT - 1))))
2476 sign = ~0;
2477
2478 unusedLS =
2479 (HOST_CHAR_BIT - (bit_size + bit_offset) % HOST_CHAR_BIT)
2480 % HOST_CHAR_BIT;
2481
2482 if (is_scalar)
2483 {
2484 accumSize = 0;
2485 unpacked_idx = unpacked_len - 1;
2486 }
2487 else
2488 {
2489 /* Non-scalar values must be aligned at a byte boundary... */
2490 accumSize =
2491 (HOST_CHAR_BIT - bit_size % HOST_CHAR_BIT) % HOST_CHAR_BIT;
2492 /* ... And are placed at the beginning (most-significant) bytes
2493 of the target. */
2494 unpacked_idx = (bit_size + HOST_CHAR_BIT - 1) / HOST_CHAR_BIT - 1;
2495 unpacked_bytes_left = unpacked_idx + 1;
2496 }
2497 }
2498 else
2499 {
2500 int sign_bit_offset = (bit_size + bit_offset - 1) % 8;
2501
2502 src_idx = unpacked_idx = 0;
2503 unusedLS = bit_offset;
2504 accumSize = 0;
2505
2506 if (is_signed_type && (src[src_len - 1] & (1 << sign_bit_offset)))
2507 sign = ~0;
2508 }
2509
2510 accum = 0;
2511 while (src_bytes_left > 0)
2512 {
2513 /* Mask for removing bits of the next source byte that are not
2514 part of the value. */
2515 unsigned int unusedMSMask =
2516 (1 << (srcBitsLeft >= HOST_CHAR_BIT ? HOST_CHAR_BIT : srcBitsLeft)) -
2517 1;
2518 /* Sign-extend bits for this byte. */
2519 unsigned int signMask = sign & ~unusedMSMask;
2520
2521 accum |=
2522 (((src[src_idx] >> unusedLS) & unusedMSMask) | signMask) << accumSize;
2523 accumSize += HOST_CHAR_BIT - unusedLS;
2524 if (accumSize >= HOST_CHAR_BIT)
2525 {
2526 unpacked[unpacked_idx] = accum & ~(~0UL << HOST_CHAR_BIT);
2527 accumSize -= HOST_CHAR_BIT;
2528 accum >>= HOST_CHAR_BIT;
2529 unpacked_bytes_left -= 1;
2530 unpacked_idx += delta;
2531 }
2532 srcBitsLeft -= HOST_CHAR_BIT - unusedLS;
2533 unusedLS = 0;
2534 src_bytes_left -= 1;
2535 src_idx += delta;
2536 }
2537 while (unpacked_bytes_left > 0)
2538 {
2539 accum |= sign << accumSize;
2540 unpacked[unpacked_idx] = accum & ~(~0UL << HOST_CHAR_BIT);
2541 accumSize -= HOST_CHAR_BIT;
2542 if (accumSize < 0)
2543 accumSize = 0;
2544 accum >>= HOST_CHAR_BIT;
2545 unpacked_bytes_left -= 1;
2546 unpacked_idx += delta;
2547 }
2548 }
2549
2550 /* Create a new value of type TYPE from the contents of OBJ starting
2551 at byte OFFSET, and bit offset BIT_OFFSET within that byte,
2552 proceeding for BIT_SIZE bits. If OBJ is an lval in memory, then
2553 assigning through the result will set the field fetched from.
2554 VALADDR is ignored unless OBJ is NULL, in which case,
2555 VALADDR+OFFSET must address the start of storage containing the
2556 packed value. The value returned in this case is never an lval.
2557 Assumes 0 <= BIT_OFFSET < HOST_CHAR_BIT. */
2558
2559 struct value *
2560 ada_value_primitive_packed_val (struct value *obj, const gdb_byte *valaddr,
2561 long offset, int bit_offset, int bit_size,
2562 struct type *type)
2563 {
2564 struct value *v;
2565 const gdb_byte *src; /* First byte containing data to unpack */
2566 gdb_byte *unpacked;
2567 const int is_scalar = is_scalar_type (type);
2568 const int is_big_endian = gdbarch_bits_big_endian (get_type_arch (type));
2569 gdb::byte_vector staging;
2570
2571 type = ada_check_typedef (type);
2572
2573 if (obj == NULL)
2574 src = valaddr + offset;
2575 else
2576 src = value_contents (obj) + offset;
2577
2578 if (is_dynamic_type (type))
2579 {
2580 /* The length of TYPE might by dynamic, so we need to resolve
2581 TYPE in order to know its actual size, which we then use
2582 to create the contents buffer of the value we return.
2583 The difficulty is that the data containing our object is
2584 packed, and therefore maybe not at a byte boundary. So, what
2585 we do, is unpack the data into a byte-aligned buffer, and then
2586 use that buffer as our object's value for resolving the type. */
2587 int staging_len = (bit_size + HOST_CHAR_BIT - 1) / HOST_CHAR_BIT;
2588 staging.resize (staging_len);
2589
2590 ada_unpack_from_contents (src, bit_offset, bit_size,
2591 staging.data (), staging.size (),
2592 is_big_endian, has_negatives (type),
2593 is_scalar);
2594 type = resolve_dynamic_type (type, staging.data (), 0);
2595 if (TYPE_LENGTH (type) < (bit_size + HOST_CHAR_BIT - 1) / HOST_CHAR_BIT)
2596 {
2597 /* This happens when the length of the object is dynamic,
2598 and is actually smaller than the space reserved for it.
2599 For instance, in an array of variant records, the bit_size
2600 we're given is the array stride, which is constant and
2601 normally equal to the maximum size of its element.
2602 But, in reality, each element only actually spans a portion
2603 of that stride. */
2604 bit_size = TYPE_LENGTH (type) * HOST_CHAR_BIT;
2605 }
2606 }
2607
2608 if (obj == NULL)
2609 {
2610 v = allocate_value (type);
2611 src = valaddr + offset;
2612 }
2613 else if (VALUE_LVAL (obj) == lval_memory && value_lazy (obj))
2614 {
2615 int src_len = (bit_size + bit_offset + HOST_CHAR_BIT - 1) / 8;
2616 gdb_byte *buf;
2617
2618 v = value_at (type, value_address (obj) + offset);
2619 buf = (gdb_byte *) alloca (src_len);
2620 read_memory (value_address (v), buf, src_len);
2621 src = buf;
2622 }
2623 else
2624 {
2625 v = allocate_value (type);
2626 src = value_contents (obj) + offset;
2627 }
2628
2629 if (obj != NULL)
2630 {
2631 long new_offset = offset;
2632
2633 set_value_component_location (v, obj);
2634 set_value_bitpos (v, bit_offset + value_bitpos (obj));
2635 set_value_bitsize (v, bit_size);
2636 if (value_bitpos (v) >= HOST_CHAR_BIT)
2637 {
2638 ++new_offset;
2639 set_value_bitpos (v, value_bitpos (v) - HOST_CHAR_BIT);
2640 }
2641 set_value_offset (v, new_offset);
2642
2643 /* Also set the parent value. This is needed when trying to
2644 assign a new value (in inferior memory). */
2645 set_value_parent (v, obj);
2646 }
2647 else
2648 set_value_bitsize (v, bit_size);
2649 unpacked = value_contents_writeable (v);
2650
2651 if (bit_size == 0)
2652 {
2653 memset (unpacked, 0, TYPE_LENGTH (type));
2654 return v;
2655 }
2656
2657 if (staging.size () == TYPE_LENGTH (type))
2658 {
2659 /* Small short-cut: If we've unpacked the data into a buffer
2660 of the same size as TYPE's length, then we can reuse that,
2661 instead of doing the unpacking again. */
2662 memcpy (unpacked, staging.data (), staging.size ());
2663 }
2664 else
2665 ada_unpack_from_contents (src, bit_offset, bit_size,
2666 unpacked, TYPE_LENGTH (type),
2667 is_big_endian, has_negatives (type), is_scalar);
2668
2669 return v;
2670 }
2671
2672 /* Store the contents of FROMVAL into the location of TOVAL.
2673 Return a new value with the location of TOVAL and contents of
2674 FROMVAL. Handles assignment into packed fields that have
2675 floating-point or non-scalar types. */
2676
2677 static struct value *
2678 ada_value_assign (struct value *toval, struct value *fromval)
2679 {
2680 struct type *type = value_type (toval);
2681 int bits = value_bitsize (toval);
2682
2683 toval = ada_coerce_ref (toval);
2684 fromval = ada_coerce_ref (fromval);
2685
2686 if (ada_is_direct_array_type (value_type (toval)))
2687 toval = ada_coerce_to_simple_array (toval);
2688 if (ada_is_direct_array_type (value_type (fromval)))
2689 fromval = ada_coerce_to_simple_array (fromval);
2690
2691 if (!deprecated_value_modifiable (toval))
2692 error (_("Left operand of assignment is not a modifiable lvalue."));
2693
2694 if (VALUE_LVAL (toval) == lval_memory
2695 && bits > 0
2696 && (TYPE_CODE (type) == TYPE_CODE_FLT
2697 || TYPE_CODE (type) == TYPE_CODE_STRUCT))
2698 {
2699 int len = (value_bitpos (toval)
2700 + bits + HOST_CHAR_BIT - 1) / HOST_CHAR_BIT;
2701 int from_size;
2702 gdb_byte *buffer = (gdb_byte *) alloca (len);
2703 struct value *val;
2704 CORE_ADDR to_addr = value_address (toval);
2705
2706 if (TYPE_CODE (type) == TYPE_CODE_FLT)
2707 fromval = value_cast (type, fromval);
2708
2709 read_memory (to_addr, buffer, len);
2710 from_size = value_bitsize (fromval);
2711 if (from_size == 0)
2712 from_size = TYPE_LENGTH (value_type (fromval)) * TARGET_CHAR_BIT;
2713 if (gdbarch_bits_big_endian (get_type_arch (type)))
2714 copy_bitwise (buffer, value_bitpos (toval),
2715 value_contents (fromval), from_size - bits, bits, 1);
2716 else
2717 copy_bitwise (buffer, value_bitpos (toval),
2718 value_contents (fromval), 0, bits, 0);
2719 write_memory_with_notification (to_addr, buffer, len);
2720
2721 val = value_copy (toval);
2722 memcpy (value_contents_raw (val), value_contents (fromval),
2723 TYPE_LENGTH (type));
2724 deprecated_set_value_type (val, type);
2725
2726 return val;
2727 }
2728
2729 return value_assign (toval, fromval);
2730 }
2731
2732
2733 /* Given that COMPONENT is a memory lvalue that is part of the lvalue
2734 CONTAINER, assign the contents of VAL to COMPONENTS's place in
2735 CONTAINER. Modifies the VALUE_CONTENTS of CONTAINER only, not
2736 COMPONENT, and not the inferior's memory. The current contents
2737 of COMPONENT are ignored.
2738
2739 Although not part of the initial design, this function also works
2740 when CONTAINER and COMPONENT are not_lval's: it works as if CONTAINER
2741 had a null address, and COMPONENT had an address which is equal to
2742 its offset inside CONTAINER. */
2743
2744 static void
2745 value_assign_to_component (struct value *container, struct value *component,
2746 struct value *val)
2747 {
2748 LONGEST offset_in_container =
2749 (LONGEST) (value_address (component) - value_address (container));
2750 int bit_offset_in_container =
2751 value_bitpos (component) - value_bitpos (container);
2752 int bits;
2753
2754 val = value_cast (value_type (component), val);
2755
2756 if (value_bitsize (component) == 0)
2757 bits = TARGET_CHAR_BIT * TYPE_LENGTH (value_type (component));
2758 else
2759 bits = value_bitsize (component);
2760
2761 if (gdbarch_bits_big_endian (get_type_arch (value_type (container))))
2762 {
2763 int src_offset;
2764
2765 if (is_scalar_type (check_typedef (value_type (component))))
2766 src_offset
2767 = TYPE_LENGTH (value_type (component)) * TARGET_CHAR_BIT - bits;
2768 else
2769 src_offset = 0;
2770 copy_bitwise (value_contents_writeable (container) + offset_in_container,
2771 value_bitpos (container) + bit_offset_in_container,
2772 value_contents (val), src_offset, bits, 1);
2773 }
2774 else
2775 copy_bitwise (value_contents_writeable (container) + offset_in_container,
2776 value_bitpos (container) + bit_offset_in_container,
2777 value_contents (val), 0, bits, 0);
2778 }
2779
2780 /* Determine if TYPE is an access to an unconstrained array. */
2781
2782 bool
2783 ada_is_access_to_unconstrained_array (struct type *type)
2784 {
2785 return (TYPE_CODE (type) == TYPE_CODE_TYPEDEF
2786 && is_thick_pntr (ada_typedef_target_type (type)));
2787 }
2788
2789 /* The value of the element of array ARR at the ARITY indices given in IND.
2790 ARR may be either a simple array, GNAT array descriptor, or pointer
2791 thereto. */
2792
2793 struct value *
2794 ada_value_subscript (struct value *arr, int arity, struct value **ind)
2795 {
2796 int k;
2797 struct value *elt;
2798 struct type *elt_type;
2799
2800 elt = ada_coerce_to_simple_array (arr);
2801
2802 elt_type = ada_check_typedef (value_type (elt));
2803 if (TYPE_CODE (elt_type) == TYPE_CODE_ARRAY
2804 && TYPE_FIELD_BITSIZE (elt_type, 0) > 0)
2805 return value_subscript_packed (elt, arity, ind);
2806
2807 for (k = 0; k < arity; k += 1)
2808 {
2809 struct type *saved_elt_type = TYPE_TARGET_TYPE (elt_type);
2810
2811 if (TYPE_CODE (elt_type) != TYPE_CODE_ARRAY)
2812 error (_("too many subscripts (%d expected)"), k);
2813
2814 elt = value_subscript (elt, pos_atr (ind[k]));
2815
2816 if (ada_is_access_to_unconstrained_array (saved_elt_type)
2817 && TYPE_CODE (value_type (elt)) != TYPE_CODE_TYPEDEF)
2818 {
2819 /* The element is a typedef to an unconstrained array,
2820 except that the value_subscript call stripped the
2821 typedef layer. The typedef layer is GNAT's way to
2822 specify that the element is, at the source level, an
2823 access to the unconstrained array, rather than the
2824 unconstrained array. So, we need to restore that
2825 typedef layer, which we can do by forcing the element's
2826 type back to its original type. Otherwise, the returned
2827 value is going to be printed as the array, rather
2828 than as an access. Another symptom of the same issue
2829 would be that an expression trying to dereference the
2830 element would also be improperly rejected. */
2831 deprecated_set_value_type (elt, saved_elt_type);
2832 }
2833
2834 elt_type = ada_check_typedef (value_type (elt));
2835 }
2836
2837 return elt;
2838 }
2839
2840 /* Assuming ARR is a pointer to a GDB array, the value of the element
2841 of *ARR at the ARITY indices given in IND.
2842 Does not read the entire array into memory.
2843
2844 Note: Unlike what one would expect, this function is used instead of
2845 ada_value_subscript for basically all non-packed array types. The reason
2846 for this is that a side effect of doing our own pointer arithmetics instead
2847 of relying on value_subscript is that there is no implicit typedef peeling.
2848 This is important for arrays of array accesses, where it allows us to
2849 preserve the fact that the array's element is an array access, where the
2850 access part os encoded in a typedef layer. */
2851
2852 static struct value *
2853 ada_value_ptr_subscript (struct value *arr, int arity, struct value **ind)
2854 {
2855 int k;
2856 struct value *array_ind = ada_value_ind (arr);
2857 struct type *type
2858 = check_typedef (value_enclosing_type (array_ind));
2859
2860 if (TYPE_CODE (type) == TYPE_CODE_ARRAY
2861 && TYPE_FIELD_BITSIZE (type, 0) > 0)
2862 return value_subscript_packed (array_ind, arity, ind);
2863
2864 for (k = 0; k < arity; k += 1)
2865 {
2866 LONGEST lwb, upb;
2867 struct value *lwb_value;
2868
2869 if (TYPE_CODE (type) != TYPE_CODE_ARRAY)
2870 error (_("too many subscripts (%d expected)"), k);
2871 arr = value_cast (lookup_pointer_type (TYPE_TARGET_TYPE (type)),
2872 value_copy (arr));
2873 get_discrete_bounds (TYPE_INDEX_TYPE (type), &lwb, &upb);
2874 lwb_value = value_from_longest (value_type(ind[k]), lwb);
2875 arr = value_ptradd (arr, pos_atr (ind[k]) - pos_atr (lwb_value));
2876 type = TYPE_TARGET_TYPE (type);
2877 }
2878
2879 return value_ind (arr);
2880 }
2881
2882 /* Given that ARRAY_PTR is a pointer or reference to an array of type TYPE (the
2883 actual type of ARRAY_PTR is ignored), returns the Ada slice of
2884 HIGH'Pos-LOW'Pos+1 elements starting at index LOW. The lower bound of
2885 this array is LOW, as per Ada rules. */
2886 static struct value *
2887 ada_value_slice_from_ptr (struct value *array_ptr, struct type *type,
2888 int low, int high)
2889 {
2890 struct type *type0 = ada_check_typedef (type);
2891 struct type *base_index_type = TYPE_TARGET_TYPE (TYPE_INDEX_TYPE (type0));
2892 struct type *index_type
2893 = create_static_range_type (NULL, base_index_type, low, high);
2894 struct type *slice_type = create_array_type_with_stride
2895 (NULL, TYPE_TARGET_TYPE (type0), index_type,
2896 get_dyn_prop (DYN_PROP_BYTE_STRIDE, type0),
2897 TYPE_FIELD_BITSIZE (type0, 0));
2898 int base_low = ada_discrete_type_low_bound (TYPE_INDEX_TYPE (type0));
2899 LONGEST base_low_pos, low_pos;
2900 CORE_ADDR base;
2901
2902 if (!discrete_position (base_index_type, low, &low_pos)
2903 || !discrete_position (base_index_type, base_low, &base_low_pos))
2904 {
2905 warning (_("unable to get positions in slice, use bounds instead"));
2906 low_pos = low;
2907 base_low_pos = base_low;
2908 }
2909
2910 base = value_as_address (array_ptr)
2911 + ((low_pos - base_low_pos)
2912 * TYPE_LENGTH (TYPE_TARGET_TYPE (type0)));
2913 return value_at_lazy (slice_type, base);
2914 }
2915
2916
2917 static struct value *
2918 ada_value_slice (struct value *array, int low, int high)
2919 {
2920 struct type *type = ada_check_typedef (value_type (array));
2921 struct type *base_index_type = TYPE_TARGET_TYPE (TYPE_INDEX_TYPE (type));
2922 struct type *index_type
2923 = create_static_range_type (NULL, TYPE_INDEX_TYPE (type), low, high);
2924 struct type *slice_type = create_array_type_with_stride
2925 (NULL, TYPE_TARGET_TYPE (type), index_type,
2926 get_dyn_prop (DYN_PROP_BYTE_STRIDE, type),
2927 TYPE_FIELD_BITSIZE (type, 0));
2928 LONGEST low_pos, high_pos;
2929
2930 if (!discrete_position (base_index_type, low, &low_pos)
2931 || !discrete_position (base_index_type, high, &high_pos))
2932 {
2933 warning (_("unable to get positions in slice, use bounds instead"));
2934 low_pos = low;
2935 high_pos = high;
2936 }
2937
2938 return value_cast (slice_type,
2939 value_slice (array, low, high_pos - low_pos + 1));
2940 }
2941
2942 /* If type is a record type in the form of a standard GNAT array
2943 descriptor, returns the number of dimensions for type. If arr is a
2944 simple array, returns the number of "array of"s that prefix its
2945 type designation. Otherwise, returns 0. */
2946
2947 int
2948 ada_array_arity (struct type *type)
2949 {
2950 int arity;
2951
2952 if (type == NULL)
2953 return 0;
2954
2955 type = desc_base_type (type);
2956
2957 arity = 0;
2958 if (TYPE_CODE (type) == TYPE_CODE_STRUCT)
2959 return desc_arity (desc_bounds_type (type));
2960 else
2961 while (TYPE_CODE (type) == TYPE_CODE_ARRAY)
2962 {
2963 arity += 1;
2964 type = ada_check_typedef (TYPE_TARGET_TYPE (type));
2965 }
2966
2967 return arity;
2968 }
2969
2970 /* If TYPE is a record type in the form of a standard GNAT array
2971 descriptor or a simple array type, returns the element type for
2972 TYPE after indexing by NINDICES indices, or by all indices if
2973 NINDICES is -1. Otherwise, returns NULL. */
2974
2975 struct type *
2976 ada_array_element_type (struct type *type, int nindices)
2977 {
2978 type = desc_base_type (type);
2979
2980 if (TYPE_CODE (type) == TYPE_CODE_STRUCT)
2981 {
2982 int k;
2983 struct type *p_array_type;
2984
2985 p_array_type = desc_data_target_type (type);
2986
2987 k = ada_array_arity (type);
2988 if (k == 0)
2989 return NULL;
2990
2991 /* Initially p_array_type = elt_type(*)[]...(k times)...[]. */
2992 if (nindices >= 0 && k > nindices)
2993 k = nindices;
2994 while (k > 0 && p_array_type != NULL)
2995 {
2996 p_array_type = ada_check_typedef (TYPE_TARGET_TYPE (p_array_type));
2997 k -= 1;
2998 }
2999 return p_array_type;
3000 }
3001 else if (TYPE_CODE (type) == TYPE_CODE_ARRAY)
3002 {
3003 while (nindices != 0 && TYPE_CODE (type) == TYPE_CODE_ARRAY)
3004 {
3005 type = TYPE_TARGET_TYPE (type);
3006 nindices -= 1;
3007 }
3008 return type;
3009 }
3010
3011 return NULL;
3012 }
3013
3014 /* The type of nth index in arrays of given type (n numbering from 1).
3015 Does not examine memory. Throws an error if N is invalid or TYPE
3016 is not an array type. NAME is the name of the Ada attribute being
3017 evaluated ('range, 'first, 'last, or 'length); it is used in building
3018 the error message. */
3019
3020 static struct type *
3021 ada_index_type (struct type *type, int n, const char *name)
3022 {
3023 struct type *result_type;
3024
3025 type = desc_base_type (type);
3026
3027 if (n < 0 || n > ada_array_arity (type))
3028 error (_("invalid dimension number to '%s"), name);
3029
3030 if (ada_is_simple_array_type (type))
3031 {
3032 int i;
3033
3034 for (i = 1; i < n; i += 1)
3035 type = TYPE_TARGET_TYPE (type);
3036 result_type = TYPE_TARGET_TYPE (TYPE_INDEX_TYPE (type));
3037 /* FIXME: The stabs type r(0,0);bound;bound in an array type
3038 has a target type of TYPE_CODE_UNDEF. We compensate here, but
3039 perhaps stabsread.c would make more sense. */
3040 if (result_type && TYPE_CODE (result_type) == TYPE_CODE_UNDEF)
3041 result_type = NULL;
3042 }
3043 else
3044 {
3045 result_type = desc_index_type (desc_bounds_type (type), n);
3046 if (result_type == NULL)
3047 error (_("attempt to take bound of something that is not an array"));
3048 }
3049
3050 return result_type;
3051 }
3052
3053 /* Given that arr is an array type, returns the lower bound of the
3054 Nth index (numbering from 1) if WHICH is 0, and the upper bound if
3055 WHICH is 1. This returns bounds 0 .. -1 if ARR_TYPE is an
3056 array-descriptor type. It works for other arrays with bounds supplied
3057 by run-time quantities other than discriminants. */
3058
3059 static LONGEST
3060 ada_array_bound_from_type (struct type *arr_type, int n, int which)
3061 {
3062 struct type *type, *index_type_desc, *index_type;
3063 int i;
3064
3065 gdb_assert (which == 0 || which == 1);
3066
3067 if (ada_is_constrained_packed_array_type (arr_type))
3068 arr_type = decode_constrained_packed_array_type (arr_type);
3069
3070 if (arr_type == NULL || !ada_is_simple_array_type (arr_type))
3071 return (LONGEST) - which;
3072
3073 if (TYPE_CODE (arr_type) == TYPE_CODE_PTR)
3074 type = TYPE_TARGET_TYPE (arr_type);
3075 else
3076 type = arr_type;
3077
3078 if (TYPE_FIXED_INSTANCE (type))
3079 {
3080 /* The array has already been fixed, so we do not need to
3081 check the parallel ___XA type again. That encoding has
3082 already been applied, so ignore it now. */
3083 index_type_desc = NULL;
3084 }
3085 else
3086 {
3087 index_type_desc = ada_find_parallel_type (type, "___XA");
3088 ada_fixup_array_indexes_type (index_type_desc);
3089 }
3090
3091 if (index_type_desc != NULL)
3092 index_type = to_fixed_range_type (TYPE_FIELD_TYPE (index_type_desc, n - 1),
3093 NULL);
3094 else
3095 {
3096 struct type *elt_type = check_typedef (type);
3097
3098 for (i = 1; i < n; i++)
3099 elt_type = check_typedef (TYPE_TARGET_TYPE (elt_type));
3100
3101 index_type = TYPE_INDEX_TYPE (elt_type);
3102 }
3103
3104 return
3105 (LONGEST) (which == 0
3106 ? ada_discrete_type_low_bound (index_type)
3107 : ada_discrete_type_high_bound (index_type));
3108 }
3109
3110 /* Given that arr is an array value, returns the lower bound of the
3111 nth index (numbering from 1) if WHICH is 0, and the upper bound if
3112 WHICH is 1. This routine will also work for arrays with bounds
3113 supplied by run-time quantities other than discriminants. */
3114
3115 static LONGEST
3116 ada_array_bound (struct value *arr, int n, int which)
3117 {
3118 struct type *arr_type;
3119
3120 if (TYPE_CODE (check_typedef (value_type (arr))) == TYPE_CODE_PTR)
3121 arr = value_ind (arr);
3122 arr_type = value_enclosing_type (arr);
3123
3124 if (ada_is_constrained_packed_array_type (arr_type))
3125 return ada_array_bound (decode_constrained_packed_array (arr), n, which);
3126 else if (ada_is_simple_array_type (arr_type))
3127 return ada_array_bound_from_type (arr_type, n, which);
3128 else
3129 return value_as_long (desc_one_bound (desc_bounds (arr), n, which));
3130 }
3131
3132 /* Given that arr is an array value, returns the length of the
3133 nth index. This routine will also work for arrays with bounds
3134 supplied by run-time quantities other than discriminants.
3135 Does not work for arrays indexed by enumeration types with representation
3136 clauses at the moment. */
3137
3138 static LONGEST
3139 ada_array_length (struct value *arr, int n)
3140 {
3141 struct type *arr_type, *index_type;
3142 int low, high;
3143
3144 if (TYPE_CODE (check_typedef (value_type (arr))) == TYPE_CODE_PTR)
3145 arr = value_ind (arr);
3146 arr_type = value_enclosing_type (arr);
3147
3148 if (ada_is_constrained_packed_array_type (arr_type))
3149 return ada_array_length (decode_constrained_packed_array (arr), n);
3150
3151 if (ada_is_simple_array_type (arr_type))
3152 {
3153 low = ada_array_bound_from_type (arr_type, n, 0);
3154 high = ada_array_bound_from_type (arr_type, n, 1);
3155 }
3156 else
3157 {
3158 low = value_as_long (desc_one_bound (desc_bounds (arr), n, 0));
3159 high = value_as_long (desc_one_bound (desc_bounds (arr), n, 1));
3160 }
3161
3162 arr_type = check_typedef (arr_type);
3163 index_type = ada_index_type (arr_type, n, "length");
3164 if (index_type != NULL)
3165 {
3166 struct type *base_type;
3167 if (TYPE_CODE (index_type) == TYPE_CODE_RANGE)
3168 base_type = TYPE_TARGET_TYPE (index_type);
3169 else
3170 base_type = index_type;
3171
3172 low = pos_atr (value_from_longest (base_type, low));
3173 high = pos_atr (value_from_longest (base_type, high));
3174 }
3175 return high - low + 1;
3176 }
3177
3178 /* An array whose type is that of ARR_TYPE (an array type), with
3179 bounds LOW to HIGH, but whose contents are unimportant. If HIGH is
3180 less than LOW, then LOW-1 is used. */
3181
3182 static struct value *
3183 empty_array (struct type *arr_type, int low, int high)
3184 {
3185 struct type *arr_type0 = ada_check_typedef (arr_type);
3186 struct type *index_type
3187 = create_static_range_type
3188 (NULL, TYPE_TARGET_TYPE (TYPE_INDEX_TYPE (arr_type0)), low,
3189 high < low ? low - 1 : high);
3190 struct type *elt_type = ada_array_element_type (arr_type0, 1);
3191
3192 return allocate_value (create_array_type (NULL, elt_type, index_type));
3193 }
3194 \f
3195
3196 /* Name resolution */
3197
3198 /* The "decoded" name for the user-definable Ada operator corresponding
3199 to OP. */
3200
3201 static const char *
3202 ada_decoded_op_name (enum exp_opcode op)
3203 {
3204 int i;
3205
3206 for (i = 0; ada_opname_table[i].encoded != NULL; i += 1)
3207 {
3208 if (ada_opname_table[i].op == op)
3209 return ada_opname_table[i].decoded;
3210 }
3211 error (_("Could not find operator name for opcode"));
3212 }
3213
3214
3215 /* Same as evaluate_type (*EXP), but resolves ambiguous symbol
3216 references (marked by OP_VAR_VALUE nodes in which the symbol has an
3217 undefined namespace) and converts operators that are
3218 user-defined into appropriate function calls. If CONTEXT_TYPE is
3219 non-null, it provides a preferred result type [at the moment, only
3220 type void has any effect---causing procedures to be preferred over
3221 functions in calls]. A null CONTEXT_TYPE indicates that a non-void
3222 return type is preferred. May change (expand) *EXP. */
3223
3224 static void
3225 resolve (expression_up *expp, int void_context_p, int parse_completion,
3226 innermost_block_tracker *tracker)
3227 {
3228 struct type *context_type = NULL;
3229 int pc = 0;
3230
3231 if (void_context_p)
3232 context_type = builtin_type ((*expp)->gdbarch)->builtin_void;
3233
3234 resolve_subexp (expp, &pc, 1, context_type, parse_completion, tracker);
3235 }
3236
3237 /* Resolve the operator of the subexpression beginning at
3238 position *POS of *EXPP. "Resolving" consists of replacing
3239 the symbols that have undefined namespaces in OP_VAR_VALUE nodes
3240 with their resolutions, replacing built-in operators with
3241 function calls to user-defined operators, where appropriate, and,
3242 when DEPROCEDURE_P is non-zero, converting function-valued variables
3243 into parameterless calls. May expand *EXPP. The CONTEXT_TYPE functions
3244 are as in ada_resolve, above. */
3245
3246 static struct value *
3247 resolve_subexp (expression_up *expp, int *pos, int deprocedure_p,
3248 struct type *context_type, int parse_completion,
3249 innermost_block_tracker *tracker)
3250 {
3251 int pc = *pos;
3252 int i;
3253 struct expression *exp; /* Convenience: == *expp. */
3254 enum exp_opcode op = (*expp)->elts[pc].opcode;
3255 struct value **argvec; /* Vector of operand types (alloca'ed). */
3256 int nargs; /* Number of operands. */
3257 int oplen;
3258
3259 argvec = NULL;
3260 nargs = 0;
3261 exp = expp->get ();
3262
3263 /* Pass one: resolve operands, saving their types and updating *pos,
3264 if needed. */
3265 switch (op)
3266 {
3267 case OP_FUNCALL:
3268 if (exp->elts[pc + 3].opcode == OP_VAR_VALUE
3269 && SYMBOL_DOMAIN (exp->elts[pc + 5].symbol) == UNDEF_DOMAIN)
3270 *pos += 7;
3271 else
3272 {
3273 *pos += 3;
3274 resolve_subexp (expp, pos, 0, NULL, parse_completion, tracker);
3275 }
3276 nargs = longest_to_int (exp->elts[pc + 1].longconst);
3277 break;
3278
3279 case UNOP_ADDR:
3280 *pos += 1;
3281 resolve_subexp (expp, pos, 0, NULL, parse_completion, tracker);
3282 break;
3283
3284 case UNOP_QUAL:
3285 *pos += 3;
3286 resolve_subexp (expp, pos, 1, check_typedef (exp->elts[pc + 1].type),
3287 parse_completion, tracker);
3288 break;
3289
3290 case OP_ATR_MODULUS:
3291 case OP_ATR_SIZE:
3292 case OP_ATR_TAG:
3293 case OP_ATR_FIRST:
3294 case OP_ATR_LAST:
3295 case OP_ATR_LENGTH:
3296 case OP_ATR_POS:
3297 case OP_ATR_VAL:
3298 case OP_ATR_MIN:
3299 case OP_ATR_MAX:
3300 case TERNOP_IN_RANGE:
3301 case BINOP_IN_BOUNDS:
3302 case UNOP_IN_RANGE:
3303 case OP_AGGREGATE:
3304 case OP_OTHERS:
3305 case OP_CHOICES:
3306 case OP_POSITIONAL:
3307 case OP_DISCRETE_RANGE:
3308 case OP_NAME:
3309 ada_forward_operator_length (exp, pc, &oplen, &nargs);
3310 *pos += oplen;
3311 break;
3312
3313 case BINOP_ASSIGN:
3314 {
3315 struct value *arg1;
3316
3317 *pos += 1;
3318 arg1 = resolve_subexp (expp, pos, 0, NULL, parse_completion, tracker);
3319 if (arg1 == NULL)
3320 resolve_subexp (expp, pos, 1, NULL, parse_completion, tracker);
3321 else
3322 resolve_subexp (expp, pos, 1, value_type (arg1), parse_completion,
3323 tracker);
3324 break;
3325 }
3326
3327 case UNOP_CAST:
3328 *pos += 3;
3329 nargs = 1;
3330 break;
3331
3332 case BINOP_ADD:
3333 case BINOP_SUB:
3334 case BINOP_MUL:
3335 case BINOP_DIV:
3336 case BINOP_REM:
3337 case BINOP_MOD:
3338 case BINOP_EXP:
3339 case BINOP_CONCAT:
3340 case BINOP_LOGICAL_AND:
3341 case BINOP_LOGICAL_OR:
3342 case BINOP_BITWISE_AND:
3343 case BINOP_BITWISE_IOR:
3344 case BINOP_BITWISE_XOR:
3345
3346 case BINOP_EQUAL:
3347 case BINOP_NOTEQUAL:
3348 case BINOP_LESS:
3349 case BINOP_GTR:
3350 case BINOP_LEQ:
3351 case BINOP_GEQ:
3352
3353 case BINOP_REPEAT:
3354 case BINOP_SUBSCRIPT:
3355 case BINOP_COMMA:
3356 *pos += 1;
3357 nargs = 2;
3358 break;
3359
3360 case UNOP_NEG:
3361 case UNOP_PLUS:
3362 case UNOP_LOGICAL_NOT:
3363 case UNOP_ABS:
3364 case UNOP_IND:
3365 *pos += 1;
3366 nargs = 1;
3367 break;
3368
3369 case OP_LONG:
3370 case OP_FLOAT:
3371 case OP_VAR_VALUE:
3372 case OP_VAR_MSYM_VALUE:
3373 *pos += 4;
3374 break;
3375
3376 case OP_TYPE:
3377 case OP_BOOL:
3378 case OP_LAST:
3379 case OP_INTERNALVAR:
3380 *pos += 3;
3381 break;
3382
3383 case UNOP_MEMVAL:
3384 *pos += 3;
3385 nargs = 1;
3386 break;
3387
3388 case OP_REGISTER:
3389 *pos += 4 + BYTES_TO_EXP_ELEM (exp->elts[pc + 1].longconst + 1);
3390 break;
3391
3392 case STRUCTOP_STRUCT:
3393 *pos += 4 + BYTES_TO_EXP_ELEM (exp->elts[pc + 1].longconst + 1);
3394 nargs = 1;
3395 break;
3396
3397 case TERNOP_SLICE:
3398 *pos += 1;
3399 nargs = 3;
3400 break;
3401
3402 case OP_STRING:
3403 break;
3404
3405 default:
3406 error (_("Unexpected operator during name resolution"));
3407 }
3408
3409 argvec = XALLOCAVEC (struct value *, nargs + 1);
3410 for (i = 0; i < nargs; i += 1)
3411 argvec[i] = resolve_subexp (expp, pos, 1, NULL, parse_completion,
3412 tracker);
3413 argvec[i] = NULL;
3414 exp = expp->get ();
3415
3416 /* Pass two: perform any resolution on principal operator. */
3417 switch (op)
3418 {
3419 default:
3420 break;
3421
3422 case OP_VAR_VALUE:
3423 if (SYMBOL_DOMAIN (exp->elts[pc + 2].symbol) == UNDEF_DOMAIN)
3424 {
3425 std::vector<struct block_symbol> candidates;
3426 int n_candidates;
3427
3428 n_candidates =
3429 ada_lookup_symbol_list (SYMBOL_LINKAGE_NAME
3430 (exp->elts[pc + 2].symbol),
3431 exp->elts[pc + 1].block, VAR_DOMAIN,
3432 &candidates);
3433
3434 if (n_candidates > 1)
3435 {
3436 /* Types tend to get re-introduced locally, so if there
3437 are any local symbols that are not types, first filter
3438 out all types. */
3439 int j;
3440 for (j = 0; j < n_candidates; j += 1)
3441 switch (SYMBOL_CLASS (candidates[j].symbol))
3442 {
3443 case LOC_REGISTER:
3444 case LOC_ARG:
3445 case LOC_REF_ARG:
3446 case LOC_REGPARM_ADDR:
3447 case LOC_LOCAL:
3448 case LOC_COMPUTED:
3449 goto FoundNonType;
3450 default:
3451 break;
3452 }
3453 FoundNonType:
3454 if (j < n_candidates)
3455 {
3456 j = 0;
3457 while (j < n_candidates)
3458 {
3459 if (SYMBOL_CLASS (candidates[j].symbol) == LOC_TYPEDEF)
3460 {
3461 candidates[j] = candidates[n_candidates - 1];
3462 n_candidates -= 1;
3463 }
3464 else
3465 j += 1;
3466 }
3467 }
3468 }
3469
3470 if (n_candidates == 0)
3471 error (_("No definition found for %s"),
3472 SYMBOL_PRINT_NAME (exp->elts[pc + 2].symbol));
3473 else if (n_candidates == 1)
3474 i = 0;
3475 else if (deprocedure_p
3476 && !is_nonfunction (candidates.data (), n_candidates))
3477 {
3478 i = ada_resolve_function
3479 (candidates.data (), n_candidates, NULL, 0,
3480 SYMBOL_LINKAGE_NAME (exp->elts[pc + 2].symbol),
3481 context_type, parse_completion);
3482 if (i < 0)
3483 error (_("Could not find a match for %s"),
3484 SYMBOL_PRINT_NAME (exp->elts[pc + 2].symbol));
3485 }
3486 else
3487 {
3488 printf_filtered (_("Multiple matches for %s\n"),
3489 SYMBOL_PRINT_NAME (exp->elts[pc + 2].symbol));
3490 user_select_syms (candidates.data (), n_candidates, 1);
3491 i = 0;
3492 }
3493
3494 exp->elts[pc + 1].block = candidates[i].block;
3495 exp->elts[pc + 2].symbol = candidates[i].symbol;
3496 tracker->update (candidates[i]);
3497 }
3498
3499 if (deprocedure_p
3500 && (TYPE_CODE (SYMBOL_TYPE (exp->elts[pc + 2].symbol))
3501 == TYPE_CODE_FUNC))
3502 {
3503 replace_operator_with_call (expp, pc, 0, 4,
3504 exp->elts[pc + 2].symbol,
3505 exp->elts[pc + 1].block);
3506 exp = expp->get ();
3507 }
3508 break;
3509
3510 case OP_FUNCALL:
3511 {
3512 if (exp->elts[pc + 3].opcode == OP_VAR_VALUE
3513 && SYMBOL_DOMAIN (exp->elts[pc + 5].symbol) == UNDEF_DOMAIN)
3514 {
3515 std::vector<struct block_symbol> candidates;
3516 int n_candidates;
3517
3518 n_candidates =
3519 ada_lookup_symbol_list (SYMBOL_LINKAGE_NAME
3520 (exp->elts[pc + 5].symbol),
3521 exp->elts[pc + 4].block, VAR_DOMAIN,
3522 &candidates);
3523
3524 if (n_candidates == 1)
3525 i = 0;
3526 else
3527 {
3528 i = ada_resolve_function
3529 (candidates.data (), n_candidates,
3530 argvec, nargs,
3531 SYMBOL_LINKAGE_NAME (exp->elts[pc + 5].symbol),
3532 context_type, parse_completion);
3533 if (i < 0)
3534 error (_("Could not find a match for %s"),
3535 SYMBOL_PRINT_NAME (exp->elts[pc + 5].symbol));
3536 }
3537
3538 exp->elts[pc + 4].block = candidates[i].block;
3539 exp->elts[pc + 5].symbol = candidates[i].symbol;
3540 tracker->update (candidates[i]);
3541 }
3542 }
3543 break;
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_CONCAT:
3551 case BINOP_BITWISE_AND:
3552 case BINOP_BITWISE_IOR:
3553 case BINOP_BITWISE_XOR:
3554 case BINOP_EQUAL:
3555 case BINOP_NOTEQUAL:
3556 case BINOP_LESS:
3557 case BINOP_GTR:
3558 case BINOP_LEQ:
3559 case BINOP_GEQ:
3560 case BINOP_EXP:
3561 case UNOP_NEG:
3562 case UNOP_PLUS:
3563 case UNOP_LOGICAL_NOT:
3564 case UNOP_ABS:
3565 if (possible_user_operator_p (op, argvec))
3566 {
3567 std::vector<struct block_symbol> candidates;
3568 int n_candidates;
3569
3570 n_candidates =
3571 ada_lookup_symbol_list (ada_decoded_op_name (op),
3572 NULL, VAR_DOMAIN,
3573 &candidates);
3574
3575 i = ada_resolve_function (candidates.data (), n_candidates, argvec,
3576 nargs, ada_decoded_op_name (op), NULL,
3577 parse_completion);
3578 if (i < 0)
3579 break;
3580
3581 replace_operator_with_call (expp, pc, nargs, 1,
3582 candidates[i].symbol,
3583 candidates[i].block);
3584 exp = expp->get ();
3585 }
3586 break;
3587
3588 case OP_TYPE:
3589 case OP_REGISTER:
3590 return NULL;
3591 }
3592
3593 *pos = pc;
3594 if (exp->elts[pc].opcode == OP_VAR_MSYM_VALUE)
3595 return evaluate_var_msym_value (EVAL_AVOID_SIDE_EFFECTS,
3596 exp->elts[pc + 1].objfile,
3597 exp->elts[pc + 2].msymbol);
3598 else
3599 return evaluate_subexp_type (exp, pos);
3600 }
3601
3602 /* Return non-zero if formal type FTYPE matches actual type ATYPE. If
3603 MAY_DEREF is non-zero, the formal may be a pointer and the actual
3604 a non-pointer. */
3605 /* The term "match" here is rather loose. The match is heuristic and
3606 liberal. */
3607
3608 static int
3609 ada_type_match (struct type *ftype, struct type *atype, int may_deref)
3610 {
3611 ftype = ada_check_typedef (ftype);
3612 atype = ada_check_typedef (atype);
3613
3614 if (TYPE_CODE (ftype) == TYPE_CODE_REF)
3615 ftype = TYPE_TARGET_TYPE (ftype);
3616 if (TYPE_CODE (atype) == TYPE_CODE_REF)
3617 atype = TYPE_TARGET_TYPE (atype);
3618
3619 switch (TYPE_CODE (ftype))
3620 {
3621 default:
3622 return TYPE_CODE (ftype) == TYPE_CODE (atype);
3623 case TYPE_CODE_PTR:
3624 if (TYPE_CODE (atype) == TYPE_CODE_PTR)
3625 return ada_type_match (TYPE_TARGET_TYPE (ftype),
3626 TYPE_TARGET_TYPE (atype), 0);
3627 else
3628 return (may_deref
3629 && ada_type_match (TYPE_TARGET_TYPE (ftype), atype, 0));
3630 case TYPE_CODE_INT:
3631 case TYPE_CODE_ENUM:
3632 case TYPE_CODE_RANGE:
3633 switch (TYPE_CODE (atype))
3634 {
3635 case TYPE_CODE_INT:
3636 case TYPE_CODE_ENUM:
3637 case TYPE_CODE_RANGE:
3638 return 1;
3639 default:
3640 return 0;
3641 }
3642
3643 case TYPE_CODE_ARRAY:
3644 return (TYPE_CODE (atype) == TYPE_CODE_ARRAY
3645 || ada_is_array_descriptor_type (atype));
3646
3647 case TYPE_CODE_STRUCT:
3648 if (ada_is_array_descriptor_type (ftype))
3649 return (TYPE_CODE (atype) == TYPE_CODE_ARRAY
3650 || ada_is_array_descriptor_type (atype));
3651 else
3652 return (TYPE_CODE (atype) == TYPE_CODE_STRUCT
3653 && !ada_is_array_descriptor_type (atype));
3654
3655 case TYPE_CODE_UNION:
3656 case TYPE_CODE_FLT:
3657 return (TYPE_CODE (atype) == TYPE_CODE (ftype));
3658 }
3659 }
3660
3661 /* Return non-zero if the formals of FUNC "sufficiently match" the
3662 vector of actual argument types ACTUALS of size N_ACTUALS. FUNC
3663 may also be an enumeral, in which case it is treated as a 0-
3664 argument function. */
3665
3666 static int
3667 ada_args_match (struct symbol *func, struct value **actuals, int n_actuals)
3668 {
3669 int i;
3670 struct type *func_type = SYMBOL_TYPE (func);
3671
3672 if (SYMBOL_CLASS (func) == LOC_CONST
3673 && TYPE_CODE (func_type) == TYPE_CODE_ENUM)
3674 return (n_actuals == 0);
3675 else if (func_type == NULL || TYPE_CODE (func_type) != TYPE_CODE_FUNC)
3676 return 0;
3677
3678 if (TYPE_NFIELDS (func_type) != n_actuals)
3679 return 0;
3680
3681 for (i = 0; i < n_actuals; i += 1)
3682 {
3683 if (actuals[i] == NULL)
3684 return 0;
3685 else
3686 {
3687 struct type *ftype = ada_check_typedef (TYPE_FIELD_TYPE (func_type,
3688 i));
3689 struct type *atype = ada_check_typedef (value_type (actuals[i]));
3690
3691 if (!ada_type_match (ftype, atype, 1))
3692 return 0;
3693 }
3694 }
3695 return 1;
3696 }
3697
3698 /* False iff function type FUNC_TYPE definitely does not produce a value
3699 compatible with type CONTEXT_TYPE. Conservatively returns 1 if
3700 FUNC_TYPE is not a valid function type with a non-null return type
3701 or an enumerated type. A null CONTEXT_TYPE indicates any non-void type. */
3702
3703 static int
3704 return_match (struct type *func_type, struct type *context_type)
3705 {
3706 struct type *return_type;
3707
3708 if (func_type == NULL)
3709 return 1;
3710
3711 if (TYPE_CODE (func_type) == TYPE_CODE_FUNC)
3712 return_type = get_base_type (TYPE_TARGET_TYPE (func_type));
3713 else
3714 return_type = get_base_type (func_type);
3715 if (return_type == NULL)
3716 return 1;
3717
3718 context_type = get_base_type (context_type);
3719
3720 if (TYPE_CODE (return_type) == TYPE_CODE_ENUM)
3721 return context_type == NULL || return_type == context_type;
3722 else if (context_type == NULL)
3723 return TYPE_CODE (return_type) != TYPE_CODE_VOID;
3724 else
3725 return TYPE_CODE (return_type) == TYPE_CODE (context_type);
3726 }
3727
3728
3729 /* Returns the index in SYMS[0..NSYMS-1] that contains the symbol for the
3730 function (if any) that matches the types of the NARGS arguments in
3731 ARGS. If CONTEXT_TYPE is non-null and there is at least one match
3732 that returns that type, then eliminate matches that don't. If
3733 CONTEXT_TYPE is void and there is at least one match that does not
3734 return void, eliminate all matches that do.
3735
3736 Asks the user if there is more than one match remaining. Returns -1
3737 if there is no such symbol or none is selected. NAME is used
3738 solely for messages. May re-arrange and modify SYMS in
3739 the process; the index returned is for the modified vector. */
3740
3741 static int
3742 ada_resolve_function (struct block_symbol syms[],
3743 int nsyms, struct value **args, int nargs,
3744 const char *name, struct type *context_type,
3745 int parse_completion)
3746 {
3747 int fallback;
3748 int k;
3749 int m; /* Number of hits */
3750
3751 m = 0;
3752 /* In the first pass of the loop, we only accept functions matching
3753 context_type. If none are found, we add a second pass of the loop
3754 where every function is accepted. */
3755 for (fallback = 0; m == 0 && fallback < 2; fallback++)
3756 {
3757 for (k = 0; k < nsyms; k += 1)
3758 {
3759 struct type *type = ada_check_typedef (SYMBOL_TYPE (syms[k].symbol));
3760
3761 if (ada_args_match (syms[k].symbol, args, nargs)
3762 && (fallback || return_match (type, context_type)))
3763 {
3764 syms[m] = syms[k];
3765 m += 1;
3766 }
3767 }
3768 }
3769
3770 /* If we got multiple matches, ask the user which one to use. Don't do this
3771 interactive thing during completion, though, as the purpose of the
3772 completion is providing a list of all possible matches. Prompting the
3773 user to filter it down would be completely unexpected in this case. */
3774 if (m == 0)
3775 return -1;
3776 else if (m > 1 && !parse_completion)
3777 {
3778 printf_filtered (_("Multiple matches for %s\n"), name);
3779 user_select_syms (syms, m, 1);
3780 return 0;
3781 }
3782 return 0;
3783 }
3784
3785 /* Returns true (non-zero) iff decoded name N0 should appear before N1
3786 in a listing of choices during disambiguation (see sort_choices, below).
3787 The idea is that overloadings of a subprogram name from the
3788 same package should sort in their source order. We settle for ordering
3789 such symbols by their trailing number (__N or $N). */
3790
3791 static int
3792 encoded_ordered_before (const char *N0, const char *N1)
3793 {
3794 if (N1 == NULL)
3795 return 0;
3796 else if (N0 == NULL)
3797 return 1;
3798 else
3799 {
3800 int k0, k1;
3801
3802 for (k0 = strlen (N0) - 1; k0 > 0 && isdigit (N0[k0]); k0 -= 1)
3803 ;
3804 for (k1 = strlen (N1) - 1; k1 > 0 && isdigit (N1[k1]); k1 -= 1)
3805 ;
3806 if ((N0[k0] == '_' || N0[k0] == '$') && N0[k0 + 1] != '\000'
3807 && (N1[k1] == '_' || N1[k1] == '$') && N1[k1 + 1] != '\000')
3808 {
3809 int n0, n1;
3810
3811 n0 = k0;
3812 while (N0[n0] == '_' && n0 > 0 && N0[n0 - 1] == '_')
3813 n0 -= 1;
3814 n1 = k1;
3815 while (N1[n1] == '_' && n1 > 0 && N1[n1 - 1] == '_')
3816 n1 -= 1;
3817 if (n0 == n1 && strncmp (N0, N1, n0) == 0)
3818 return (atoi (N0 + k0 + 1) < atoi (N1 + k1 + 1));
3819 }
3820 return (strcmp (N0, N1) < 0);
3821 }
3822 }
3823
3824 /* Sort SYMS[0..NSYMS-1] to put the choices in a canonical order by the
3825 encoded names. */
3826
3827 static void
3828 sort_choices (struct block_symbol syms[], int nsyms)
3829 {
3830 int i;
3831
3832 for (i = 1; i < nsyms; i += 1)
3833 {
3834 struct block_symbol sym = syms[i];
3835 int j;
3836
3837 for (j = i - 1; j >= 0; j -= 1)
3838 {
3839 if (encoded_ordered_before (SYMBOL_LINKAGE_NAME (syms[j].symbol),
3840 SYMBOL_LINKAGE_NAME (sym.symbol)))
3841 break;
3842 syms[j + 1] = syms[j];
3843 }
3844 syms[j + 1] = sym;
3845 }
3846 }
3847
3848 /* Whether GDB should display formals and return types for functions in the
3849 overloads selection menu. */
3850 static int print_signatures = 1;
3851
3852 /* Print the signature for SYM on STREAM according to the FLAGS options. For
3853 all but functions, the signature is just the name of the symbol. For
3854 functions, this is the name of the function, the list of types for formals
3855 and the return type (if any). */
3856
3857 static void
3858 ada_print_symbol_signature (struct ui_file *stream, struct symbol *sym,
3859 const struct type_print_options *flags)
3860 {
3861 struct type *type = SYMBOL_TYPE (sym);
3862
3863 fprintf_filtered (stream, "%s", SYMBOL_PRINT_NAME (sym));
3864 if (!print_signatures
3865 || type == NULL
3866 || TYPE_CODE (type) != TYPE_CODE_FUNC)
3867 return;
3868
3869 if (TYPE_NFIELDS (type) > 0)
3870 {
3871 int i;
3872
3873 fprintf_filtered (stream, " (");
3874 for (i = 0; i < TYPE_NFIELDS (type); ++i)
3875 {
3876 if (i > 0)
3877 fprintf_filtered (stream, "; ");
3878 ada_print_type (TYPE_FIELD_TYPE (type, i), NULL, stream, -1, 0,
3879 flags);
3880 }
3881 fprintf_filtered (stream, ")");
3882 }
3883 if (TYPE_TARGET_TYPE (type) != NULL
3884 && TYPE_CODE (TYPE_TARGET_TYPE (type)) != TYPE_CODE_VOID)
3885 {
3886 fprintf_filtered (stream, " return ");
3887 ada_print_type (TYPE_TARGET_TYPE (type), NULL, stream, -1, 0, flags);
3888 }
3889 }
3890
3891 /* Given a list of NSYMS symbols in SYMS, select up to MAX_RESULTS>0
3892 by asking the user (if necessary), returning the number selected,
3893 and setting the first elements of SYMS items. Error if no symbols
3894 selected. */
3895
3896 /* NOTE: Adapted from decode_line_2 in symtab.c, with which it ought
3897 to be re-integrated one of these days. */
3898
3899 int
3900 user_select_syms (struct block_symbol *syms, int nsyms, int max_results)
3901 {
3902 int i;
3903 int *chosen = XALLOCAVEC (int , nsyms);
3904 int n_chosen;
3905 int first_choice = (max_results == 1) ? 1 : 2;
3906 const char *select_mode = multiple_symbols_select_mode ();
3907
3908 if (max_results < 1)
3909 error (_("Request to select 0 symbols!"));
3910 if (nsyms <= 1)
3911 return nsyms;
3912
3913 if (select_mode == multiple_symbols_cancel)
3914 error (_("\
3915 canceled because the command is ambiguous\n\
3916 See set/show multiple-symbol."));
3917
3918 /* If select_mode is "all", then return all possible symbols.
3919 Only do that if more than one symbol can be selected, of course.
3920 Otherwise, display the menu as usual. */
3921 if (select_mode == multiple_symbols_all && max_results > 1)
3922 return nsyms;
3923
3924 printf_filtered (_("[0] cancel\n"));
3925 if (max_results > 1)
3926 printf_filtered (_("[1] all\n"));
3927
3928 sort_choices (syms, nsyms);
3929
3930 for (i = 0; i < nsyms; i += 1)
3931 {
3932 if (syms[i].symbol == NULL)
3933 continue;
3934
3935 if (SYMBOL_CLASS (syms[i].symbol) == LOC_BLOCK)
3936 {
3937 struct symtab_and_line sal =
3938 find_function_start_sal (syms[i].symbol, 1);
3939
3940 printf_filtered ("[%d] ", i + first_choice);
3941 ada_print_symbol_signature (gdb_stdout, syms[i].symbol,
3942 &type_print_raw_options);
3943 if (sal.symtab == NULL)
3944 printf_filtered (_(" at <no source file available>:%d\n"),
3945 sal.line);
3946 else
3947 printf_filtered (_(" at %s:%d\n"),
3948 symtab_to_filename_for_display (sal.symtab),
3949 sal.line);
3950 continue;
3951 }
3952 else
3953 {
3954 int is_enumeral =
3955 (SYMBOL_CLASS (syms[i].symbol) == LOC_CONST
3956 && SYMBOL_TYPE (syms[i].symbol) != NULL
3957 && TYPE_CODE (SYMBOL_TYPE (syms[i].symbol)) == TYPE_CODE_ENUM);
3958 struct symtab *symtab = NULL;
3959
3960 if (SYMBOL_OBJFILE_OWNED (syms[i].symbol))
3961 symtab = symbol_symtab (syms[i].symbol);
3962
3963 if (SYMBOL_LINE (syms[i].symbol) != 0 && symtab != NULL)
3964 {
3965 printf_filtered ("[%d] ", i + first_choice);
3966 ada_print_symbol_signature (gdb_stdout, syms[i].symbol,
3967 &type_print_raw_options);
3968 printf_filtered (_(" at %s:%d\n"),
3969 symtab_to_filename_for_display (symtab),
3970 SYMBOL_LINE (syms[i].symbol));
3971 }
3972 else if (is_enumeral
3973 && TYPE_NAME (SYMBOL_TYPE (syms[i].symbol)) != NULL)
3974 {
3975 printf_filtered (("[%d] "), i + first_choice);
3976 ada_print_type (SYMBOL_TYPE (syms[i].symbol), NULL,
3977 gdb_stdout, -1, 0, &type_print_raw_options);
3978 printf_filtered (_("'(%s) (enumeral)\n"),
3979 SYMBOL_PRINT_NAME (syms[i].symbol));
3980 }
3981 else
3982 {
3983 printf_filtered ("[%d] ", i + first_choice);
3984 ada_print_symbol_signature (gdb_stdout, syms[i].symbol,
3985 &type_print_raw_options);
3986
3987 if (symtab != NULL)
3988 printf_filtered (is_enumeral
3989 ? _(" in %s (enumeral)\n")
3990 : _(" at %s:?\n"),
3991 symtab_to_filename_for_display (symtab));
3992 else
3993 printf_filtered (is_enumeral
3994 ? _(" (enumeral)\n")
3995 : _(" at ?\n"));
3996 }
3997 }
3998 }
3999
4000 n_chosen = get_selections (chosen, nsyms, max_results, max_results > 1,
4001 "overload-choice");
4002
4003 for (i = 0; i < n_chosen; i += 1)
4004 syms[i] = syms[chosen[i]];
4005
4006 return n_chosen;
4007 }
4008
4009 /* Read and validate a set of numeric choices from the user in the
4010 range 0 .. N_CHOICES-1. Place the results in increasing
4011 order in CHOICES[0 .. N-1], and return N.
4012
4013 The user types choices as a sequence of numbers on one line
4014 separated by blanks, encoding them as follows:
4015
4016 + A choice of 0 means to cancel the selection, throwing an error.
4017 + If IS_ALL_CHOICE, a choice of 1 selects the entire set 0 .. N_CHOICES-1.
4018 + The user chooses k by typing k+IS_ALL_CHOICE+1.
4019
4020 The user is not allowed to choose more than MAX_RESULTS values.
4021
4022 ANNOTATION_SUFFIX, if present, is used to annotate the input
4023 prompts (for use with the -f switch). */
4024
4025 int
4026 get_selections (int *choices, int n_choices, int max_results,
4027 int is_all_choice, const char *annotation_suffix)
4028 {
4029 char *args;
4030 const char *prompt;
4031 int n_chosen;
4032 int first_choice = is_all_choice ? 2 : 1;
4033
4034 prompt = getenv ("PS2");
4035 if (prompt == NULL)
4036 prompt = "> ";
4037
4038 args = command_line_input (prompt, annotation_suffix);
4039
4040 if (args == NULL)
4041 error_no_arg (_("one or more choice numbers"));
4042
4043 n_chosen = 0;
4044
4045 /* Set choices[0 .. n_chosen-1] to the users' choices in ascending
4046 order, as given in args. Choices are validated. */
4047 while (1)
4048 {
4049 char *args2;
4050 int choice, j;
4051
4052 args = skip_spaces (args);
4053 if (*args == '\0' && n_chosen == 0)
4054 error_no_arg (_("one or more choice numbers"));
4055 else if (*args == '\0')
4056 break;
4057
4058 choice = strtol (args, &args2, 10);
4059 if (args == args2 || choice < 0
4060 || choice > n_choices + first_choice - 1)
4061 error (_("Argument must be choice number"));
4062 args = args2;
4063
4064 if (choice == 0)
4065 error (_("cancelled"));
4066
4067 if (choice < first_choice)
4068 {
4069 n_chosen = n_choices;
4070 for (j = 0; j < n_choices; j += 1)
4071 choices[j] = j;
4072 break;
4073 }
4074 choice -= first_choice;
4075
4076 for (j = n_chosen - 1; j >= 0 && choice < choices[j]; j -= 1)
4077 {
4078 }
4079
4080 if (j < 0 || choice != choices[j])
4081 {
4082 int k;
4083
4084 for (k = n_chosen - 1; k > j; k -= 1)
4085 choices[k + 1] = choices[k];
4086 choices[j + 1] = choice;
4087 n_chosen += 1;
4088 }
4089 }
4090
4091 if (n_chosen > max_results)
4092 error (_("Select no more than %d of the above"), max_results);
4093
4094 return n_chosen;
4095 }
4096
4097 /* Replace the operator of length OPLEN at position PC in *EXPP with a call
4098 on the function identified by SYM and BLOCK, and taking NARGS
4099 arguments. Update *EXPP as needed to hold more space. */
4100
4101 static void
4102 replace_operator_with_call (expression_up *expp, int pc, int nargs,
4103 int oplen, struct symbol *sym,
4104 const struct block *block)
4105 {
4106 /* A new expression, with 6 more elements (3 for funcall, 4 for function
4107 symbol, -oplen for operator being replaced). */
4108 struct expression *newexp = (struct expression *)
4109 xzalloc (sizeof (struct expression)
4110 + EXP_ELEM_TO_BYTES ((*expp)->nelts + 7 - oplen));
4111 struct expression *exp = expp->get ();
4112
4113 newexp->nelts = exp->nelts + 7 - oplen;
4114 newexp->language_defn = exp->language_defn;
4115 newexp->gdbarch = exp->gdbarch;
4116 memcpy (newexp->elts, exp->elts, EXP_ELEM_TO_BYTES (pc));
4117 memcpy (newexp->elts + pc + 7, exp->elts + pc + oplen,
4118 EXP_ELEM_TO_BYTES (exp->nelts - pc - oplen));
4119
4120 newexp->elts[pc].opcode = newexp->elts[pc + 2].opcode = OP_FUNCALL;
4121 newexp->elts[pc + 1].longconst = (LONGEST) nargs;
4122
4123 newexp->elts[pc + 3].opcode = newexp->elts[pc + 6].opcode = OP_VAR_VALUE;
4124 newexp->elts[pc + 4].block = block;
4125 newexp->elts[pc + 5].symbol = sym;
4126
4127 expp->reset (newexp);
4128 }
4129
4130 /* Type-class predicates */
4131
4132 /* True iff TYPE is numeric (i.e., an INT, RANGE (of numeric type),
4133 or FLOAT). */
4134
4135 static int
4136 numeric_type_p (struct type *type)
4137 {
4138 if (type == NULL)
4139 return 0;
4140 else
4141 {
4142 switch (TYPE_CODE (type))
4143 {
4144 case TYPE_CODE_INT:
4145 case TYPE_CODE_FLT:
4146 return 1;
4147 case TYPE_CODE_RANGE:
4148 return (type == TYPE_TARGET_TYPE (type)
4149 || numeric_type_p (TYPE_TARGET_TYPE (type)));
4150 default:
4151 return 0;
4152 }
4153 }
4154 }
4155
4156 /* True iff TYPE is integral (an INT or RANGE of INTs). */
4157
4158 static int
4159 integer_type_p (struct type *type)
4160 {
4161 if (type == NULL)
4162 return 0;
4163 else
4164 {
4165 switch (TYPE_CODE (type))
4166 {
4167 case TYPE_CODE_INT:
4168 return 1;
4169 case TYPE_CODE_RANGE:
4170 return (type == TYPE_TARGET_TYPE (type)
4171 || integer_type_p (TYPE_TARGET_TYPE (type)));
4172 default:
4173 return 0;
4174 }
4175 }
4176 }
4177
4178 /* True iff TYPE is scalar (INT, RANGE, FLOAT, ENUM). */
4179
4180 static int
4181 scalar_type_p (struct type *type)
4182 {
4183 if (type == NULL)
4184 return 0;
4185 else
4186 {
4187 switch (TYPE_CODE (type))
4188 {
4189 case TYPE_CODE_INT:
4190 case TYPE_CODE_RANGE:
4191 case TYPE_CODE_ENUM:
4192 case TYPE_CODE_FLT:
4193 return 1;
4194 default:
4195 return 0;
4196 }
4197 }
4198 }
4199
4200 /* True iff TYPE is discrete (INT, RANGE, ENUM). */
4201
4202 static int
4203 discrete_type_p (struct type *type)
4204 {
4205 if (type == NULL)
4206 return 0;
4207 else
4208 {
4209 switch (TYPE_CODE (type))
4210 {
4211 case TYPE_CODE_INT:
4212 case TYPE_CODE_RANGE:
4213 case TYPE_CODE_ENUM:
4214 case TYPE_CODE_BOOL:
4215 return 1;
4216 default:
4217 return 0;
4218 }
4219 }
4220 }
4221
4222 /* Returns non-zero if OP with operands in the vector ARGS could be
4223 a user-defined function. Errs on the side of pre-defined operators
4224 (i.e., result 0). */
4225
4226 static int
4227 possible_user_operator_p (enum exp_opcode op, struct value *args[])
4228 {
4229 struct type *type0 =
4230 (args[0] == NULL) ? NULL : ada_check_typedef (value_type (args[0]));
4231 struct type *type1 =
4232 (args[1] == NULL) ? NULL : ada_check_typedef (value_type (args[1]));
4233
4234 if (type0 == NULL)
4235 return 0;
4236
4237 switch (op)
4238 {
4239 default:
4240 return 0;
4241
4242 case BINOP_ADD:
4243 case BINOP_SUB:
4244 case BINOP_MUL:
4245 case BINOP_DIV:
4246 return (!(numeric_type_p (type0) && numeric_type_p (type1)));
4247
4248 case BINOP_REM:
4249 case BINOP_MOD:
4250 case BINOP_BITWISE_AND:
4251 case BINOP_BITWISE_IOR:
4252 case BINOP_BITWISE_XOR:
4253 return (!(integer_type_p (type0) && integer_type_p (type1)));
4254
4255 case BINOP_EQUAL:
4256 case BINOP_NOTEQUAL:
4257 case BINOP_LESS:
4258 case BINOP_GTR:
4259 case BINOP_LEQ:
4260 case BINOP_GEQ:
4261 return (!(scalar_type_p (type0) && scalar_type_p (type1)));
4262
4263 case BINOP_CONCAT:
4264 return !ada_is_array_type (type0) || !ada_is_array_type (type1);
4265
4266 case BINOP_EXP:
4267 return (!(numeric_type_p (type0) && integer_type_p (type1)));
4268
4269 case UNOP_NEG:
4270 case UNOP_PLUS:
4271 case UNOP_LOGICAL_NOT:
4272 case UNOP_ABS:
4273 return (!numeric_type_p (type0));
4274
4275 }
4276 }
4277 \f
4278 /* Renaming */
4279
4280 /* NOTES:
4281
4282 1. In the following, we assume that a renaming type's name may
4283 have an ___XD suffix. It would be nice if this went away at some
4284 point.
4285 2. We handle both the (old) purely type-based representation of
4286 renamings and the (new) variable-based encoding. At some point,
4287 it is devoutly to be hoped that the former goes away
4288 (FIXME: hilfinger-2007-07-09).
4289 3. Subprogram renamings are not implemented, although the XRS
4290 suffix is recognized (FIXME: hilfinger-2007-07-09). */
4291
4292 /* If SYM encodes a renaming,
4293
4294 <renaming> renames <renamed entity>,
4295
4296 sets *LEN to the length of the renamed entity's name,
4297 *RENAMED_ENTITY to that name (not null-terminated), and *RENAMING_EXPR to
4298 the string describing the subcomponent selected from the renamed
4299 entity. Returns ADA_NOT_RENAMING if SYM does not encode a renaming
4300 (in which case, the values of *RENAMED_ENTITY, *LEN, and *RENAMING_EXPR
4301 are undefined). Otherwise, returns a value indicating the category
4302 of entity renamed: an object (ADA_OBJECT_RENAMING), exception
4303 (ADA_EXCEPTION_RENAMING), package (ADA_PACKAGE_RENAMING), or
4304 subprogram (ADA_SUBPROGRAM_RENAMING). Does no allocation; the
4305 strings returned in *RENAMED_ENTITY and *RENAMING_EXPR should not be
4306 deallocated. The values of RENAMED_ENTITY, LEN, or RENAMING_EXPR
4307 may be NULL, in which case they are not assigned.
4308
4309 [Currently, however, GCC does not generate subprogram renamings.] */
4310
4311 enum ada_renaming_category
4312 ada_parse_renaming (struct symbol *sym,
4313 const char **renamed_entity, int *len,
4314 const char **renaming_expr)
4315 {
4316 enum ada_renaming_category kind;
4317 const char *info;
4318 const char *suffix;
4319
4320 if (sym == NULL)
4321 return ADA_NOT_RENAMING;
4322 switch (SYMBOL_CLASS (sym))
4323 {
4324 default:
4325 return ADA_NOT_RENAMING;
4326 case LOC_TYPEDEF:
4327 return parse_old_style_renaming (SYMBOL_TYPE (sym),
4328 renamed_entity, len, renaming_expr);
4329 case LOC_LOCAL:
4330 case LOC_STATIC:
4331 case LOC_COMPUTED:
4332 case LOC_OPTIMIZED_OUT:
4333 info = strstr (SYMBOL_LINKAGE_NAME (sym), "___XR");
4334 if (info == NULL)
4335 return ADA_NOT_RENAMING;
4336 switch (info[5])
4337 {
4338 case '_':
4339 kind = ADA_OBJECT_RENAMING;
4340 info += 6;
4341 break;
4342 case 'E':
4343 kind = ADA_EXCEPTION_RENAMING;
4344 info += 7;
4345 break;
4346 case 'P':
4347 kind = ADA_PACKAGE_RENAMING;
4348 info += 7;
4349 break;
4350 case 'S':
4351 kind = ADA_SUBPROGRAM_RENAMING;
4352 info += 7;
4353 break;
4354 default:
4355 return ADA_NOT_RENAMING;
4356 }
4357 }
4358
4359 if (renamed_entity != NULL)
4360 *renamed_entity = info;
4361 suffix = strstr (info, "___XE");
4362 if (suffix == NULL || suffix == info)
4363 return ADA_NOT_RENAMING;
4364 if (len != NULL)
4365 *len = strlen (info) - strlen (suffix);
4366 suffix += 5;
4367 if (renaming_expr != NULL)
4368 *renaming_expr = suffix;
4369 return kind;
4370 }
4371
4372 /* Assuming TYPE encodes a renaming according to the old encoding in
4373 exp_dbug.ads, returns details of that renaming in *RENAMED_ENTITY,
4374 *LEN, and *RENAMING_EXPR, as for ada_parse_renaming, above. Returns
4375 ADA_NOT_RENAMING otherwise. */
4376 static enum ada_renaming_category
4377 parse_old_style_renaming (struct type *type,
4378 const char **renamed_entity, int *len,
4379 const char **renaming_expr)
4380 {
4381 enum ada_renaming_category kind;
4382 const char *name;
4383 const char *info;
4384 const char *suffix;
4385
4386 if (type == NULL || TYPE_CODE (type) != TYPE_CODE_ENUM
4387 || TYPE_NFIELDS (type) != 1)
4388 return ADA_NOT_RENAMING;
4389
4390 name = TYPE_NAME (type);
4391 if (name == NULL)
4392 return ADA_NOT_RENAMING;
4393
4394 name = strstr (name, "___XR");
4395 if (name == NULL)
4396 return ADA_NOT_RENAMING;
4397 switch (name[5])
4398 {
4399 case '\0':
4400 case '_':
4401 kind = ADA_OBJECT_RENAMING;
4402 break;
4403 case 'E':
4404 kind = ADA_EXCEPTION_RENAMING;
4405 break;
4406 case 'P':
4407 kind = ADA_PACKAGE_RENAMING;
4408 break;
4409 case 'S':
4410 kind = ADA_SUBPROGRAM_RENAMING;
4411 break;
4412 default:
4413 return ADA_NOT_RENAMING;
4414 }
4415
4416 info = TYPE_FIELD_NAME (type, 0);
4417 if (info == NULL)
4418 return ADA_NOT_RENAMING;
4419 if (renamed_entity != NULL)
4420 *renamed_entity = info;
4421 suffix = strstr (info, "___XE");
4422 if (renaming_expr != NULL)
4423 *renaming_expr = suffix + 5;
4424 if (suffix == NULL || suffix == info)
4425 return ADA_NOT_RENAMING;
4426 if (len != NULL)
4427 *len = suffix - info;
4428 return kind;
4429 }
4430
4431 /* Compute the value of the given RENAMING_SYM, which is expected to
4432 be a symbol encoding a renaming expression. BLOCK is the block
4433 used to evaluate the renaming. */
4434
4435 static struct value *
4436 ada_read_renaming_var_value (struct symbol *renaming_sym,
4437 const struct block *block)
4438 {
4439 const char *sym_name;
4440
4441 sym_name = SYMBOL_LINKAGE_NAME (renaming_sym);
4442 expression_up expr = parse_exp_1 (&sym_name, 0, block, 0);
4443 return evaluate_expression (expr.get ());
4444 }
4445 \f
4446
4447 /* Evaluation: Function Calls */
4448
4449 /* Return an lvalue containing the value VAL. This is the identity on
4450 lvalues, and otherwise has the side-effect of allocating memory
4451 in the inferior where a copy of the value contents is copied. */
4452
4453 static struct value *
4454 ensure_lval (struct value *val)
4455 {
4456 if (VALUE_LVAL (val) == not_lval
4457 || VALUE_LVAL (val) == lval_internalvar)
4458 {
4459 int len = TYPE_LENGTH (ada_check_typedef (value_type (val)));
4460 const CORE_ADDR addr =
4461 value_as_long (value_allocate_space_in_inferior (len));
4462
4463 VALUE_LVAL (val) = lval_memory;
4464 set_value_address (val, addr);
4465 write_memory (addr, value_contents (val), len);
4466 }
4467
4468 return val;
4469 }
4470
4471 /* Return the value ACTUAL, converted to be an appropriate value for a
4472 formal of type FORMAL_TYPE. Use *SP as a stack pointer for
4473 allocating any necessary descriptors (fat pointers), or copies of
4474 values not residing in memory, updating it as needed. */
4475
4476 struct value *
4477 ada_convert_actual (struct value *actual, struct type *formal_type0)
4478 {
4479 struct type *actual_type = ada_check_typedef (value_type (actual));
4480 struct type *formal_type = ada_check_typedef (formal_type0);
4481 struct type *formal_target =
4482 TYPE_CODE (formal_type) == TYPE_CODE_PTR
4483 ? ada_check_typedef (TYPE_TARGET_TYPE (formal_type)) : formal_type;
4484 struct type *actual_target =
4485 TYPE_CODE (actual_type) == TYPE_CODE_PTR
4486 ? ada_check_typedef (TYPE_TARGET_TYPE (actual_type)) : actual_type;
4487
4488 if (ada_is_array_descriptor_type (formal_target)
4489 && TYPE_CODE (actual_target) == TYPE_CODE_ARRAY)
4490 return make_array_descriptor (formal_type, actual);
4491 else if (TYPE_CODE (formal_type) == TYPE_CODE_PTR
4492 || TYPE_CODE (formal_type) == TYPE_CODE_REF)
4493 {
4494 struct value *result;
4495
4496 if (TYPE_CODE (formal_target) == TYPE_CODE_ARRAY
4497 && ada_is_array_descriptor_type (actual_target))
4498 result = desc_data (actual);
4499 else if (TYPE_CODE (formal_type) != TYPE_CODE_PTR)
4500 {
4501 if (VALUE_LVAL (actual) != lval_memory)
4502 {
4503 struct value *val;
4504
4505 actual_type = ada_check_typedef (value_type (actual));
4506 val = allocate_value (actual_type);
4507 memcpy ((char *) value_contents_raw (val),
4508 (char *) value_contents (actual),
4509 TYPE_LENGTH (actual_type));
4510 actual = ensure_lval (val);
4511 }
4512 result = value_addr (actual);
4513 }
4514 else
4515 return actual;
4516 return value_cast_pointers (formal_type, result, 0);
4517 }
4518 else if (TYPE_CODE (actual_type) == TYPE_CODE_PTR)
4519 return ada_value_ind (actual);
4520 else if (ada_is_aligner_type (formal_type))
4521 {
4522 /* We need to turn this parameter into an aligner type
4523 as well. */
4524 struct value *aligner = allocate_value (formal_type);
4525 struct value *component = ada_value_struct_elt (aligner, "F", 0);
4526
4527 value_assign_to_component (aligner, component, actual);
4528 return aligner;
4529 }
4530
4531 return actual;
4532 }
4533
4534 /* Convert VALUE (which must be an address) to a CORE_ADDR that is a pointer of
4535 type TYPE. This is usually an inefficient no-op except on some targets
4536 (such as AVR) where the representation of a pointer and an address
4537 differs. */
4538
4539 static CORE_ADDR
4540 value_pointer (struct value *value, struct type *type)
4541 {
4542 struct gdbarch *gdbarch = get_type_arch (type);
4543 unsigned len = TYPE_LENGTH (type);
4544 gdb_byte *buf = (gdb_byte *) alloca (len);
4545 CORE_ADDR addr;
4546
4547 addr = value_address (value);
4548 gdbarch_address_to_pointer (gdbarch, type, buf, addr);
4549 addr = extract_unsigned_integer (buf, len, gdbarch_byte_order (gdbarch));
4550 return addr;
4551 }
4552
4553
4554 /* Push a descriptor of type TYPE for array value ARR on the stack at
4555 *SP, updating *SP to reflect the new descriptor. Return either
4556 an lvalue representing the new descriptor, or (if TYPE is a pointer-
4557 to-descriptor type rather than a descriptor type), a struct value *
4558 representing a pointer to this descriptor. */
4559
4560 static struct value *
4561 make_array_descriptor (struct type *type, struct value *arr)
4562 {
4563 struct type *bounds_type = desc_bounds_type (type);
4564 struct type *desc_type = desc_base_type (type);
4565 struct value *descriptor = allocate_value (desc_type);
4566 struct value *bounds = allocate_value (bounds_type);
4567 int i;
4568
4569 for (i = ada_array_arity (ada_check_typedef (value_type (arr)));
4570 i > 0; i -= 1)
4571 {
4572 modify_field (value_type (bounds), value_contents_writeable (bounds),
4573 ada_array_bound (arr, i, 0),
4574 desc_bound_bitpos (bounds_type, i, 0),
4575 desc_bound_bitsize (bounds_type, i, 0));
4576 modify_field (value_type (bounds), value_contents_writeable (bounds),
4577 ada_array_bound (arr, i, 1),
4578 desc_bound_bitpos (bounds_type, i, 1),
4579 desc_bound_bitsize (bounds_type, i, 1));
4580 }
4581
4582 bounds = ensure_lval (bounds);
4583
4584 modify_field (value_type (descriptor),
4585 value_contents_writeable (descriptor),
4586 value_pointer (ensure_lval (arr),
4587 TYPE_FIELD_TYPE (desc_type, 0)),
4588 fat_pntr_data_bitpos (desc_type),
4589 fat_pntr_data_bitsize (desc_type));
4590
4591 modify_field (value_type (descriptor),
4592 value_contents_writeable (descriptor),
4593 value_pointer (bounds,
4594 TYPE_FIELD_TYPE (desc_type, 1)),
4595 fat_pntr_bounds_bitpos (desc_type),
4596 fat_pntr_bounds_bitsize (desc_type));
4597
4598 descriptor = ensure_lval (descriptor);
4599
4600 if (TYPE_CODE (type) == TYPE_CODE_PTR)
4601 return value_addr (descriptor);
4602 else
4603 return descriptor;
4604 }
4605 \f
4606 /* Symbol Cache Module */
4607
4608 /* Performance measurements made as of 2010-01-15 indicate that
4609 this cache does bring some noticeable improvements. Depending
4610 on the type of entity being printed, the cache can make it as much
4611 as an order of magnitude faster than without it.
4612
4613 The descriptive type DWARF extension has significantly reduced
4614 the need for this cache, at least when DWARF is being used. However,
4615 even in this case, some expensive name-based symbol searches are still
4616 sometimes necessary - to find an XVZ variable, mostly. */
4617
4618 /* Initialize the contents of SYM_CACHE. */
4619
4620 static void
4621 ada_init_symbol_cache (struct ada_symbol_cache *sym_cache)
4622 {
4623 obstack_init (&sym_cache->cache_space);
4624 memset (sym_cache->root, '\000', sizeof (sym_cache->root));
4625 }
4626
4627 /* Free the memory used by SYM_CACHE. */
4628
4629 static void
4630 ada_free_symbol_cache (struct ada_symbol_cache *sym_cache)
4631 {
4632 obstack_free (&sym_cache->cache_space, NULL);
4633 xfree (sym_cache);
4634 }
4635
4636 /* Return the symbol cache associated to the given program space PSPACE.
4637 If not allocated for this PSPACE yet, allocate and initialize one. */
4638
4639 static struct ada_symbol_cache *
4640 ada_get_symbol_cache (struct program_space *pspace)
4641 {
4642 struct ada_pspace_data *pspace_data = get_ada_pspace_data (pspace);
4643
4644 if (pspace_data->sym_cache == NULL)
4645 {
4646 pspace_data->sym_cache = XCNEW (struct ada_symbol_cache);
4647 ada_init_symbol_cache (pspace_data->sym_cache);
4648 }
4649
4650 return pspace_data->sym_cache;
4651 }
4652
4653 /* Clear all entries from the symbol cache. */
4654
4655 static void
4656 ada_clear_symbol_cache (void)
4657 {
4658 struct ada_symbol_cache *sym_cache
4659 = ada_get_symbol_cache (current_program_space);
4660
4661 obstack_free (&sym_cache->cache_space, NULL);
4662 ada_init_symbol_cache (sym_cache);
4663 }
4664
4665 /* Search our cache for an entry matching NAME and DOMAIN.
4666 Return it if found, or NULL otherwise. */
4667
4668 static struct cache_entry **
4669 find_entry (const char *name, domain_enum domain)
4670 {
4671 struct ada_symbol_cache *sym_cache
4672 = ada_get_symbol_cache (current_program_space);
4673 int h = msymbol_hash (name) % HASH_SIZE;
4674 struct cache_entry **e;
4675
4676 for (e = &sym_cache->root[h]; *e != NULL; e = &(*e)->next)
4677 {
4678 if (domain == (*e)->domain && strcmp (name, (*e)->name) == 0)
4679 return e;
4680 }
4681 return NULL;
4682 }
4683
4684 /* Search the symbol cache for an entry matching NAME and DOMAIN.
4685 Return 1 if found, 0 otherwise.
4686
4687 If an entry was found and SYM is not NULL, set *SYM to the entry's
4688 SYM. Same principle for BLOCK if not NULL. */
4689
4690 static int
4691 lookup_cached_symbol (const char *name, domain_enum domain,
4692 struct symbol **sym, const struct block **block)
4693 {
4694 struct cache_entry **e = find_entry (name, domain);
4695
4696 if (e == NULL)
4697 return 0;
4698 if (sym != NULL)
4699 *sym = (*e)->sym;
4700 if (block != NULL)
4701 *block = (*e)->block;
4702 return 1;
4703 }
4704
4705 /* Assuming that (SYM, BLOCK) is the result of the lookup of NAME
4706 in domain DOMAIN, save this result in our symbol cache. */
4707
4708 static void
4709 cache_symbol (const char *name, domain_enum domain, struct symbol *sym,
4710 const struct block *block)
4711 {
4712 struct ada_symbol_cache *sym_cache
4713 = ada_get_symbol_cache (current_program_space);
4714 int h;
4715 char *copy;
4716 struct cache_entry *e;
4717
4718 /* Symbols for builtin types don't have a block.
4719 For now don't cache such symbols. */
4720 if (sym != NULL && !SYMBOL_OBJFILE_OWNED (sym))
4721 return;
4722
4723 /* If the symbol is a local symbol, then do not cache it, as a search
4724 for that symbol depends on the context. To determine whether
4725 the symbol is local or not, we check the block where we found it
4726 against the global and static blocks of its associated symtab. */
4727 if (sym
4728 && BLOCKVECTOR_BLOCK (SYMTAB_BLOCKVECTOR (symbol_symtab (sym)),
4729 GLOBAL_BLOCK) != block
4730 && BLOCKVECTOR_BLOCK (SYMTAB_BLOCKVECTOR (symbol_symtab (sym)),
4731 STATIC_BLOCK) != block)
4732 return;
4733
4734 h = msymbol_hash (name) % HASH_SIZE;
4735 e = XOBNEW (&sym_cache->cache_space, cache_entry);
4736 e->next = sym_cache->root[h];
4737 sym_cache->root[h] = e;
4738 e->name = copy
4739 = (char *) obstack_alloc (&sym_cache->cache_space, strlen (name) + 1);
4740 strcpy (copy, name);
4741 e->sym = sym;
4742 e->domain = domain;
4743 e->block = block;
4744 }
4745 \f
4746 /* Symbol Lookup */
4747
4748 /* Return the symbol name match type that should be used used when
4749 searching for all symbols matching LOOKUP_NAME.
4750
4751 LOOKUP_NAME is expected to be a symbol name after transformation
4752 for Ada lookups. */
4753
4754 static symbol_name_match_type
4755 name_match_type_from_name (const char *lookup_name)
4756 {
4757 return (strstr (lookup_name, "__") == NULL
4758 ? symbol_name_match_type::WILD
4759 : symbol_name_match_type::FULL);
4760 }
4761
4762 /* Return the result of a standard (literal, C-like) lookup of NAME in
4763 given DOMAIN, visible from lexical block BLOCK. */
4764
4765 static struct symbol *
4766 standard_lookup (const char *name, const struct block *block,
4767 domain_enum domain)
4768 {
4769 /* Initialize it just to avoid a GCC false warning. */
4770 struct block_symbol sym = {};
4771
4772 if (lookup_cached_symbol (name, domain, &sym.symbol, NULL))
4773 return sym.symbol;
4774 ada_lookup_encoded_symbol (name, block, domain, &sym);
4775 cache_symbol (name, domain, sym.symbol, sym.block);
4776 return sym.symbol;
4777 }
4778
4779
4780 /* Non-zero iff there is at least one non-function/non-enumeral symbol
4781 in the symbol fields of SYMS[0..N-1]. We treat enumerals as functions,
4782 since they contend in overloading in the same way. */
4783 static int
4784 is_nonfunction (struct block_symbol syms[], int n)
4785 {
4786 int i;
4787
4788 for (i = 0; i < n; i += 1)
4789 if (TYPE_CODE (SYMBOL_TYPE (syms[i].symbol)) != TYPE_CODE_FUNC
4790 && (TYPE_CODE (SYMBOL_TYPE (syms[i].symbol)) != TYPE_CODE_ENUM
4791 || SYMBOL_CLASS (syms[i].symbol) != LOC_CONST))
4792 return 1;
4793
4794 return 0;
4795 }
4796
4797 /* If true (non-zero), then TYPE0 and TYPE1 represent equivalent
4798 struct types. Otherwise, they may not. */
4799
4800 static int
4801 equiv_types (struct type *type0, struct type *type1)
4802 {
4803 if (type0 == type1)
4804 return 1;
4805 if (type0 == NULL || type1 == NULL
4806 || TYPE_CODE (type0) != TYPE_CODE (type1))
4807 return 0;
4808 if ((TYPE_CODE (type0) == TYPE_CODE_STRUCT
4809 || TYPE_CODE (type0) == TYPE_CODE_ENUM)
4810 && ada_type_name (type0) != NULL && ada_type_name (type1) != NULL
4811 && strcmp (ada_type_name (type0), ada_type_name (type1)) == 0)
4812 return 1;
4813
4814 return 0;
4815 }
4816
4817 /* True iff SYM0 represents the same entity as SYM1, or one that is
4818 no more defined than that of SYM1. */
4819
4820 static int
4821 lesseq_defined_than (struct symbol *sym0, struct symbol *sym1)
4822 {
4823 if (sym0 == sym1)
4824 return 1;
4825 if (SYMBOL_DOMAIN (sym0) != SYMBOL_DOMAIN (sym1)
4826 || SYMBOL_CLASS (sym0) != SYMBOL_CLASS (sym1))
4827 return 0;
4828
4829 switch (SYMBOL_CLASS (sym0))
4830 {
4831 case LOC_UNDEF:
4832 return 1;
4833 case LOC_TYPEDEF:
4834 {
4835 struct type *type0 = SYMBOL_TYPE (sym0);
4836 struct type *type1 = SYMBOL_TYPE (sym1);
4837 const char *name0 = SYMBOL_LINKAGE_NAME (sym0);
4838 const char *name1 = SYMBOL_LINKAGE_NAME (sym1);
4839 int len0 = strlen (name0);
4840
4841 return
4842 TYPE_CODE (type0) == TYPE_CODE (type1)
4843 && (equiv_types (type0, type1)
4844 || (len0 < strlen (name1) && strncmp (name0, name1, len0) == 0
4845 && startswith (name1 + len0, "___XV")));
4846 }
4847 case LOC_CONST:
4848 return SYMBOL_VALUE (sym0) == SYMBOL_VALUE (sym1)
4849 && equiv_types (SYMBOL_TYPE (sym0), SYMBOL_TYPE (sym1));
4850 default:
4851 return 0;
4852 }
4853 }
4854
4855 /* Append (SYM,BLOCK,SYMTAB) to the end of the array of struct block_symbol
4856 records in OBSTACKP. Do nothing if SYM is a duplicate. */
4857
4858 static void
4859 add_defn_to_vec (struct obstack *obstackp,
4860 struct symbol *sym,
4861 const struct block *block)
4862 {
4863 int i;
4864 struct block_symbol *prevDefns = defns_collected (obstackp, 0);
4865
4866 /* Do not try to complete stub types, as the debugger is probably
4867 already scanning all symbols matching a certain name at the
4868 time when this function is called. Trying to replace the stub
4869 type by its associated full type will cause us to restart a scan
4870 which may lead to an infinite recursion. Instead, the client
4871 collecting the matching symbols will end up collecting several
4872 matches, with at least one of them complete. It can then filter
4873 out the stub ones if needed. */
4874
4875 for (i = num_defns_collected (obstackp) - 1; i >= 0; i -= 1)
4876 {
4877 if (lesseq_defined_than (sym, prevDefns[i].symbol))
4878 return;
4879 else if (lesseq_defined_than (prevDefns[i].symbol, sym))
4880 {
4881 prevDefns[i].symbol = sym;
4882 prevDefns[i].block = block;
4883 return;
4884 }
4885 }
4886
4887 {
4888 struct block_symbol info;
4889
4890 info.symbol = sym;
4891 info.block = block;
4892 obstack_grow (obstackp, &info, sizeof (struct block_symbol));
4893 }
4894 }
4895
4896 /* Number of block_symbol structures currently collected in current vector in
4897 OBSTACKP. */
4898
4899 static int
4900 num_defns_collected (struct obstack *obstackp)
4901 {
4902 return obstack_object_size (obstackp) / sizeof (struct block_symbol);
4903 }
4904
4905 /* Vector of block_symbol structures currently collected in current vector in
4906 OBSTACKP. If FINISH, close off the vector and return its final address. */
4907
4908 static struct block_symbol *
4909 defns_collected (struct obstack *obstackp, int finish)
4910 {
4911 if (finish)
4912 return (struct block_symbol *) obstack_finish (obstackp);
4913 else
4914 return (struct block_symbol *) obstack_base (obstackp);
4915 }
4916
4917 /* Return a bound minimal symbol matching NAME according to Ada
4918 decoding rules. Returns an invalid symbol if there is no such
4919 minimal symbol. Names prefixed with "standard__" are handled
4920 specially: "standard__" is first stripped off, and only static and
4921 global symbols are searched. */
4922
4923 struct bound_minimal_symbol
4924 ada_lookup_simple_minsym (const char *name)
4925 {
4926 struct bound_minimal_symbol result;
4927
4928 memset (&result, 0, sizeof (result));
4929
4930 symbol_name_match_type match_type = name_match_type_from_name (name);
4931 lookup_name_info lookup_name (name, match_type);
4932
4933 symbol_name_matcher_ftype *match_name
4934 = ada_get_symbol_name_matcher (lookup_name);
4935
4936 for (objfile *objfile : current_program_space->objfiles ())
4937 {
4938 for (minimal_symbol *msymbol : objfile->msymbols ())
4939 {
4940 if (match_name (MSYMBOL_LINKAGE_NAME (msymbol), lookup_name, NULL)
4941 && MSYMBOL_TYPE (msymbol) != mst_solib_trampoline)
4942 {
4943 result.minsym = msymbol;
4944 result.objfile = objfile;
4945 break;
4946 }
4947 }
4948 }
4949
4950 return result;
4951 }
4952
4953 /* Return all the bound minimal symbols matching NAME according to Ada
4954 decoding rules. Returns an empty vector if there is no such
4955 minimal symbol. Names prefixed with "standard__" are handled
4956 specially: "standard__" is first stripped off, and only static and
4957 global symbols are searched. */
4958
4959 static std::vector<struct bound_minimal_symbol>
4960 ada_lookup_simple_minsyms (const char *name)
4961 {
4962 std::vector<struct bound_minimal_symbol> result;
4963
4964 symbol_name_match_type match_type = name_match_type_from_name (name);
4965 lookup_name_info lookup_name (name, match_type);
4966
4967 symbol_name_matcher_ftype *match_name
4968 = ada_get_symbol_name_matcher (lookup_name);
4969
4970 for (objfile *objfile : current_program_space->objfiles ())
4971 {
4972 for (minimal_symbol *msymbol : objfile->msymbols ())
4973 {
4974 if (match_name (MSYMBOL_LINKAGE_NAME (msymbol), lookup_name, NULL)
4975 && MSYMBOL_TYPE (msymbol) != mst_solib_trampoline)
4976 result.push_back ({msymbol, objfile});
4977 }
4978 }
4979
4980 return result;
4981 }
4982
4983 /* For all subprograms that statically enclose the subprogram of the
4984 selected frame, add symbols matching identifier NAME in DOMAIN
4985 and their blocks to the list of data in OBSTACKP, as for
4986 ada_add_block_symbols (q.v.). If WILD_MATCH_P, treat as NAME
4987 with a wildcard prefix. */
4988
4989 static void
4990 add_symbols_from_enclosing_procs (struct obstack *obstackp,
4991 const lookup_name_info &lookup_name,
4992 domain_enum domain)
4993 {
4994 }
4995
4996 /* True if TYPE is definitely an artificial type supplied to a symbol
4997 for which no debugging information was given in the symbol file. */
4998
4999 static int
5000 is_nondebugging_type (struct type *type)
5001 {
5002 const char *name = ada_type_name (type);
5003
5004 return (name != NULL && strcmp (name, "<variable, no debug info>") == 0);
5005 }
5006
5007 /* Return nonzero if TYPE1 and TYPE2 are two enumeration types
5008 that are deemed "identical" for practical purposes.
5009
5010 This function assumes that TYPE1 and TYPE2 are both TYPE_CODE_ENUM
5011 types and that their number of enumerals is identical (in other
5012 words, TYPE_NFIELDS (type1) == TYPE_NFIELDS (type2)). */
5013
5014 static int
5015 ada_identical_enum_types_p (struct type *type1, struct type *type2)
5016 {
5017 int i;
5018
5019 /* The heuristic we use here is fairly conservative. We consider
5020 that 2 enumerate types are identical if they have the same
5021 number of enumerals and that all enumerals have the same
5022 underlying value and name. */
5023
5024 /* All enums in the type should have an identical underlying value. */
5025 for (i = 0; i < TYPE_NFIELDS (type1); i++)
5026 if (TYPE_FIELD_ENUMVAL (type1, i) != TYPE_FIELD_ENUMVAL (type2, i))
5027 return 0;
5028
5029 /* All enumerals should also have the same name (modulo any numerical
5030 suffix). */
5031 for (i = 0; i < TYPE_NFIELDS (type1); i++)
5032 {
5033 const char *name_1 = TYPE_FIELD_NAME (type1, i);
5034 const char *name_2 = TYPE_FIELD_NAME (type2, i);
5035 int len_1 = strlen (name_1);
5036 int len_2 = strlen (name_2);
5037
5038 ada_remove_trailing_digits (TYPE_FIELD_NAME (type1, i), &len_1);
5039 ada_remove_trailing_digits (TYPE_FIELD_NAME (type2, i), &len_2);
5040 if (len_1 != len_2
5041 || strncmp (TYPE_FIELD_NAME (type1, i),
5042 TYPE_FIELD_NAME (type2, i),
5043 len_1) != 0)
5044 return 0;
5045 }
5046
5047 return 1;
5048 }
5049
5050 /* Return nonzero if all the symbols in SYMS are all enumeral symbols
5051 that are deemed "identical" for practical purposes. Sometimes,
5052 enumerals are not strictly identical, but their types are so similar
5053 that they can be considered identical.
5054
5055 For instance, consider the following code:
5056
5057 type Color is (Black, Red, Green, Blue, White);
5058 type RGB_Color is new Color range Red .. Blue;
5059
5060 Type RGB_Color is a subrange of an implicit type which is a copy
5061 of type Color. If we call that implicit type RGB_ColorB ("B" is
5062 for "Base Type"), then type RGB_ColorB is a copy of type Color.
5063 As a result, when an expression references any of the enumeral
5064 by name (Eg. "print green"), the expression is technically
5065 ambiguous and the user should be asked to disambiguate. But
5066 doing so would only hinder the user, since it wouldn't matter
5067 what choice he makes, the outcome would always be the same.
5068 So, for practical purposes, we consider them as the same. */
5069
5070 static int
5071 symbols_are_identical_enums (const std::vector<struct block_symbol> &syms)
5072 {
5073 int i;
5074
5075 /* Before performing a thorough comparison check of each type,
5076 we perform a series of inexpensive checks. We expect that these
5077 checks will quickly fail in the vast majority of cases, and thus
5078 help prevent the unnecessary use of a more expensive comparison.
5079 Said comparison also expects us to make some of these checks
5080 (see ada_identical_enum_types_p). */
5081
5082 /* Quick check: All symbols should have an enum type. */
5083 for (i = 0; i < syms.size (); i++)
5084 if (TYPE_CODE (SYMBOL_TYPE (syms[i].symbol)) != TYPE_CODE_ENUM)
5085 return 0;
5086
5087 /* Quick check: They should all have the same value. */
5088 for (i = 1; i < syms.size (); i++)
5089 if (SYMBOL_VALUE (syms[i].symbol) != SYMBOL_VALUE (syms[0].symbol))
5090 return 0;
5091
5092 /* Quick check: They should all have the same number of enumerals. */
5093 for (i = 1; i < syms.size (); i++)
5094 if (TYPE_NFIELDS (SYMBOL_TYPE (syms[i].symbol))
5095 != TYPE_NFIELDS (SYMBOL_TYPE (syms[0].symbol)))
5096 return 0;
5097
5098 /* All the sanity checks passed, so we might have a set of
5099 identical enumeration types. Perform a more complete
5100 comparison of the type of each symbol. */
5101 for (i = 1; i < syms.size (); i++)
5102 if (!ada_identical_enum_types_p (SYMBOL_TYPE (syms[i].symbol),
5103 SYMBOL_TYPE (syms[0].symbol)))
5104 return 0;
5105
5106 return 1;
5107 }
5108
5109 /* Remove any non-debugging symbols in SYMS that definitely
5110 duplicate other symbols in the list (The only case I know of where
5111 this happens is when object files containing stabs-in-ecoff are
5112 linked with files containing ordinary ecoff debugging symbols (or no
5113 debugging symbols)). Modifies SYMS to squeeze out deleted entries.
5114 Returns the number of items in the modified list. */
5115
5116 static int
5117 remove_extra_symbols (std::vector<struct block_symbol> *syms)
5118 {
5119 int i, j;
5120
5121 /* We should never be called with less than 2 symbols, as there
5122 cannot be any extra symbol in that case. But it's easy to
5123 handle, since we have nothing to do in that case. */
5124 if (syms->size () < 2)
5125 return syms->size ();
5126
5127 i = 0;
5128 while (i < syms->size ())
5129 {
5130 int remove_p = 0;
5131
5132 /* If two symbols have the same name and one of them is a stub type,
5133 the get rid of the stub. */
5134
5135 if (TYPE_STUB (SYMBOL_TYPE ((*syms)[i].symbol))
5136 && SYMBOL_LINKAGE_NAME ((*syms)[i].symbol) != NULL)
5137 {
5138 for (j = 0; j < syms->size (); j++)
5139 {
5140 if (j != i
5141 && !TYPE_STUB (SYMBOL_TYPE ((*syms)[j].symbol))
5142 && SYMBOL_LINKAGE_NAME ((*syms)[j].symbol) != NULL
5143 && strcmp (SYMBOL_LINKAGE_NAME ((*syms)[i].symbol),
5144 SYMBOL_LINKAGE_NAME ((*syms)[j].symbol)) == 0)
5145 remove_p = 1;
5146 }
5147 }
5148
5149 /* Two symbols with the same name, same class and same address
5150 should be identical. */
5151
5152 else if (SYMBOL_LINKAGE_NAME ((*syms)[i].symbol) != NULL
5153 && SYMBOL_CLASS ((*syms)[i].symbol) == LOC_STATIC
5154 && is_nondebugging_type (SYMBOL_TYPE ((*syms)[i].symbol)))
5155 {
5156 for (j = 0; j < syms->size (); j += 1)
5157 {
5158 if (i != j
5159 && SYMBOL_LINKAGE_NAME ((*syms)[j].symbol) != NULL
5160 && strcmp (SYMBOL_LINKAGE_NAME ((*syms)[i].symbol),
5161 SYMBOL_LINKAGE_NAME ((*syms)[j].symbol)) == 0
5162 && SYMBOL_CLASS ((*syms)[i].symbol)
5163 == SYMBOL_CLASS ((*syms)[j].symbol)
5164 && SYMBOL_VALUE_ADDRESS ((*syms)[i].symbol)
5165 == SYMBOL_VALUE_ADDRESS ((*syms)[j].symbol))
5166 remove_p = 1;
5167 }
5168 }
5169
5170 if (remove_p)
5171 syms->erase (syms->begin () + i);
5172
5173 i += 1;
5174 }
5175
5176 /* If all the remaining symbols are identical enumerals, then
5177 just keep the first one and discard the rest.
5178
5179 Unlike what we did previously, we do not discard any entry
5180 unless they are ALL identical. This is because the symbol
5181 comparison is not a strict comparison, but rather a practical
5182 comparison. If all symbols are considered identical, then
5183 we can just go ahead and use the first one and discard the rest.
5184 But if we cannot reduce the list to a single element, we have
5185 to ask the user to disambiguate anyways. And if we have to
5186 present a multiple-choice menu, it's less confusing if the list
5187 isn't missing some choices that were identical and yet distinct. */
5188 if (symbols_are_identical_enums (*syms))
5189 syms->resize (1);
5190
5191 return syms->size ();
5192 }
5193
5194 /* Given a type that corresponds to a renaming entity, use the type name
5195 to extract the scope (package name or function name, fully qualified,
5196 and following the GNAT encoding convention) where this renaming has been
5197 defined. */
5198
5199 static std::string
5200 xget_renaming_scope (struct type *renaming_type)
5201 {
5202 /* The renaming types adhere to the following convention:
5203 <scope>__<rename>___<XR extension>.
5204 So, to extract the scope, we search for the "___XR" extension,
5205 and then backtrack until we find the first "__". */
5206
5207 const char *name = TYPE_NAME (renaming_type);
5208 const char *suffix = strstr (name, "___XR");
5209 const char *last;
5210
5211 /* Now, backtrack a bit until we find the first "__". Start looking
5212 at suffix - 3, as the <rename> part is at least one character long. */
5213
5214 for (last = suffix - 3; last > name; last--)
5215 if (last[0] == '_' && last[1] == '_')
5216 break;
5217
5218 /* Make a copy of scope and return it. */
5219 return std::string (name, last);
5220 }
5221
5222 /* Return nonzero if NAME corresponds to a package name. */
5223
5224 static int
5225 is_package_name (const char *name)
5226 {
5227 /* Here, We take advantage of the fact that no symbols are generated
5228 for packages, while symbols are generated for each function.
5229 So the condition for NAME represent a package becomes equivalent
5230 to NAME not existing in our list of symbols. There is only one
5231 small complication with library-level functions (see below). */
5232
5233 /* If it is a function that has not been defined at library level,
5234 then we should be able to look it up in the symbols. */
5235 if (standard_lookup (name, NULL, VAR_DOMAIN) != NULL)
5236 return 0;
5237
5238 /* Library-level function names start with "_ada_". See if function
5239 "_ada_" followed by NAME can be found. */
5240
5241 /* Do a quick check that NAME does not contain "__", since library-level
5242 functions names cannot contain "__" in them. */
5243 if (strstr (name, "__") != NULL)
5244 return 0;
5245
5246 std::string fun_name = string_printf ("_ada_%s", name);
5247
5248 return (standard_lookup (fun_name.c_str (), NULL, VAR_DOMAIN) == NULL);
5249 }
5250
5251 /* Return nonzero if SYM corresponds to a renaming entity that is
5252 not visible from FUNCTION_NAME. */
5253
5254 static int
5255 old_renaming_is_invisible (const struct symbol *sym, const char *function_name)
5256 {
5257 if (SYMBOL_CLASS (sym) != LOC_TYPEDEF)
5258 return 0;
5259
5260 std::string scope = xget_renaming_scope (SYMBOL_TYPE (sym));
5261
5262 /* If the rename has been defined in a package, then it is visible. */
5263 if (is_package_name (scope.c_str ()))
5264 return 0;
5265
5266 /* Check that the rename is in the current function scope by checking
5267 that its name starts with SCOPE. */
5268
5269 /* If the function name starts with "_ada_", it means that it is
5270 a library-level function. Strip this prefix before doing the
5271 comparison, as the encoding for the renaming does not contain
5272 this prefix. */
5273 if (startswith (function_name, "_ada_"))
5274 function_name += 5;
5275
5276 return !startswith (function_name, scope.c_str ());
5277 }
5278
5279 /* Remove entries from SYMS that corresponds to a renaming entity that
5280 is not visible from the function associated with CURRENT_BLOCK or
5281 that is superfluous due to the presence of more specific renaming
5282 information. Places surviving symbols in the initial entries of
5283 SYMS and returns the number of surviving symbols.
5284
5285 Rationale:
5286 First, in cases where an object renaming is implemented as a
5287 reference variable, GNAT may produce both the actual reference
5288 variable and the renaming encoding. In this case, we discard the
5289 latter.
5290
5291 Second, GNAT emits a type following a specified encoding for each renaming
5292 entity. Unfortunately, STABS currently does not support the definition
5293 of types that are local to a given lexical block, so all renamings types
5294 are emitted at library level. As a consequence, if an application
5295 contains two renaming entities using the same name, and a user tries to
5296 print the value of one of these entities, the result of the ada symbol
5297 lookup will also contain the wrong renaming type.
5298
5299 This function partially covers for this limitation by attempting to
5300 remove from the SYMS list renaming symbols that should be visible
5301 from CURRENT_BLOCK. However, there does not seem be a 100% reliable
5302 method with the current information available. The implementation
5303 below has a couple of limitations (FIXME: brobecker-2003-05-12):
5304
5305 - When the user tries to print a rename in a function while there
5306 is another rename entity defined in a package: Normally, the
5307 rename in the function has precedence over the rename in the
5308 package, so the latter should be removed from the list. This is
5309 currently not the case.
5310
5311 - This function will incorrectly remove valid renames if
5312 the CURRENT_BLOCK corresponds to a function which symbol name
5313 has been changed by an "Export" pragma. As a consequence,
5314 the user will be unable to print such rename entities. */
5315
5316 static int
5317 remove_irrelevant_renamings (std::vector<struct block_symbol> *syms,
5318 const struct block *current_block)
5319 {
5320 struct symbol *current_function;
5321 const char *current_function_name;
5322 int i;
5323 int is_new_style_renaming;
5324
5325 /* If there is both a renaming foo___XR... encoded as a variable and
5326 a simple variable foo in the same block, discard the latter.
5327 First, zero out such symbols, then compress. */
5328 is_new_style_renaming = 0;
5329 for (i = 0; i < syms->size (); i += 1)
5330 {
5331 struct symbol *sym = (*syms)[i].symbol;
5332 const struct block *block = (*syms)[i].block;
5333 const char *name;
5334 const char *suffix;
5335
5336 if (sym == NULL || SYMBOL_CLASS (sym) == LOC_TYPEDEF)
5337 continue;
5338 name = SYMBOL_LINKAGE_NAME (sym);
5339 suffix = strstr (name, "___XR");
5340
5341 if (suffix != NULL)
5342 {
5343 int name_len = suffix - name;
5344 int j;
5345
5346 is_new_style_renaming = 1;
5347 for (j = 0; j < syms->size (); j += 1)
5348 if (i != j && (*syms)[j].symbol != NULL
5349 && strncmp (name, SYMBOL_LINKAGE_NAME ((*syms)[j].symbol),
5350 name_len) == 0
5351 && block == (*syms)[j].block)
5352 (*syms)[j].symbol = NULL;
5353 }
5354 }
5355 if (is_new_style_renaming)
5356 {
5357 int j, k;
5358
5359 for (j = k = 0; j < syms->size (); j += 1)
5360 if ((*syms)[j].symbol != NULL)
5361 {
5362 (*syms)[k] = (*syms)[j];
5363 k += 1;
5364 }
5365 return k;
5366 }
5367
5368 /* Extract the function name associated to CURRENT_BLOCK.
5369 Abort if unable to do so. */
5370
5371 if (current_block == NULL)
5372 return syms->size ();
5373
5374 current_function = block_linkage_function (current_block);
5375 if (current_function == NULL)
5376 return syms->size ();
5377
5378 current_function_name = SYMBOL_LINKAGE_NAME (current_function);
5379 if (current_function_name == NULL)
5380 return syms->size ();
5381
5382 /* Check each of the symbols, and remove it from the list if it is
5383 a type corresponding to a renaming that is out of the scope of
5384 the current block. */
5385
5386 i = 0;
5387 while (i < syms->size ())
5388 {
5389 if (ada_parse_renaming ((*syms)[i].symbol, NULL, NULL, NULL)
5390 == ADA_OBJECT_RENAMING
5391 && old_renaming_is_invisible ((*syms)[i].symbol,
5392 current_function_name))
5393 syms->erase (syms->begin () + i);
5394 else
5395 i += 1;
5396 }
5397
5398 return syms->size ();
5399 }
5400
5401 /* Add to OBSTACKP all symbols from BLOCK (and its super-blocks)
5402 whose name and domain match NAME and DOMAIN respectively.
5403 If no match was found, then extend the search to "enclosing"
5404 routines (in other words, if we're inside a nested function,
5405 search the symbols defined inside the enclosing functions).
5406 If WILD_MATCH_P is nonzero, perform the naming matching in
5407 "wild" mode (see function "wild_match" for more info).
5408
5409 Note: This function assumes that OBSTACKP has 0 (zero) element in it. */
5410
5411 static void
5412 ada_add_local_symbols (struct obstack *obstackp,
5413 const lookup_name_info &lookup_name,
5414 const struct block *block, domain_enum domain)
5415 {
5416 int block_depth = 0;
5417
5418 while (block != NULL)
5419 {
5420 block_depth += 1;
5421 ada_add_block_symbols (obstackp, block, lookup_name, domain, NULL);
5422
5423 /* If we found a non-function match, assume that's the one. */
5424 if (is_nonfunction (defns_collected (obstackp, 0),
5425 num_defns_collected (obstackp)))
5426 return;
5427
5428 block = BLOCK_SUPERBLOCK (block);
5429 }
5430
5431 /* If no luck so far, try to find NAME as a local symbol in some lexically
5432 enclosing subprogram. */
5433 if (num_defns_collected (obstackp) == 0 && block_depth > 2)
5434 add_symbols_from_enclosing_procs (obstackp, lookup_name, domain);
5435 }
5436
5437 /* An object of this type is used as the user_data argument when
5438 calling the map_matching_symbols method. */
5439
5440 struct match_data
5441 {
5442 struct objfile *objfile;
5443 struct obstack *obstackp;
5444 struct symbol *arg_sym;
5445 int found_sym;
5446 };
5447
5448 /* A callback for add_nonlocal_symbols that adds SYM, found in BLOCK,
5449 to a list of symbols. DATA0 is a pointer to a struct match_data *
5450 containing the obstack that collects the symbol list, the file that SYM
5451 must come from, a flag indicating whether a non-argument symbol has
5452 been found in the current block, and the last argument symbol
5453 passed in SYM within the current block (if any). When SYM is null,
5454 marking the end of a block, the argument symbol is added if no
5455 other has been found. */
5456
5457 static int
5458 aux_add_nonlocal_symbols (const struct block *block, struct symbol *sym,
5459 void *data0)
5460 {
5461 struct match_data *data = (struct match_data *) data0;
5462
5463 if (sym == NULL)
5464 {
5465 if (!data->found_sym && data->arg_sym != NULL)
5466 add_defn_to_vec (data->obstackp,
5467 fixup_symbol_section (data->arg_sym, data->objfile),
5468 block);
5469 data->found_sym = 0;
5470 data->arg_sym = NULL;
5471 }
5472 else
5473 {
5474 if (SYMBOL_CLASS (sym) == LOC_UNRESOLVED)
5475 return 0;
5476 else if (SYMBOL_IS_ARGUMENT (sym))
5477 data->arg_sym = sym;
5478 else
5479 {
5480 data->found_sym = 1;
5481 add_defn_to_vec (data->obstackp,
5482 fixup_symbol_section (sym, data->objfile),
5483 block);
5484 }
5485 }
5486 return 0;
5487 }
5488
5489 /* Helper for add_nonlocal_symbols. Find symbols in DOMAIN which are
5490 targeted by renamings matching LOOKUP_NAME in BLOCK. Add these
5491 symbols to OBSTACKP. Return whether we found such symbols. */
5492
5493 static int
5494 ada_add_block_renamings (struct obstack *obstackp,
5495 const struct block *block,
5496 const lookup_name_info &lookup_name,
5497 domain_enum domain)
5498 {
5499 struct using_direct *renaming;
5500 int defns_mark = num_defns_collected (obstackp);
5501
5502 symbol_name_matcher_ftype *name_match
5503 = ada_get_symbol_name_matcher (lookup_name);
5504
5505 for (renaming = block_using (block);
5506 renaming != NULL;
5507 renaming = renaming->next)
5508 {
5509 const char *r_name;
5510
5511 /* Avoid infinite recursions: skip this renaming if we are actually
5512 already traversing it.
5513
5514 Currently, symbol lookup in Ada don't use the namespace machinery from
5515 C++/Fortran support: skip namespace imports that use them. */
5516 if (renaming->searched
5517 || (renaming->import_src != NULL
5518 && renaming->import_src[0] != '\0')
5519 || (renaming->import_dest != NULL
5520 && renaming->import_dest[0] != '\0'))
5521 continue;
5522 renaming->searched = 1;
5523
5524 /* TODO: here, we perform another name-based symbol lookup, which can
5525 pull its own multiple overloads. In theory, we should be able to do
5526 better in this case since, in DWARF, DW_AT_import is a DIE reference,
5527 not a simple name. But in order to do this, we would need to enhance
5528 the DWARF reader to associate a symbol to this renaming, instead of a
5529 name. So, for now, we do something simpler: re-use the C++/Fortran
5530 namespace machinery. */
5531 r_name = (renaming->alias != NULL
5532 ? renaming->alias
5533 : renaming->declaration);
5534 if (name_match (r_name, lookup_name, NULL))
5535 {
5536 lookup_name_info decl_lookup_name (renaming->declaration,
5537 lookup_name.match_type ());
5538 ada_add_all_symbols (obstackp, block, decl_lookup_name, domain,
5539 1, NULL);
5540 }
5541 renaming->searched = 0;
5542 }
5543 return num_defns_collected (obstackp) != defns_mark;
5544 }
5545
5546 /* Implements compare_names, but only applying the comparision using
5547 the given CASING. */
5548
5549 static int
5550 compare_names_with_case (const char *string1, const char *string2,
5551 enum case_sensitivity casing)
5552 {
5553 while (*string1 != '\0' && *string2 != '\0')
5554 {
5555 char c1, c2;
5556
5557 if (isspace (*string1) || isspace (*string2))
5558 return strcmp_iw_ordered (string1, string2);
5559
5560 if (casing == case_sensitive_off)
5561 {
5562 c1 = tolower (*string1);
5563 c2 = tolower (*string2);
5564 }
5565 else
5566 {
5567 c1 = *string1;
5568 c2 = *string2;
5569 }
5570 if (c1 != c2)
5571 break;
5572
5573 string1 += 1;
5574 string2 += 1;
5575 }
5576
5577 switch (*string1)
5578 {
5579 case '(':
5580 return strcmp_iw_ordered (string1, string2);
5581 case '_':
5582 if (*string2 == '\0')
5583 {
5584 if (is_name_suffix (string1))
5585 return 0;
5586 else
5587 return 1;
5588 }
5589 /* FALLTHROUGH */
5590 default:
5591 if (*string2 == '(')
5592 return strcmp_iw_ordered (string1, string2);
5593 else
5594 {
5595 if (casing == case_sensitive_off)
5596 return tolower (*string1) - tolower (*string2);
5597 else
5598 return *string1 - *string2;
5599 }
5600 }
5601 }
5602
5603 /* Compare STRING1 to STRING2, with results as for strcmp.
5604 Compatible with strcmp_iw_ordered in that...
5605
5606 strcmp_iw_ordered (STRING1, STRING2) <= 0
5607
5608 ... implies...
5609
5610 compare_names (STRING1, STRING2) <= 0
5611
5612 (they may differ as to what symbols compare equal). */
5613
5614 static int
5615 compare_names (const char *string1, const char *string2)
5616 {
5617 int result;
5618
5619 /* Similar to what strcmp_iw_ordered does, we need to perform
5620 a case-insensitive comparison first, and only resort to
5621 a second, case-sensitive, comparison if the first one was
5622 not sufficient to differentiate the two strings. */
5623
5624 result = compare_names_with_case (string1, string2, case_sensitive_off);
5625 if (result == 0)
5626 result = compare_names_with_case (string1, string2, case_sensitive_on);
5627
5628 return result;
5629 }
5630
5631 /* Convenience function to get at the Ada encoded lookup name for
5632 LOOKUP_NAME, as a C string. */
5633
5634 static const char *
5635 ada_lookup_name (const lookup_name_info &lookup_name)
5636 {
5637 return lookup_name.ada ().lookup_name ().c_str ();
5638 }
5639
5640 /* Add to OBSTACKP all non-local symbols whose name and domain match
5641 LOOKUP_NAME and DOMAIN respectively. The search is performed on
5642 GLOBAL_BLOCK symbols if GLOBAL is non-zero, or on STATIC_BLOCK
5643 symbols otherwise. */
5644
5645 static void
5646 add_nonlocal_symbols (struct obstack *obstackp,
5647 const lookup_name_info &lookup_name,
5648 domain_enum domain, int global)
5649 {
5650 struct match_data data;
5651
5652 memset (&data, 0, sizeof data);
5653 data.obstackp = obstackp;
5654
5655 bool is_wild_match = lookup_name.ada ().wild_match_p ();
5656
5657 for (objfile *objfile : current_program_space->objfiles ())
5658 {
5659 data.objfile = objfile;
5660
5661 if (is_wild_match)
5662 objfile->sf->qf->map_matching_symbols (objfile, lookup_name.name ().c_str (),
5663 domain, global,
5664 aux_add_nonlocal_symbols, &data,
5665 symbol_name_match_type::WILD,
5666 NULL);
5667 else
5668 objfile->sf->qf->map_matching_symbols (objfile, lookup_name.name ().c_str (),
5669 domain, global,
5670 aux_add_nonlocal_symbols, &data,
5671 symbol_name_match_type::FULL,
5672 compare_names);
5673
5674 for (compunit_symtab *cu : objfile->compunits ())
5675 {
5676 const struct block *global_block
5677 = BLOCKVECTOR_BLOCK (COMPUNIT_BLOCKVECTOR (cu), GLOBAL_BLOCK);
5678
5679 if (ada_add_block_renamings (obstackp, global_block, lookup_name,
5680 domain))
5681 data.found_sym = 1;
5682 }
5683 }
5684
5685 if (num_defns_collected (obstackp) == 0 && global && !is_wild_match)
5686 {
5687 const char *name = ada_lookup_name (lookup_name);
5688 std::string name1 = std::string ("<_ada_") + name + '>';
5689
5690 for (objfile *objfile : current_program_space->objfiles ())
5691 {
5692 data.objfile = objfile;
5693 objfile->sf->qf->map_matching_symbols (objfile, name1.c_str (),
5694 domain, global,
5695 aux_add_nonlocal_symbols,
5696 &data,
5697 symbol_name_match_type::FULL,
5698 compare_names);
5699 }
5700 }
5701 }
5702
5703 /* Find symbols in DOMAIN matching LOOKUP_NAME, in BLOCK and, if
5704 FULL_SEARCH is non-zero, enclosing scope and in global scopes,
5705 returning the number of matches. Add these to OBSTACKP.
5706
5707 When FULL_SEARCH is non-zero, any non-function/non-enumeral
5708 symbol match within the nest of blocks whose innermost member is BLOCK,
5709 is the one match returned (no other matches in that or
5710 enclosing blocks is returned). If there are any matches in or
5711 surrounding BLOCK, then these alone are returned.
5712
5713 Names prefixed with "standard__" are handled specially:
5714 "standard__" is first stripped off (by the lookup_name
5715 constructor), and only static and global symbols are searched.
5716
5717 If MADE_GLOBAL_LOOKUP_P is non-null, set it before return to whether we had
5718 to lookup global symbols. */
5719
5720 static void
5721 ada_add_all_symbols (struct obstack *obstackp,
5722 const struct block *block,
5723 const lookup_name_info &lookup_name,
5724 domain_enum domain,
5725 int full_search,
5726 int *made_global_lookup_p)
5727 {
5728 struct symbol *sym;
5729
5730 if (made_global_lookup_p)
5731 *made_global_lookup_p = 0;
5732
5733 /* Special case: If the user specifies a symbol name inside package
5734 Standard, do a non-wild matching of the symbol name without
5735 the "standard__" prefix. This was primarily introduced in order
5736 to allow the user to specifically access the standard exceptions
5737 using, for instance, Standard.Constraint_Error when Constraint_Error
5738 is ambiguous (due to the user defining its own Constraint_Error
5739 entity inside its program). */
5740 if (lookup_name.ada ().standard_p ())
5741 block = NULL;
5742
5743 /* Check the non-global symbols. If we have ANY match, then we're done. */
5744
5745 if (block != NULL)
5746 {
5747 if (full_search)
5748 ada_add_local_symbols (obstackp, lookup_name, block, domain);
5749 else
5750 {
5751 /* In the !full_search case we're are being called by
5752 ada_iterate_over_symbols, and we don't want to search
5753 superblocks. */
5754 ada_add_block_symbols (obstackp, block, lookup_name, domain, NULL);
5755 }
5756 if (num_defns_collected (obstackp) > 0 || !full_search)
5757 return;
5758 }
5759
5760 /* No non-global symbols found. Check our cache to see if we have
5761 already performed this search before. If we have, then return
5762 the same result. */
5763
5764 if (lookup_cached_symbol (ada_lookup_name (lookup_name),
5765 domain, &sym, &block))
5766 {
5767 if (sym != NULL)
5768 add_defn_to_vec (obstackp, sym, block);
5769 return;
5770 }
5771
5772 if (made_global_lookup_p)
5773 *made_global_lookup_p = 1;
5774
5775 /* Search symbols from all global blocks. */
5776
5777 add_nonlocal_symbols (obstackp, lookup_name, domain, 1);
5778
5779 /* Now add symbols from all per-file blocks if we've gotten no hits
5780 (not strictly correct, but perhaps better than an error). */
5781
5782 if (num_defns_collected (obstackp) == 0)
5783 add_nonlocal_symbols (obstackp, lookup_name, domain, 0);
5784 }
5785
5786 /* Find symbols in DOMAIN matching LOOKUP_NAME, in BLOCK and, if FULL_SEARCH
5787 is non-zero, enclosing scope and in global scopes, returning the number of
5788 matches.
5789 Fills *RESULTS with (SYM,BLOCK) tuples, indicating the symbols
5790 found and the blocks and symbol tables (if any) in which they were
5791 found.
5792
5793 When full_search is non-zero, any non-function/non-enumeral
5794 symbol match within the nest of blocks whose innermost member is BLOCK,
5795 is the one match returned (no other matches in that or
5796 enclosing blocks is returned). If there are any matches in or
5797 surrounding BLOCK, then these alone are returned.
5798
5799 Names prefixed with "standard__" are handled specially: "standard__"
5800 is first stripped off, and only static and global symbols are searched. */
5801
5802 static int
5803 ada_lookup_symbol_list_worker (const lookup_name_info &lookup_name,
5804 const struct block *block,
5805 domain_enum domain,
5806 std::vector<struct block_symbol> *results,
5807 int full_search)
5808 {
5809 int syms_from_global_search;
5810 int ndefns;
5811 auto_obstack obstack;
5812
5813 ada_add_all_symbols (&obstack, block, lookup_name,
5814 domain, full_search, &syms_from_global_search);
5815
5816 ndefns = num_defns_collected (&obstack);
5817
5818 struct block_symbol *base = defns_collected (&obstack, 1);
5819 for (int i = 0; i < ndefns; ++i)
5820 results->push_back (base[i]);
5821
5822 ndefns = remove_extra_symbols (results);
5823
5824 if (ndefns == 0 && full_search && syms_from_global_search)
5825 cache_symbol (ada_lookup_name (lookup_name), domain, NULL, NULL);
5826
5827 if (ndefns == 1 && full_search && syms_from_global_search)
5828 cache_symbol (ada_lookup_name (lookup_name), domain,
5829 (*results)[0].symbol, (*results)[0].block);
5830
5831 ndefns = remove_irrelevant_renamings (results, block);
5832
5833 return ndefns;
5834 }
5835
5836 /* Find symbols in DOMAIN matching NAME, in BLOCK and enclosing scope and
5837 in global scopes, returning the number of matches, and filling *RESULTS
5838 with (SYM,BLOCK) tuples.
5839
5840 See ada_lookup_symbol_list_worker for further details. */
5841
5842 int
5843 ada_lookup_symbol_list (const char *name, const struct block *block,
5844 domain_enum domain,
5845 std::vector<struct block_symbol> *results)
5846 {
5847 symbol_name_match_type name_match_type = name_match_type_from_name (name);
5848 lookup_name_info lookup_name (name, name_match_type);
5849
5850 return ada_lookup_symbol_list_worker (lookup_name, block, domain, results, 1);
5851 }
5852
5853 /* Implementation of the la_iterate_over_symbols method. */
5854
5855 static void
5856 ada_iterate_over_symbols
5857 (const struct block *block, const lookup_name_info &name,
5858 domain_enum domain,
5859 gdb::function_view<symbol_found_callback_ftype> callback)
5860 {
5861 int ndefs, i;
5862 std::vector<struct block_symbol> results;
5863
5864 ndefs = ada_lookup_symbol_list_worker (name, block, domain, &results, 0);
5865
5866 for (i = 0; i < ndefs; ++i)
5867 {
5868 if (!callback (&results[i]))
5869 break;
5870 }
5871 }
5872
5873 /* The result is as for ada_lookup_symbol_list with FULL_SEARCH set
5874 to 1, but choosing the first symbol found if there are multiple
5875 choices.
5876
5877 The result is stored in *INFO, which must be non-NULL.
5878 If no match is found, INFO->SYM is set to NULL. */
5879
5880 void
5881 ada_lookup_encoded_symbol (const char *name, const struct block *block,
5882 domain_enum domain,
5883 struct block_symbol *info)
5884 {
5885 /* Since we already have an encoded name, wrap it in '<>' to force a
5886 verbatim match. Otherwise, if the name happens to not look like
5887 an encoded name (because it doesn't include a "__"),
5888 ada_lookup_name_info would re-encode/fold it again, and that
5889 would e.g., incorrectly lowercase object renaming names like
5890 "R28b" -> "r28b". */
5891 std::string verbatim = std::string ("<") + name + '>';
5892
5893 gdb_assert (info != NULL);
5894 *info = ada_lookup_symbol (verbatim.c_str (), block, domain, NULL);
5895 }
5896
5897 /* Return a symbol in DOMAIN matching NAME, in BLOCK0 and enclosing
5898 scope and in global scopes, or NULL if none. NAME is folded and
5899 encoded first. Otherwise, the result is as for ada_lookup_symbol_list,
5900 choosing the first symbol if there are multiple choices.
5901 If IS_A_FIELD_OF_THIS is not NULL, it is set to zero. */
5902
5903 struct block_symbol
5904 ada_lookup_symbol (const char *name, const struct block *block0,
5905 domain_enum domain, int *is_a_field_of_this)
5906 {
5907 if (is_a_field_of_this != NULL)
5908 *is_a_field_of_this = 0;
5909
5910 std::vector<struct block_symbol> candidates;
5911 int n_candidates;
5912
5913 n_candidates = ada_lookup_symbol_list (name, block0, domain, &candidates);
5914
5915 if (n_candidates == 0)
5916 return {};
5917
5918 block_symbol info = candidates[0];
5919 info.symbol = fixup_symbol_section (info.symbol, NULL);
5920 return info;
5921 }
5922
5923 static struct block_symbol
5924 ada_lookup_symbol_nonlocal (const struct language_defn *langdef,
5925 const char *name,
5926 const struct block *block,
5927 const domain_enum domain)
5928 {
5929 struct block_symbol sym;
5930
5931 sym = ada_lookup_symbol (name, block_static_block (block), domain, NULL);
5932 if (sym.symbol != NULL)
5933 return sym;
5934
5935 /* If we haven't found a match at this point, try the primitive
5936 types. In other languages, this search is performed before
5937 searching for global symbols in order to short-circuit that
5938 global-symbol search if it happens that the name corresponds
5939 to a primitive type. But we cannot do the same in Ada, because
5940 it is perfectly legitimate for a program to declare a type which
5941 has the same name as a standard type. If looking up a type in
5942 that situation, we have traditionally ignored the primitive type
5943 in favor of user-defined types. This is why, unlike most other
5944 languages, we search the primitive types this late and only after
5945 having searched the global symbols without success. */
5946
5947 if (domain == VAR_DOMAIN)
5948 {
5949 struct gdbarch *gdbarch;
5950
5951 if (block == NULL)
5952 gdbarch = target_gdbarch ();
5953 else
5954 gdbarch = block_gdbarch (block);
5955 sym.symbol = language_lookup_primitive_type_as_symbol (langdef, gdbarch, name);
5956 if (sym.symbol != NULL)
5957 return sym;
5958 }
5959
5960 return {};
5961 }
5962
5963
5964 /* True iff STR is a possible encoded suffix of a normal Ada name
5965 that is to be ignored for matching purposes. Suffixes of parallel
5966 names (e.g., XVE) are not included here. Currently, the possible suffixes
5967 are given by any of the regular expressions:
5968
5969 [.$][0-9]+ [nested subprogram suffix, on platforms such as GNU/Linux]
5970 ___[0-9]+ [nested subprogram suffix, on platforms such as HP/UX]
5971 TKB [subprogram suffix for task bodies]
5972 _E[0-9]+[bs]$ [protected object entry suffixes]
5973 (X[nb]*)?((\$|__)[0-9](_?[0-9]+)|___(JM|LJM|X([FDBUP].*|R[^T]?)))?$
5974
5975 Also, any leading "__[0-9]+" sequence is skipped before the suffix
5976 match is performed. This sequence is used to differentiate homonyms,
5977 is an optional part of a valid name suffix. */
5978
5979 static int
5980 is_name_suffix (const char *str)
5981 {
5982 int k;
5983 const char *matching;
5984 const int len = strlen (str);
5985
5986 /* Skip optional leading __[0-9]+. */
5987
5988 if (len > 3 && str[0] == '_' && str[1] == '_' && isdigit (str[2]))
5989 {
5990 str += 3;
5991 while (isdigit (str[0]))
5992 str += 1;
5993 }
5994
5995 /* [.$][0-9]+ */
5996
5997 if (str[0] == '.' || str[0] == '$')
5998 {
5999 matching = str + 1;
6000 while (isdigit (matching[0]))
6001 matching += 1;
6002 if (matching[0] == '\0')
6003 return 1;
6004 }
6005
6006 /* ___[0-9]+ */
6007
6008 if (len > 3 && str[0] == '_' && str[1] == '_' && str[2] == '_')
6009 {
6010 matching = str + 3;
6011 while (isdigit (matching[0]))
6012 matching += 1;
6013 if (matching[0] == '\0')
6014 return 1;
6015 }
6016
6017 /* "TKB" suffixes are used for subprograms implementing task bodies. */
6018
6019 if (strcmp (str, "TKB") == 0)
6020 return 1;
6021
6022 #if 0
6023 /* FIXME: brobecker/2005-09-23: Protected Object subprograms end
6024 with a N at the end. Unfortunately, the compiler uses the same
6025 convention for other internal types it creates. So treating
6026 all entity names that end with an "N" as a name suffix causes
6027 some regressions. For instance, consider the case of an enumerated
6028 type. To support the 'Image attribute, it creates an array whose
6029 name ends with N.
6030 Having a single character like this as a suffix carrying some
6031 information is a bit risky. Perhaps we should change the encoding
6032 to be something like "_N" instead. In the meantime, do not do
6033 the following check. */
6034 /* Protected Object Subprograms */
6035 if (len == 1 && str [0] == 'N')
6036 return 1;
6037 #endif
6038
6039 /* _E[0-9]+[bs]$ */
6040 if (len > 3 && str[0] == '_' && str [1] == 'E' && isdigit (str[2]))
6041 {
6042 matching = str + 3;
6043 while (isdigit (matching[0]))
6044 matching += 1;
6045 if ((matching[0] == 'b' || matching[0] == 's')
6046 && matching [1] == '\0')
6047 return 1;
6048 }
6049
6050 /* ??? We should not modify STR directly, as we are doing below. This
6051 is fine in this case, but may become problematic later if we find
6052 that this alternative did not work, and want to try matching
6053 another one from the begining of STR. Since we modified it, we
6054 won't be able to find the begining of the string anymore! */
6055 if (str[0] == 'X')
6056 {
6057 str += 1;
6058 while (str[0] != '_' && str[0] != '\0')
6059 {
6060 if (str[0] != 'n' && str[0] != 'b')
6061 return 0;
6062 str += 1;
6063 }
6064 }
6065
6066 if (str[0] == '\000')
6067 return 1;
6068
6069 if (str[0] == '_')
6070 {
6071 if (str[1] != '_' || str[2] == '\000')
6072 return 0;
6073 if (str[2] == '_')
6074 {
6075 if (strcmp (str + 3, "JM") == 0)
6076 return 1;
6077 /* FIXME: brobecker/2004-09-30: GNAT will soon stop using
6078 the LJM suffix in favor of the JM one. But we will
6079 still accept LJM as a valid suffix for a reasonable
6080 amount of time, just to allow ourselves to debug programs
6081 compiled using an older version of GNAT. */
6082 if (strcmp (str + 3, "LJM") == 0)
6083 return 1;
6084 if (str[3] != 'X')
6085 return 0;
6086 if (str[4] == 'F' || str[4] == 'D' || str[4] == 'B'
6087 || str[4] == 'U' || str[4] == 'P')
6088 return 1;
6089 if (str[4] == 'R' && str[5] != 'T')
6090 return 1;
6091 return 0;
6092 }
6093 if (!isdigit (str[2]))
6094 return 0;
6095 for (k = 3; str[k] != '\0'; k += 1)
6096 if (!isdigit (str[k]) && str[k] != '_')
6097 return 0;
6098 return 1;
6099 }
6100 if (str[0] == '$' && isdigit (str[1]))
6101 {
6102 for (k = 2; str[k] != '\0'; k += 1)
6103 if (!isdigit (str[k]) && str[k] != '_')
6104 return 0;
6105 return 1;
6106 }
6107 return 0;
6108 }
6109
6110 /* Return non-zero if the string starting at NAME and ending before
6111 NAME_END contains no capital letters. */
6112
6113 static int
6114 is_valid_name_for_wild_match (const char *name0)
6115 {
6116 const char *decoded_name = ada_decode (name0);
6117 int i;
6118
6119 /* If the decoded name starts with an angle bracket, it means that
6120 NAME0 does not follow the GNAT encoding format. It should then
6121 not be allowed as a possible wild match. */
6122 if (decoded_name[0] == '<')
6123 return 0;
6124
6125 for (i=0; decoded_name[i] != '\0'; i++)
6126 if (isalpha (decoded_name[i]) && !islower (decoded_name[i]))
6127 return 0;
6128
6129 return 1;
6130 }
6131
6132 /* Advance *NAMEP to next occurrence of TARGET0 in the string NAME0
6133 that could start a simple name. Assumes that *NAMEP points into
6134 the string beginning at NAME0. */
6135
6136 static int
6137 advance_wild_match (const char **namep, const char *name0, int target0)
6138 {
6139 const char *name = *namep;
6140
6141 while (1)
6142 {
6143 int t0, t1;
6144
6145 t0 = *name;
6146 if (t0 == '_')
6147 {
6148 t1 = name[1];
6149 if ((t1 >= 'a' && t1 <= 'z') || (t1 >= '0' && t1 <= '9'))
6150 {
6151 name += 1;
6152 if (name == name0 + 5 && startswith (name0, "_ada"))
6153 break;
6154 else
6155 name += 1;
6156 }
6157 else if (t1 == '_' && ((name[2] >= 'a' && name[2] <= 'z')
6158 || name[2] == target0))
6159 {
6160 name += 2;
6161 break;
6162 }
6163 else
6164 return 0;
6165 }
6166 else if ((t0 >= 'a' && t0 <= 'z') || (t0 >= '0' && t0 <= '9'))
6167 name += 1;
6168 else
6169 return 0;
6170 }
6171
6172 *namep = name;
6173 return 1;
6174 }
6175
6176 /* Return true iff NAME encodes a name of the form prefix.PATN.
6177 Ignores any informational suffixes of NAME (i.e., for which
6178 is_name_suffix is true). Assumes that PATN is a lower-cased Ada
6179 simple name. */
6180
6181 static bool
6182 wild_match (const char *name, const char *patn)
6183 {
6184 const char *p;
6185 const char *name0 = name;
6186
6187 while (1)
6188 {
6189 const char *match = name;
6190
6191 if (*name == *patn)
6192 {
6193 for (name += 1, p = patn + 1; *p != '\0'; name += 1, p += 1)
6194 if (*p != *name)
6195 break;
6196 if (*p == '\0' && is_name_suffix (name))
6197 return match == name0 || is_valid_name_for_wild_match (name0);
6198
6199 if (name[-1] == '_')
6200 name -= 1;
6201 }
6202 if (!advance_wild_match (&name, name0, *patn))
6203 return false;
6204 }
6205 }
6206
6207 /* Returns true iff symbol name SYM_NAME matches SEARCH_NAME, ignoring
6208 any trailing suffixes that encode debugging information or leading
6209 _ada_ on SYM_NAME (see is_name_suffix commentary for the debugging
6210 information that is ignored). */
6211
6212 static bool
6213 full_match (const char *sym_name, const char *search_name)
6214 {
6215 size_t search_name_len = strlen (search_name);
6216
6217 if (strncmp (sym_name, search_name, search_name_len) == 0
6218 && is_name_suffix (sym_name + search_name_len))
6219 return true;
6220
6221 if (startswith (sym_name, "_ada_")
6222 && strncmp (sym_name + 5, search_name, search_name_len) == 0
6223 && is_name_suffix (sym_name + search_name_len + 5))
6224 return true;
6225
6226 return false;
6227 }
6228
6229 /* Add symbols from BLOCK matching LOOKUP_NAME in DOMAIN to vector
6230 *defn_symbols, updating the list of symbols in OBSTACKP (if
6231 necessary). OBJFILE is the section containing BLOCK. */
6232
6233 static void
6234 ada_add_block_symbols (struct obstack *obstackp,
6235 const struct block *block,
6236 const lookup_name_info &lookup_name,
6237 domain_enum domain, struct objfile *objfile)
6238 {
6239 struct block_iterator iter;
6240 /* A matching argument symbol, if any. */
6241 struct symbol *arg_sym;
6242 /* Set true when we find a matching non-argument symbol. */
6243 int found_sym;
6244 struct symbol *sym;
6245
6246 arg_sym = NULL;
6247 found_sym = 0;
6248 for (sym = block_iter_match_first (block, lookup_name, &iter);
6249 sym != NULL;
6250 sym = block_iter_match_next (lookup_name, &iter))
6251 {
6252 if (symbol_matches_domain (SYMBOL_LANGUAGE (sym),
6253 SYMBOL_DOMAIN (sym), domain))
6254 {
6255 if (SYMBOL_CLASS (sym) != LOC_UNRESOLVED)
6256 {
6257 if (SYMBOL_IS_ARGUMENT (sym))
6258 arg_sym = sym;
6259 else
6260 {
6261 found_sym = 1;
6262 add_defn_to_vec (obstackp,
6263 fixup_symbol_section (sym, objfile),
6264 block);
6265 }
6266 }
6267 }
6268 }
6269
6270 /* Handle renamings. */
6271
6272 if (ada_add_block_renamings (obstackp, block, lookup_name, domain))
6273 found_sym = 1;
6274
6275 if (!found_sym && arg_sym != NULL)
6276 {
6277 add_defn_to_vec (obstackp,
6278 fixup_symbol_section (arg_sym, objfile),
6279 block);
6280 }
6281
6282 if (!lookup_name.ada ().wild_match_p ())
6283 {
6284 arg_sym = NULL;
6285 found_sym = 0;
6286 const std::string &ada_lookup_name = lookup_name.ada ().lookup_name ();
6287 const char *name = ada_lookup_name.c_str ();
6288 size_t name_len = ada_lookup_name.size ();
6289
6290 ALL_BLOCK_SYMBOLS (block, iter, sym)
6291 {
6292 if (symbol_matches_domain (SYMBOL_LANGUAGE (sym),
6293 SYMBOL_DOMAIN (sym), domain))
6294 {
6295 int cmp;
6296
6297 cmp = (int) '_' - (int) SYMBOL_LINKAGE_NAME (sym)[0];
6298 if (cmp == 0)
6299 {
6300 cmp = !startswith (SYMBOL_LINKAGE_NAME (sym), "_ada_");
6301 if (cmp == 0)
6302 cmp = strncmp (name, SYMBOL_LINKAGE_NAME (sym) + 5,
6303 name_len);
6304 }
6305
6306 if (cmp == 0
6307 && is_name_suffix (SYMBOL_LINKAGE_NAME (sym) + name_len + 5))
6308 {
6309 if (SYMBOL_CLASS (sym) != LOC_UNRESOLVED)
6310 {
6311 if (SYMBOL_IS_ARGUMENT (sym))
6312 arg_sym = sym;
6313 else
6314 {
6315 found_sym = 1;
6316 add_defn_to_vec (obstackp,
6317 fixup_symbol_section (sym, objfile),
6318 block);
6319 }
6320 }
6321 }
6322 }
6323 }
6324
6325 /* NOTE: This really shouldn't be needed for _ada_ symbols.
6326 They aren't parameters, right? */
6327 if (!found_sym && arg_sym != NULL)
6328 {
6329 add_defn_to_vec (obstackp,
6330 fixup_symbol_section (arg_sym, objfile),
6331 block);
6332 }
6333 }
6334 }
6335 \f
6336
6337 /* Symbol Completion */
6338
6339 /* See symtab.h. */
6340
6341 bool
6342 ada_lookup_name_info::matches
6343 (const char *sym_name,
6344 symbol_name_match_type match_type,
6345 completion_match_result *comp_match_res) const
6346 {
6347 bool match = false;
6348 const char *text = m_encoded_name.c_str ();
6349 size_t text_len = m_encoded_name.size ();
6350
6351 /* First, test against the fully qualified name of the symbol. */
6352
6353 if (strncmp (sym_name, text, text_len) == 0)
6354 match = true;
6355
6356 if (match && !m_encoded_p)
6357 {
6358 /* One needed check before declaring a positive match is to verify
6359 that iff we are doing a verbatim match, the decoded version
6360 of the symbol name starts with '<'. Otherwise, this symbol name
6361 is not a suitable completion. */
6362 const char *sym_name_copy = sym_name;
6363 bool has_angle_bracket;
6364
6365 sym_name = ada_decode (sym_name);
6366 has_angle_bracket = (sym_name[0] == '<');
6367 match = (has_angle_bracket == m_verbatim_p);
6368 sym_name = sym_name_copy;
6369 }
6370
6371 if (match && !m_verbatim_p)
6372 {
6373 /* When doing non-verbatim match, another check that needs to
6374 be done is to verify that the potentially matching symbol name
6375 does not include capital letters, because the ada-mode would
6376 not be able to understand these symbol names without the
6377 angle bracket notation. */
6378 const char *tmp;
6379
6380 for (tmp = sym_name; *tmp != '\0' && !isupper (*tmp); tmp++);
6381 if (*tmp != '\0')
6382 match = false;
6383 }
6384
6385 /* Second: Try wild matching... */
6386
6387 if (!match && m_wild_match_p)
6388 {
6389 /* Since we are doing wild matching, this means that TEXT
6390 may represent an unqualified symbol name. We therefore must
6391 also compare TEXT against the unqualified name of the symbol. */
6392 sym_name = ada_unqualified_name (ada_decode (sym_name));
6393
6394 if (strncmp (sym_name, text, text_len) == 0)
6395 match = true;
6396 }
6397
6398 /* Finally: If we found a match, prepare the result to return. */
6399
6400 if (!match)
6401 return false;
6402
6403 if (comp_match_res != NULL)
6404 {
6405 std::string &match_str = comp_match_res->match.storage ();
6406
6407 if (!m_encoded_p)
6408 match_str = ada_decode (sym_name);
6409 else
6410 {
6411 if (m_verbatim_p)
6412 match_str = add_angle_brackets (sym_name);
6413 else
6414 match_str = sym_name;
6415
6416 }
6417
6418 comp_match_res->set_match (match_str.c_str ());
6419 }
6420
6421 return true;
6422 }
6423
6424 /* Add the list of possible symbol names completing TEXT to TRACKER.
6425 WORD is the entire command on which completion is made. */
6426
6427 static void
6428 ada_collect_symbol_completion_matches (completion_tracker &tracker,
6429 complete_symbol_mode mode,
6430 symbol_name_match_type name_match_type,
6431 const char *text, const char *word,
6432 enum type_code code)
6433 {
6434 struct symbol *sym;
6435 const struct block *b, *surrounding_static_block = 0;
6436 struct block_iterator iter;
6437
6438 gdb_assert (code == TYPE_CODE_UNDEF);
6439
6440 lookup_name_info lookup_name (text, name_match_type, true);
6441
6442 /* First, look at the partial symtab symbols. */
6443 expand_symtabs_matching (NULL,
6444 lookup_name,
6445 NULL,
6446 NULL,
6447 ALL_DOMAIN);
6448
6449 /* At this point scan through the misc symbol vectors and add each
6450 symbol you find to the list. Eventually we want to ignore
6451 anything that isn't a text symbol (everything else will be
6452 handled by the psymtab code above). */
6453
6454 for (objfile *objfile : current_program_space->objfiles ())
6455 {
6456 for (minimal_symbol *msymbol : objfile->msymbols ())
6457 {
6458 QUIT;
6459
6460 if (completion_skip_symbol (mode, msymbol))
6461 continue;
6462
6463 language symbol_language = MSYMBOL_LANGUAGE (msymbol);
6464
6465 /* Ada minimal symbols won't have their language set to Ada. If
6466 we let completion_list_add_name compare using the
6467 default/C-like matcher, then when completing e.g., symbols in a
6468 package named "pck", we'd match internal Ada symbols like
6469 "pckS", which are invalid in an Ada expression, unless you wrap
6470 them in '<' '>' to request a verbatim match.
6471
6472 Unfortunately, some Ada encoded names successfully demangle as
6473 C++ symbols (using an old mangling scheme), such as "name__2Xn"
6474 -> "Xn::name(void)" and thus some Ada minimal symbols end up
6475 with the wrong language set. Paper over that issue here. */
6476 if (symbol_language == language_auto
6477 || symbol_language == language_cplus)
6478 symbol_language = language_ada;
6479
6480 completion_list_add_name (tracker,
6481 symbol_language,
6482 MSYMBOL_LINKAGE_NAME (msymbol),
6483 lookup_name, text, word);
6484 }
6485 }
6486
6487 /* Search upwards from currently selected frame (so that we can
6488 complete on local vars. */
6489
6490 for (b = get_selected_block (0); b != NULL; b = BLOCK_SUPERBLOCK (b))
6491 {
6492 if (!BLOCK_SUPERBLOCK (b))
6493 surrounding_static_block = b; /* For elmin of dups */
6494
6495 ALL_BLOCK_SYMBOLS (b, iter, sym)
6496 {
6497 if (completion_skip_symbol (mode, sym))
6498 continue;
6499
6500 completion_list_add_name (tracker,
6501 SYMBOL_LANGUAGE (sym),
6502 SYMBOL_LINKAGE_NAME (sym),
6503 lookup_name, text, word);
6504 }
6505 }
6506
6507 /* Go through the symtabs and check the externs and statics for
6508 symbols which match. */
6509
6510 for (objfile *objfile : current_program_space->objfiles ())
6511 {
6512 for (compunit_symtab *s : objfile->compunits ())
6513 {
6514 QUIT;
6515 b = BLOCKVECTOR_BLOCK (COMPUNIT_BLOCKVECTOR (s), GLOBAL_BLOCK);
6516 ALL_BLOCK_SYMBOLS (b, iter, sym)
6517 {
6518 if (completion_skip_symbol (mode, sym))
6519 continue;
6520
6521 completion_list_add_name (tracker,
6522 SYMBOL_LANGUAGE (sym),
6523 SYMBOL_LINKAGE_NAME (sym),
6524 lookup_name, text, word);
6525 }
6526 }
6527 }
6528
6529 for (objfile *objfile : current_program_space->objfiles ())
6530 {
6531 for (compunit_symtab *s : objfile->compunits ())
6532 {
6533 QUIT;
6534 b = BLOCKVECTOR_BLOCK (COMPUNIT_BLOCKVECTOR (s), STATIC_BLOCK);
6535 /* Don't do this block twice. */
6536 if (b == surrounding_static_block)
6537 continue;
6538 ALL_BLOCK_SYMBOLS (b, iter, sym)
6539 {
6540 if (completion_skip_symbol (mode, sym))
6541 continue;
6542
6543 completion_list_add_name (tracker,
6544 SYMBOL_LANGUAGE (sym),
6545 SYMBOL_LINKAGE_NAME (sym),
6546 lookup_name, text, word);
6547 }
6548 }
6549 }
6550 }
6551
6552 /* Field Access */
6553
6554 /* Return non-zero if TYPE is a pointer to the GNAT dispatch table used
6555 for tagged types. */
6556
6557 static int
6558 ada_is_dispatch_table_ptr_type (struct type *type)
6559 {
6560 const char *name;
6561
6562 if (TYPE_CODE (type) != TYPE_CODE_PTR)
6563 return 0;
6564
6565 name = TYPE_NAME (TYPE_TARGET_TYPE (type));
6566 if (name == NULL)
6567 return 0;
6568
6569 return (strcmp (name, "ada__tags__dispatch_table") == 0);
6570 }
6571
6572 /* Return non-zero if TYPE is an interface tag. */
6573
6574 static int
6575 ada_is_interface_tag (struct type *type)
6576 {
6577 const char *name = TYPE_NAME (type);
6578
6579 if (name == NULL)
6580 return 0;
6581
6582 return (strcmp (name, "ada__tags__interface_tag") == 0);
6583 }
6584
6585 /* True if field number FIELD_NUM in struct or union type TYPE is supposed
6586 to be invisible to users. */
6587
6588 int
6589 ada_is_ignored_field (struct type *type, int field_num)
6590 {
6591 if (field_num < 0 || field_num > TYPE_NFIELDS (type))
6592 return 1;
6593
6594 /* Check the name of that field. */
6595 {
6596 const char *name = TYPE_FIELD_NAME (type, field_num);
6597
6598 /* Anonymous field names should not be printed.
6599 brobecker/2007-02-20: I don't think this can actually happen
6600 but we don't want to print the value of annonymous fields anyway. */
6601 if (name == NULL)
6602 return 1;
6603
6604 /* Normally, fields whose name start with an underscore ("_")
6605 are fields that have been internally generated by the compiler,
6606 and thus should not be printed. The "_parent" field is special,
6607 however: This is a field internally generated by the compiler
6608 for tagged types, and it contains the components inherited from
6609 the parent type. This field should not be printed as is, but
6610 should not be ignored either. */
6611 if (name[0] == '_' && !startswith (name, "_parent"))
6612 return 1;
6613 }
6614
6615 /* If this is the dispatch table of a tagged type or an interface tag,
6616 then ignore. */
6617 if (ada_is_tagged_type (type, 1)
6618 && (ada_is_dispatch_table_ptr_type (TYPE_FIELD_TYPE (type, field_num))
6619 || ada_is_interface_tag (TYPE_FIELD_TYPE (type, field_num))))
6620 return 1;
6621
6622 /* Not a special field, so it should not be ignored. */
6623 return 0;
6624 }
6625
6626 /* True iff TYPE has a tag field. If REFOK, then TYPE may also be a
6627 pointer or reference type whose ultimate target has a tag field. */
6628
6629 int
6630 ada_is_tagged_type (struct type *type, int refok)
6631 {
6632 return (ada_lookup_struct_elt_type (type, "_tag", refok, 1) != NULL);
6633 }
6634
6635 /* True iff TYPE represents the type of X'Tag */
6636
6637 int
6638 ada_is_tag_type (struct type *type)
6639 {
6640 type = ada_check_typedef (type);
6641
6642 if (type == NULL || TYPE_CODE (type) != TYPE_CODE_PTR)
6643 return 0;
6644 else
6645 {
6646 const char *name = ada_type_name (TYPE_TARGET_TYPE (type));
6647
6648 return (name != NULL
6649 && strcmp (name, "ada__tags__dispatch_table") == 0);
6650 }
6651 }
6652
6653 /* The type of the tag on VAL. */
6654
6655 struct type *
6656 ada_tag_type (struct value *val)
6657 {
6658 return ada_lookup_struct_elt_type (value_type (val), "_tag", 1, 0);
6659 }
6660
6661 /* Return 1 if TAG follows the old scheme for Ada tags (used for Ada 95,
6662 retired at Ada 05). */
6663
6664 static int
6665 is_ada95_tag (struct value *tag)
6666 {
6667 return ada_value_struct_elt (tag, "tsd", 1) != NULL;
6668 }
6669
6670 /* The value of the tag on VAL. */
6671
6672 struct value *
6673 ada_value_tag (struct value *val)
6674 {
6675 return ada_value_struct_elt (val, "_tag", 0);
6676 }
6677
6678 /* The value of the tag on the object of type TYPE whose contents are
6679 saved at VALADDR, if it is non-null, or is at memory address
6680 ADDRESS. */
6681
6682 static struct value *
6683 value_tag_from_contents_and_address (struct type *type,
6684 const gdb_byte *valaddr,
6685 CORE_ADDR address)
6686 {
6687 int tag_byte_offset;
6688 struct type *tag_type;
6689
6690 if (find_struct_field ("_tag", type, 0, &tag_type, &tag_byte_offset,
6691 NULL, NULL, NULL))
6692 {
6693 const gdb_byte *valaddr1 = ((valaddr == NULL)
6694 ? NULL
6695 : valaddr + tag_byte_offset);
6696 CORE_ADDR address1 = (address == 0) ? 0 : address + tag_byte_offset;
6697
6698 return value_from_contents_and_address (tag_type, valaddr1, address1);
6699 }
6700 return NULL;
6701 }
6702
6703 static struct type *
6704 type_from_tag (struct value *tag)
6705 {
6706 const char *type_name = ada_tag_name (tag);
6707
6708 if (type_name != NULL)
6709 return ada_find_any_type (ada_encode (type_name));
6710 return NULL;
6711 }
6712
6713 /* Given a value OBJ of a tagged type, return a value of this
6714 type at the base address of the object. The base address, as
6715 defined in Ada.Tags, it is the address of the primary tag of
6716 the object, and therefore where the field values of its full
6717 view can be fetched. */
6718
6719 struct value *
6720 ada_tag_value_at_base_address (struct value *obj)
6721 {
6722 struct value *val;
6723 LONGEST offset_to_top = 0;
6724 struct type *ptr_type, *obj_type;
6725 struct value *tag;
6726 CORE_ADDR base_address;
6727
6728 obj_type = value_type (obj);
6729
6730 /* It is the responsability of the caller to deref pointers. */
6731
6732 if (TYPE_CODE (obj_type) == TYPE_CODE_PTR
6733 || TYPE_CODE (obj_type) == TYPE_CODE_REF)
6734 return obj;
6735
6736 tag = ada_value_tag (obj);
6737 if (!tag)
6738 return obj;
6739
6740 /* Base addresses only appeared with Ada 05 and multiple inheritance. */
6741
6742 if (is_ada95_tag (tag))
6743 return obj;
6744
6745 ptr_type = language_lookup_primitive_type
6746 (language_def (language_ada), target_gdbarch(), "storage_offset");
6747 ptr_type = lookup_pointer_type (ptr_type);
6748 val = value_cast (ptr_type, tag);
6749 if (!val)
6750 return obj;
6751
6752 /* It is perfectly possible that an exception be raised while
6753 trying to determine the base address, just like for the tag;
6754 see ada_tag_name for more details. We do not print the error
6755 message for the same reason. */
6756
6757 try
6758 {
6759 offset_to_top = value_as_long (value_ind (value_ptradd (val, -2)));
6760 }
6761
6762 catch (const gdb_exception_error &e)
6763 {
6764 return obj;
6765 }
6766
6767 /* If offset is null, nothing to do. */
6768
6769 if (offset_to_top == 0)
6770 return obj;
6771
6772 /* -1 is a special case in Ada.Tags; however, what should be done
6773 is not quite clear from the documentation. So do nothing for
6774 now. */
6775
6776 if (offset_to_top == -1)
6777 return obj;
6778
6779 /* OFFSET_TO_TOP used to be a positive value to be subtracted
6780 from the base address. This was however incompatible with
6781 C++ dispatch table: C++ uses a *negative* value to *add*
6782 to the base address. Ada's convention has therefore been
6783 changed in GNAT 19.0w 20171023: since then, C++ and Ada
6784 use the same convention. Here, we support both cases by
6785 checking the sign of OFFSET_TO_TOP. */
6786
6787 if (offset_to_top > 0)
6788 offset_to_top = -offset_to_top;
6789
6790 base_address = value_address (obj) + offset_to_top;
6791 tag = value_tag_from_contents_and_address (obj_type, NULL, base_address);
6792
6793 /* Make sure that we have a proper tag at the new address.
6794 Otherwise, offset_to_top is bogus (which can happen when
6795 the object is not initialized yet). */
6796
6797 if (!tag)
6798 return obj;
6799
6800 obj_type = type_from_tag (tag);
6801
6802 if (!obj_type)
6803 return obj;
6804
6805 return value_from_contents_and_address (obj_type, NULL, base_address);
6806 }
6807
6808 /* Return the "ada__tags__type_specific_data" type. */
6809
6810 static struct type *
6811 ada_get_tsd_type (struct inferior *inf)
6812 {
6813 struct ada_inferior_data *data = get_ada_inferior_data (inf);
6814
6815 if (data->tsd_type == 0)
6816 data->tsd_type = ada_find_any_type ("ada__tags__type_specific_data");
6817 return data->tsd_type;
6818 }
6819
6820 /* Return the TSD (type-specific data) associated to the given TAG.
6821 TAG is assumed to be the tag of a tagged-type entity.
6822
6823 May return NULL if we are unable to get the TSD. */
6824
6825 static struct value *
6826 ada_get_tsd_from_tag (struct value *tag)
6827 {
6828 struct value *val;
6829 struct type *type;
6830
6831 /* First option: The TSD is simply stored as a field of our TAG.
6832 Only older versions of GNAT would use this format, but we have
6833 to test it first, because there are no visible markers for
6834 the current approach except the absence of that field. */
6835
6836 val = ada_value_struct_elt (tag, "tsd", 1);
6837 if (val)
6838 return val;
6839
6840 /* Try the second representation for the dispatch table (in which
6841 there is no explicit 'tsd' field in the referent of the tag pointer,
6842 and instead the tsd pointer is stored just before the dispatch
6843 table. */
6844
6845 type = ada_get_tsd_type (current_inferior());
6846 if (type == NULL)
6847 return NULL;
6848 type = lookup_pointer_type (lookup_pointer_type (type));
6849 val = value_cast (type, tag);
6850 if (val == NULL)
6851 return NULL;
6852 return value_ind (value_ptradd (val, -1));
6853 }
6854
6855 /* Given the TSD of a tag (type-specific data), return a string
6856 containing the name of the associated type.
6857
6858 The returned value is good until the next call. May return NULL
6859 if we are unable to determine the tag name. */
6860
6861 static char *
6862 ada_tag_name_from_tsd (struct value *tsd)
6863 {
6864 static char name[1024];
6865 char *p;
6866 struct value *val;
6867
6868 val = ada_value_struct_elt (tsd, "expanded_name", 1);
6869 if (val == NULL)
6870 return NULL;
6871 read_memory_string (value_as_address (val), name, sizeof (name) - 1);
6872 for (p = name; *p != '\0'; p += 1)
6873 if (isalpha (*p))
6874 *p = tolower (*p);
6875 return name;
6876 }
6877
6878 /* The type name of the dynamic type denoted by the 'tag value TAG, as
6879 a C string.
6880
6881 Return NULL if the TAG is not an Ada tag, or if we were unable to
6882 determine the name of that tag. The result is good until the next
6883 call. */
6884
6885 const char *
6886 ada_tag_name (struct value *tag)
6887 {
6888 char *name = NULL;
6889
6890 if (!ada_is_tag_type (value_type (tag)))
6891 return NULL;
6892
6893 /* It is perfectly possible that an exception be raised while trying
6894 to determine the TAG's name, even under normal circumstances:
6895 The associated variable may be uninitialized or corrupted, for
6896 instance. We do not let any exception propagate past this point.
6897 instead we return NULL.
6898
6899 We also do not print the error message either (which often is very
6900 low-level (Eg: "Cannot read memory at 0x[...]"), but instead let
6901 the caller print a more meaningful message if necessary. */
6902 try
6903 {
6904 struct value *tsd = ada_get_tsd_from_tag (tag);
6905
6906 if (tsd != NULL)
6907 name = ada_tag_name_from_tsd (tsd);
6908 }
6909 catch (const gdb_exception_error &e)
6910 {
6911 }
6912
6913 return name;
6914 }
6915
6916 /* The parent type of TYPE, or NULL if none. */
6917
6918 struct type *
6919 ada_parent_type (struct type *type)
6920 {
6921 int i;
6922
6923 type = ada_check_typedef (type);
6924
6925 if (type == NULL || TYPE_CODE (type) != TYPE_CODE_STRUCT)
6926 return NULL;
6927
6928 for (i = 0; i < TYPE_NFIELDS (type); i += 1)
6929 if (ada_is_parent_field (type, i))
6930 {
6931 struct type *parent_type = TYPE_FIELD_TYPE (type, i);
6932
6933 /* If the _parent field is a pointer, then dereference it. */
6934 if (TYPE_CODE (parent_type) == TYPE_CODE_PTR)
6935 parent_type = TYPE_TARGET_TYPE (parent_type);
6936 /* If there is a parallel XVS type, get the actual base type. */
6937 parent_type = ada_get_base_type (parent_type);
6938
6939 return ada_check_typedef (parent_type);
6940 }
6941
6942 return NULL;
6943 }
6944
6945 /* True iff field number FIELD_NUM of structure type TYPE contains the
6946 parent-type (inherited) fields of a derived type. Assumes TYPE is
6947 a structure type with at least FIELD_NUM+1 fields. */
6948
6949 int
6950 ada_is_parent_field (struct type *type, int field_num)
6951 {
6952 const char *name = TYPE_FIELD_NAME (ada_check_typedef (type), field_num);
6953
6954 return (name != NULL
6955 && (startswith (name, "PARENT")
6956 || startswith (name, "_parent")));
6957 }
6958
6959 /* True iff field number FIELD_NUM of structure type TYPE is a
6960 transparent wrapper field (which should be silently traversed when doing
6961 field selection and flattened when printing). Assumes TYPE is a
6962 structure type with at least FIELD_NUM+1 fields. Such fields are always
6963 structures. */
6964
6965 int
6966 ada_is_wrapper_field (struct type *type, int field_num)
6967 {
6968 const char *name = TYPE_FIELD_NAME (type, field_num);
6969
6970 if (name != NULL && strcmp (name, "RETVAL") == 0)
6971 {
6972 /* This happens in functions with "out" or "in out" parameters
6973 which are passed by copy. For such functions, GNAT describes
6974 the function's return type as being a struct where the return
6975 value is in a field called RETVAL, and where the other "out"
6976 or "in out" parameters are fields of that struct. This is not
6977 a wrapper. */
6978 return 0;
6979 }
6980
6981 return (name != NULL
6982 && (startswith (name, "PARENT")
6983 || strcmp (name, "REP") == 0
6984 || startswith (name, "_parent")
6985 || name[0] == 'S' || name[0] == 'R' || name[0] == 'O'));
6986 }
6987
6988 /* True iff field number FIELD_NUM of structure or union type TYPE
6989 is a variant wrapper. Assumes TYPE is a structure type with at least
6990 FIELD_NUM+1 fields. */
6991
6992 int
6993 ada_is_variant_part (struct type *type, int field_num)
6994 {
6995 /* Only Ada types are eligible. */
6996 if (!ADA_TYPE_P (type))
6997 return 0;
6998
6999 struct type *field_type = TYPE_FIELD_TYPE (type, field_num);
7000
7001 return (TYPE_CODE (field_type) == TYPE_CODE_UNION
7002 || (is_dynamic_field (type, field_num)
7003 && (TYPE_CODE (TYPE_TARGET_TYPE (field_type))
7004 == TYPE_CODE_UNION)));
7005 }
7006
7007 /* Assuming that VAR_TYPE is a variant wrapper (type of the variant part)
7008 whose discriminants are contained in the record type OUTER_TYPE,
7009 returns the type of the controlling discriminant for the variant.
7010 May return NULL if the type could not be found. */
7011
7012 struct type *
7013 ada_variant_discrim_type (struct type *var_type, struct type *outer_type)
7014 {
7015 const char *name = ada_variant_discrim_name (var_type);
7016
7017 return ada_lookup_struct_elt_type (outer_type, name, 1, 1);
7018 }
7019
7020 /* Assuming that TYPE is the type of a variant wrapper, and FIELD_NUM is a
7021 valid field number within it, returns 1 iff field FIELD_NUM of TYPE
7022 represents a 'when others' clause; otherwise 0. */
7023
7024 int
7025 ada_is_others_clause (struct type *type, int field_num)
7026 {
7027 const char *name = TYPE_FIELD_NAME (type, field_num);
7028
7029 return (name != NULL && name[0] == 'O');
7030 }
7031
7032 /* Assuming that TYPE0 is the type of the variant part of a record,
7033 returns the name of the discriminant controlling the variant.
7034 The value is valid until the next call to ada_variant_discrim_name. */
7035
7036 const char *
7037 ada_variant_discrim_name (struct type *type0)
7038 {
7039 static char *result = NULL;
7040 static size_t result_len = 0;
7041 struct type *type;
7042 const char *name;
7043 const char *discrim_end;
7044 const char *discrim_start;
7045
7046 if (TYPE_CODE (type0) == TYPE_CODE_PTR)
7047 type = TYPE_TARGET_TYPE (type0);
7048 else
7049 type = type0;
7050
7051 name = ada_type_name (type);
7052
7053 if (name == NULL || name[0] == '\000')
7054 return "";
7055
7056 for (discrim_end = name + strlen (name) - 6; discrim_end != name;
7057 discrim_end -= 1)
7058 {
7059 if (startswith (discrim_end, "___XVN"))
7060 break;
7061 }
7062 if (discrim_end == name)
7063 return "";
7064
7065 for (discrim_start = discrim_end; discrim_start != name + 3;
7066 discrim_start -= 1)
7067 {
7068 if (discrim_start == name + 1)
7069 return "";
7070 if ((discrim_start > name + 3
7071 && startswith (discrim_start - 3, "___"))
7072 || discrim_start[-1] == '.')
7073 break;
7074 }
7075
7076 GROW_VECT (result, result_len, discrim_end - discrim_start + 1);
7077 strncpy (result, discrim_start, discrim_end - discrim_start);
7078 result[discrim_end - discrim_start] = '\0';
7079 return result;
7080 }
7081
7082 /* Scan STR for a subtype-encoded number, beginning at position K.
7083 Put the position of the character just past the number scanned in
7084 *NEW_K, if NEW_K!=NULL. Put the scanned number in *R, if R!=NULL.
7085 Return 1 if there was a valid number at the given position, and 0
7086 otherwise. A "subtype-encoded" number consists of the absolute value
7087 in decimal, followed by the letter 'm' to indicate a negative number.
7088 Assumes 0m does not occur. */
7089
7090 int
7091 ada_scan_number (const char str[], int k, LONGEST * R, int *new_k)
7092 {
7093 ULONGEST RU;
7094
7095 if (!isdigit (str[k]))
7096 return 0;
7097
7098 /* Do it the hard way so as not to make any assumption about
7099 the relationship of unsigned long (%lu scan format code) and
7100 LONGEST. */
7101 RU = 0;
7102 while (isdigit (str[k]))
7103 {
7104 RU = RU * 10 + (str[k] - '0');
7105 k += 1;
7106 }
7107
7108 if (str[k] == 'm')
7109 {
7110 if (R != NULL)
7111 *R = (-(LONGEST) (RU - 1)) - 1;
7112 k += 1;
7113 }
7114 else if (R != NULL)
7115 *R = (LONGEST) RU;
7116
7117 /* NOTE on the above: Technically, C does not say what the results of
7118 - (LONGEST) RU or (LONGEST) -RU are for RU == largest positive
7119 number representable as a LONGEST (although either would probably work
7120 in most implementations). When RU>0, the locution in the then branch
7121 above is always equivalent to the negative of RU. */
7122
7123 if (new_k != NULL)
7124 *new_k = k;
7125 return 1;
7126 }
7127
7128 /* Assuming that TYPE is a variant part wrapper type (a VARIANTS field),
7129 and FIELD_NUM is a valid field number within it, returns 1 iff VAL is
7130 in the range encoded by field FIELD_NUM of TYPE; otherwise 0. */
7131
7132 int
7133 ada_in_variant (LONGEST val, struct type *type, int field_num)
7134 {
7135 const char *name = TYPE_FIELD_NAME (type, field_num);
7136 int p;
7137
7138 p = 0;
7139 while (1)
7140 {
7141 switch (name[p])
7142 {
7143 case '\0':
7144 return 0;
7145 case 'S':
7146 {
7147 LONGEST W;
7148
7149 if (!ada_scan_number (name, p + 1, &W, &p))
7150 return 0;
7151 if (val == W)
7152 return 1;
7153 break;
7154 }
7155 case 'R':
7156 {
7157 LONGEST L, U;
7158
7159 if (!ada_scan_number (name, p + 1, &L, &p)
7160 || name[p] != 'T' || !ada_scan_number (name, p + 1, &U, &p))
7161 return 0;
7162 if (val >= L && val <= U)
7163 return 1;
7164 break;
7165 }
7166 case 'O':
7167 return 1;
7168 default:
7169 return 0;
7170 }
7171 }
7172 }
7173
7174 /* FIXME: Lots of redundancy below. Try to consolidate. */
7175
7176 /* Given a value ARG1 (offset by OFFSET bytes) of a struct or union type
7177 ARG_TYPE, extract and return the value of one of its (non-static)
7178 fields. FIELDNO says which field. Differs from value_primitive_field
7179 only in that it can handle packed values of arbitrary type. */
7180
7181 static struct value *
7182 ada_value_primitive_field (struct value *arg1, int offset, int fieldno,
7183 struct type *arg_type)
7184 {
7185 struct type *type;
7186
7187 arg_type = ada_check_typedef (arg_type);
7188 type = TYPE_FIELD_TYPE (arg_type, fieldno);
7189
7190 /* Handle packed fields. */
7191
7192 if (TYPE_FIELD_BITSIZE (arg_type, fieldno) != 0)
7193 {
7194 int bit_pos = TYPE_FIELD_BITPOS (arg_type, fieldno);
7195 int bit_size = TYPE_FIELD_BITSIZE (arg_type, fieldno);
7196
7197 return ada_value_primitive_packed_val (arg1, value_contents (arg1),
7198 offset + bit_pos / 8,
7199 bit_pos % 8, bit_size, type);
7200 }
7201 else
7202 return value_primitive_field (arg1, offset, fieldno, arg_type);
7203 }
7204
7205 /* Find field with name NAME in object of type TYPE. If found,
7206 set the following for each argument that is non-null:
7207 - *FIELD_TYPE_P to the field's type;
7208 - *BYTE_OFFSET_P to OFFSET + the byte offset of the field within
7209 an object of that type;
7210 - *BIT_OFFSET_P to the bit offset modulo byte size of the field;
7211 - *BIT_SIZE_P to its size in bits if the field is packed, and
7212 0 otherwise;
7213 If INDEX_P is non-null, increment *INDEX_P by the number of source-visible
7214 fields up to but not including the desired field, or by the total
7215 number of fields if not found. A NULL value of NAME never
7216 matches; the function just counts visible fields in this case.
7217
7218 Notice that we need to handle when a tagged record hierarchy
7219 has some components with the same name, like in this scenario:
7220
7221 type Top_T is tagged record
7222 N : Integer := 1;
7223 U : Integer := 974;
7224 A : Integer := 48;
7225 end record;
7226
7227 type Middle_T is new Top.Top_T with record
7228 N : Character := 'a';
7229 C : Integer := 3;
7230 end record;
7231
7232 type Bottom_T is new Middle.Middle_T with record
7233 N : Float := 4.0;
7234 C : Character := '5';
7235 X : Integer := 6;
7236 A : Character := 'J';
7237 end record;
7238
7239 Let's say we now have a variable declared and initialized as follow:
7240
7241 TC : Top_A := new Bottom_T;
7242
7243 And then we use this variable to call this function
7244
7245 procedure Assign (Obj: in out Top_T; TV : Integer);
7246
7247 as follow:
7248
7249 Assign (Top_T (B), 12);
7250
7251 Now, we're in the debugger, and we're inside that procedure
7252 then and we want to print the value of obj.c:
7253
7254 Usually, the tagged record or one of the parent type owns the
7255 component to print and there's no issue but in this particular
7256 case, what does it mean to ask for Obj.C? Since the actual
7257 type for object is type Bottom_T, it could mean two things: type
7258 component C from the Middle_T view, but also component C from
7259 Bottom_T. So in that "undefined" case, when the component is
7260 not found in the non-resolved type (which includes all the
7261 components of the parent type), then resolve it and see if we
7262 get better luck once expanded.
7263
7264 In the case of homonyms in the derived tagged type, we don't
7265 guaranty anything, and pick the one that's easiest for us
7266 to program.
7267
7268 Returns 1 if found, 0 otherwise. */
7269
7270 static int
7271 find_struct_field (const char *name, struct type *type, int offset,
7272 struct type **field_type_p,
7273 int *byte_offset_p, int *bit_offset_p, int *bit_size_p,
7274 int *index_p)
7275 {
7276 int i;
7277 int parent_offset = -1;
7278
7279 type = ada_check_typedef (type);
7280
7281 if (field_type_p != NULL)
7282 *field_type_p = NULL;
7283 if (byte_offset_p != NULL)
7284 *byte_offset_p = 0;
7285 if (bit_offset_p != NULL)
7286 *bit_offset_p = 0;
7287 if (bit_size_p != NULL)
7288 *bit_size_p = 0;
7289
7290 for (i = 0; i < TYPE_NFIELDS (type); i += 1)
7291 {
7292 int bit_pos = TYPE_FIELD_BITPOS (type, i);
7293 int fld_offset = offset + bit_pos / 8;
7294 const char *t_field_name = TYPE_FIELD_NAME (type, i);
7295
7296 if (t_field_name == NULL)
7297 continue;
7298
7299 else if (ada_is_parent_field (type, i))
7300 {
7301 /* This is a field pointing us to the parent type of a tagged
7302 type. As hinted in this function's documentation, we give
7303 preference to fields in the current record first, so what
7304 we do here is just record the index of this field before
7305 we skip it. If it turns out we couldn't find our field
7306 in the current record, then we'll get back to it and search
7307 inside it whether the field might exist in the parent. */
7308
7309 parent_offset = i;
7310 continue;
7311 }
7312
7313 else if (name != NULL && field_name_match (t_field_name, name))
7314 {
7315 int bit_size = TYPE_FIELD_BITSIZE (type, i);
7316
7317 if (field_type_p != NULL)
7318 *field_type_p = TYPE_FIELD_TYPE (type, i);
7319 if (byte_offset_p != NULL)
7320 *byte_offset_p = fld_offset;
7321 if (bit_offset_p != NULL)
7322 *bit_offset_p = bit_pos % 8;
7323 if (bit_size_p != NULL)
7324 *bit_size_p = bit_size;
7325 return 1;
7326 }
7327 else if (ada_is_wrapper_field (type, i))
7328 {
7329 if (find_struct_field (name, TYPE_FIELD_TYPE (type, i), fld_offset,
7330 field_type_p, byte_offset_p, bit_offset_p,
7331 bit_size_p, index_p))
7332 return 1;
7333 }
7334 else if (ada_is_variant_part (type, i))
7335 {
7336 /* PNH: Wait. Do we ever execute this section, or is ARG always of
7337 fixed type?? */
7338 int j;
7339 struct type *field_type
7340 = ada_check_typedef (TYPE_FIELD_TYPE (type, i));
7341
7342 for (j = 0; j < TYPE_NFIELDS (field_type); j += 1)
7343 {
7344 if (find_struct_field (name, TYPE_FIELD_TYPE (field_type, j),
7345 fld_offset
7346 + TYPE_FIELD_BITPOS (field_type, j) / 8,
7347 field_type_p, byte_offset_p,
7348 bit_offset_p, bit_size_p, index_p))
7349 return 1;
7350 }
7351 }
7352 else if (index_p != NULL)
7353 *index_p += 1;
7354 }
7355
7356 /* Field not found so far. If this is a tagged type which
7357 has a parent, try finding that field in the parent now. */
7358
7359 if (parent_offset != -1)
7360 {
7361 int bit_pos = TYPE_FIELD_BITPOS (type, parent_offset);
7362 int fld_offset = offset + bit_pos / 8;
7363
7364 if (find_struct_field (name, TYPE_FIELD_TYPE (type, parent_offset),
7365 fld_offset, field_type_p, byte_offset_p,
7366 bit_offset_p, bit_size_p, index_p))
7367 return 1;
7368 }
7369
7370 return 0;
7371 }
7372
7373 /* Number of user-visible fields in record type TYPE. */
7374
7375 static int
7376 num_visible_fields (struct type *type)
7377 {
7378 int n;
7379
7380 n = 0;
7381 find_struct_field (NULL, type, 0, NULL, NULL, NULL, NULL, &n);
7382 return n;
7383 }
7384
7385 /* Look for a field NAME in ARG. Adjust the address of ARG by OFFSET bytes,
7386 and search in it assuming it has (class) type TYPE.
7387 If found, return value, else return NULL.
7388
7389 Searches recursively through wrapper fields (e.g., '_parent').
7390
7391 In the case of homonyms in the tagged types, please refer to the
7392 long explanation in find_struct_field's function documentation. */
7393
7394 static struct value *
7395 ada_search_struct_field (const char *name, struct value *arg, int offset,
7396 struct type *type)
7397 {
7398 int i;
7399 int parent_offset = -1;
7400
7401 type = ada_check_typedef (type);
7402 for (i = 0; i < TYPE_NFIELDS (type); i += 1)
7403 {
7404 const char *t_field_name = TYPE_FIELD_NAME (type, i);
7405
7406 if (t_field_name == NULL)
7407 continue;
7408
7409 else if (ada_is_parent_field (type, i))
7410 {
7411 /* This is a field pointing us to the parent type of a tagged
7412 type. As hinted in this function's documentation, we give
7413 preference to fields in the current record first, so what
7414 we do here is just record the index of this field before
7415 we skip it. If it turns out we couldn't find our field
7416 in the current record, then we'll get back to it and search
7417 inside it whether the field might exist in the parent. */
7418
7419 parent_offset = i;
7420 continue;
7421 }
7422
7423 else if (field_name_match (t_field_name, name))
7424 return ada_value_primitive_field (arg, offset, i, type);
7425
7426 else if (ada_is_wrapper_field (type, i))
7427 {
7428 struct value *v = /* Do not let indent join lines here. */
7429 ada_search_struct_field (name, arg,
7430 offset + TYPE_FIELD_BITPOS (type, i) / 8,
7431 TYPE_FIELD_TYPE (type, i));
7432
7433 if (v != NULL)
7434 return v;
7435 }
7436
7437 else if (ada_is_variant_part (type, i))
7438 {
7439 /* PNH: Do we ever get here? See find_struct_field. */
7440 int j;
7441 struct type *field_type = ada_check_typedef (TYPE_FIELD_TYPE (type,
7442 i));
7443 int var_offset = offset + TYPE_FIELD_BITPOS (type, i) / 8;
7444
7445 for (j = 0; j < TYPE_NFIELDS (field_type); j += 1)
7446 {
7447 struct value *v = ada_search_struct_field /* Force line
7448 break. */
7449 (name, arg,
7450 var_offset + TYPE_FIELD_BITPOS (field_type, j) / 8,
7451 TYPE_FIELD_TYPE (field_type, j));
7452
7453 if (v != NULL)
7454 return v;
7455 }
7456 }
7457 }
7458
7459 /* Field not found so far. If this is a tagged type which
7460 has a parent, try finding that field in the parent now. */
7461
7462 if (parent_offset != -1)
7463 {
7464 struct value *v = ada_search_struct_field (
7465 name, arg, offset + TYPE_FIELD_BITPOS (type, parent_offset) / 8,
7466 TYPE_FIELD_TYPE (type, parent_offset));
7467
7468 if (v != NULL)
7469 return v;
7470 }
7471
7472 return NULL;
7473 }
7474
7475 static struct value *ada_index_struct_field_1 (int *, struct value *,
7476 int, struct type *);
7477
7478
7479 /* Return field #INDEX in ARG, where the index is that returned by
7480 * find_struct_field through its INDEX_P argument. Adjust the address
7481 * of ARG by OFFSET bytes, and search in it assuming it has (class) type TYPE.
7482 * If found, return value, else return NULL. */
7483
7484 static struct value *
7485 ada_index_struct_field (int index, struct value *arg, int offset,
7486 struct type *type)
7487 {
7488 return ada_index_struct_field_1 (&index, arg, offset, type);
7489 }
7490
7491
7492 /* Auxiliary function for ada_index_struct_field. Like
7493 * ada_index_struct_field, but takes index from *INDEX_P and modifies
7494 * *INDEX_P. */
7495
7496 static struct value *
7497 ada_index_struct_field_1 (int *index_p, struct value *arg, int offset,
7498 struct type *type)
7499 {
7500 int i;
7501 type = ada_check_typedef (type);
7502
7503 for (i = 0; i < TYPE_NFIELDS (type); i += 1)
7504 {
7505 if (TYPE_FIELD_NAME (type, i) == NULL)
7506 continue;
7507 else if (ada_is_wrapper_field (type, i))
7508 {
7509 struct value *v = /* Do not let indent join lines here. */
7510 ada_index_struct_field_1 (index_p, arg,
7511 offset + TYPE_FIELD_BITPOS (type, i) / 8,
7512 TYPE_FIELD_TYPE (type, i));
7513
7514 if (v != NULL)
7515 return v;
7516 }
7517
7518 else if (ada_is_variant_part (type, i))
7519 {
7520 /* PNH: Do we ever get here? See ada_search_struct_field,
7521 find_struct_field. */
7522 error (_("Cannot assign this kind of variant record"));
7523 }
7524 else if (*index_p == 0)
7525 return ada_value_primitive_field (arg, offset, i, type);
7526 else
7527 *index_p -= 1;
7528 }
7529 return NULL;
7530 }
7531
7532 /* Given ARG, a value of type (pointer or reference to a)*
7533 structure/union, extract the component named NAME from the ultimate
7534 target structure/union and return it as a value with its
7535 appropriate type.
7536
7537 The routine searches for NAME among all members of the structure itself
7538 and (recursively) among all members of any wrapper members
7539 (e.g., '_parent').
7540
7541 If NO_ERR, then simply return NULL in case of error, rather than
7542 calling error. */
7543
7544 struct value *
7545 ada_value_struct_elt (struct value *arg, const char *name, int no_err)
7546 {
7547 struct type *t, *t1;
7548 struct value *v;
7549 int check_tag;
7550
7551 v = NULL;
7552 t1 = t = ada_check_typedef (value_type (arg));
7553 if (TYPE_CODE (t) == TYPE_CODE_REF)
7554 {
7555 t1 = TYPE_TARGET_TYPE (t);
7556 if (t1 == NULL)
7557 goto BadValue;
7558 t1 = ada_check_typedef (t1);
7559 if (TYPE_CODE (t1) == TYPE_CODE_PTR)
7560 {
7561 arg = coerce_ref (arg);
7562 t = t1;
7563 }
7564 }
7565
7566 while (TYPE_CODE (t) == TYPE_CODE_PTR)
7567 {
7568 t1 = TYPE_TARGET_TYPE (t);
7569 if (t1 == NULL)
7570 goto BadValue;
7571 t1 = ada_check_typedef (t1);
7572 if (TYPE_CODE (t1) == TYPE_CODE_PTR)
7573 {
7574 arg = value_ind (arg);
7575 t = t1;
7576 }
7577 else
7578 break;
7579 }
7580
7581 if (TYPE_CODE (t1) != TYPE_CODE_STRUCT && TYPE_CODE (t1) != TYPE_CODE_UNION)
7582 goto BadValue;
7583
7584 if (t1 == t)
7585 v = ada_search_struct_field (name, arg, 0, t);
7586 else
7587 {
7588 int bit_offset, bit_size, byte_offset;
7589 struct type *field_type;
7590 CORE_ADDR address;
7591
7592 if (TYPE_CODE (t) == TYPE_CODE_PTR)
7593 address = value_address (ada_value_ind (arg));
7594 else
7595 address = value_address (ada_coerce_ref (arg));
7596
7597 /* Check to see if this is a tagged type. We also need to handle
7598 the case where the type is a reference to a tagged type, but
7599 we have to be careful to exclude pointers to tagged types.
7600 The latter should be shown as usual (as a pointer), whereas
7601 a reference should mostly be transparent to the user. */
7602
7603 if (ada_is_tagged_type (t1, 0)
7604 || (TYPE_CODE (t1) == TYPE_CODE_REF
7605 && ada_is_tagged_type (TYPE_TARGET_TYPE (t1), 0)))
7606 {
7607 /* We first try to find the searched field in the current type.
7608 If not found then let's look in the fixed type. */
7609
7610 if (!find_struct_field (name, t1, 0,
7611 &field_type, &byte_offset, &bit_offset,
7612 &bit_size, NULL))
7613 check_tag = 1;
7614 else
7615 check_tag = 0;
7616 }
7617 else
7618 check_tag = 0;
7619
7620 /* Convert to fixed type in all cases, so that we have proper
7621 offsets to each field in unconstrained record types. */
7622 t1 = ada_to_fixed_type (ada_get_base_type (t1), NULL,
7623 address, NULL, check_tag);
7624
7625 if (find_struct_field (name, t1, 0,
7626 &field_type, &byte_offset, &bit_offset,
7627 &bit_size, NULL))
7628 {
7629 if (bit_size != 0)
7630 {
7631 if (TYPE_CODE (t) == TYPE_CODE_REF)
7632 arg = ada_coerce_ref (arg);
7633 else
7634 arg = ada_value_ind (arg);
7635 v = ada_value_primitive_packed_val (arg, NULL, byte_offset,
7636 bit_offset, bit_size,
7637 field_type);
7638 }
7639 else
7640 v = value_at_lazy (field_type, address + byte_offset);
7641 }
7642 }
7643
7644 if (v != NULL || no_err)
7645 return v;
7646 else
7647 error (_("There is no member named %s."), name);
7648
7649 BadValue:
7650 if (no_err)
7651 return NULL;
7652 else
7653 error (_("Attempt to extract a component of "
7654 "a value that is not a record."));
7655 }
7656
7657 /* Return a string representation of type TYPE. */
7658
7659 static std::string
7660 type_as_string (struct type *type)
7661 {
7662 string_file tmp_stream;
7663
7664 type_print (type, "", &tmp_stream, -1);
7665
7666 return std::move (tmp_stream.string ());
7667 }
7668
7669 /* Given a type TYPE, look up the type of the component of type named NAME.
7670 If DISPP is non-null, add its byte displacement from the beginning of a
7671 structure (pointed to by a value) of type TYPE to *DISPP (does not
7672 work for packed fields).
7673
7674 Matches any field whose name has NAME as a prefix, possibly
7675 followed by "___".
7676
7677 TYPE can be either a struct or union. If REFOK, TYPE may also
7678 be a (pointer or reference)+ to a struct or union, and the
7679 ultimate target type will be searched.
7680
7681 Looks recursively into variant clauses and parent types.
7682
7683 In the case of homonyms in the tagged types, please refer to the
7684 long explanation in find_struct_field's function documentation.
7685
7686 If NOERR is nonzero, return NULL if NAME is not suitably defined or
7687 TYPE is not a type of the right kind. */
7688
7689 static struct type *
7690 ada_lookup_struct_elt_type (struct type *type, const char *name, int refok,
7691 int noerr)
7692 {
7693 int i;
7694 int parent_offset = -1;
7695
7696 if (name == NULL)
7697 goto BadName;
7698
7699 if (refok && type != NULL)
7700 while (1)
7701 {
7702 type = ada_check_typedef (type);
7703 if (TYPE_CODE (type) != TYPE_CODE_PTR
7704 && TYPE_CODE (type) != TYPE_CODE_REF)
7705 break;
7706 type = TYPE_TARGET_TYPE (type);
7707 }
7708
7709 if (type == NULL
7710 || (TYPE_CODE (type) != TYPE_CODE_STRUCT
7711 && TYPE_CODE (type) != TYPE_CODE_UNION))
7712 {
7713 if (noerr)
7714 return NULL;
7715
7716 error (_("Type %s is not a structure or union type"),
7717 type != NULL ? type_as_string (type).c_str () : _("(null)"));
7718 }
7719
7720 type = to_static_fixed_type (type);
7721
7722 for (i = 0; i < TYPE_NFIELDS (type); i += 1)
7723 {
7724 const char *t_field_name = TYPE_FIELD_NAME (type, i);
7725 struct type *t;
7726
7727 if (t_field_name == NULL)
7728 continue;
7729
7730 else if (ada_is_parent_field (type, i))
7731 {
7732 /* This is a field pointing us to the parent type of a tagged
7733 type. As hinted in this function's documentation, we give
7734 preference to fields in the current record first, so what
7735 we do here is just record the index of this field before
7736 we skip it. If it turns out we couldn't find our field
7737 in the current record, then we'll get back to it and search
7738 inside it whether the field might exist in the parent. */
7739
7740 parent_offset = i;
7741 continue;
7742 }
7743
7744 else if (field_name_match (t_field_name, name))
7745 return TYPE_FIELD_TYPE (type, i);
7746
7747 else if (ada_is_wrapper_field (type, i))
7748 {
7749 t = ada_lookup_struct_elt_type (TYPE_FIELD_TYPE (type, i), name,
7750 0, 1);
7751 if (t != NULL)
7752 return t;
7753 }
7754
7755 else if (ada_is_variant_part (type, i))
7756 {
7757 int j;
7758 struct type *field_type = ada_check_typedef (TYPE_FIELD_TYPE (type,
7759 i));
7760
7761 for (j = TYPE_NFIELDS (field_type) - 1; j >= 0; j -= 1)
7762 {
7763 /* FIXME pnh 2008/01/26: We check for a field that is
7764 NOT wrapped in a struct, since the compiler sometimes
7765 generates these for unchecked variant types. Revisit
7766 if the compiler changes this practice. */
7767 const char *v_field_name = TYPE_FIELD_NAME (field_type, j);
7768
7769 if (v_field_name != NULL
7770 && field_name_match (v_field_name, name))
7771 t = TYPE_FIELD_TYPE (field_type, j);
7772 else
7773 t = ada_lookup_struct_elt_type (TYPE_FIELD_TYPE (field_type,
7774 j),
7775 name, 0, 1);
7776
7777 if (t != NULL)
7778 return t;
7779 }
7780 }
7781
7782 }
7783
7784 /* Field not found so far. If this is a tagged type which
7785 has a parent, try finding that field in the parent now. */
7786
7787 if (parent_offset != -1)
7788 {
7789 struct type *t;
7790
7791 t = ada_lookup_struct_elt_type (TYPE_FIELD_TYPE (type, parent_offset),
7792 name, 0, 1);
7793 if (t != NULL)
7794 return t;
7795 }
7796
7797 BadName:
7798 if (!noerr)
7799 {
7800 const char *name_str = name != NULL ? name : _("<null>");
7801
7802 error (_("Type %s has no component named %s"),
7803 type_as_string (type).c_str (), name_str);
7804 }
7805
7806 return NULL;
7807 }
7808
7809 /* Assuming that VAR_TYPE is the type of a variant part of a record (a union),
7810 within a value of type OUTER_TYPE, return true iff VAR_TYPE
7811 represents an unchecked union (that is, the variant part of a
7812 record that is named in an Unchecked_Union pragma). */
7813
7814 static int
7815 is_unchecked_variant (struct type *var_type, struct type *outer_type)
7816 {
7817 const char *discrim_name = ada_variant_discrim_name (var_type);
7818
7819 return (ada_lookup_struct_elt_type (outer_type, discrim_name, 0, 1) == NULL);
7820 }
7821
7822
7823 /* Assuming that VAR_TYPE is the type of a variant part of a record (a union),
7824 within a value of type OUTER_TYPE that is stored in GDB at
7825 OUTER_VALADDR, determine which variant clause (field number in VAR_TYPE,
7826 numbering from 0) is applicable. Returns -1 if none are. */
7827
7828 int
7829 ada_which_variant_applies (struct type *var_type, struct type *outer_type,
7830 const gdb_byte *outer_valaddr)
7831 {
7832 int others_clause;
7833 int i;
7834 const char *discrim_name = ada_variant_discrim_name (var_type);
7835 struct value *outer;
7836 struct value *discrim;
7837 LONGEST discrim_val;
7838
7839 /* Using plain value_from_contents_and_address here causes problems
7840 because we will end up trying to resolve a type that is currently
7841 being constructed. */
7842 outer = value_from_contents_and_address_unresolved (outer_type,
7843 outer_valaddr, 0);
7844 discrim = ada_value_struct_elt (outer, discrim_name, 1);
7845 if (discrim == NULL)
7846 return -1;
7847 discrim_val = value_as_long (discrim);
7848
7849 others_clause = -1;
7850 for (i = 0; i < TYPE_NFIELDS (var_type); i += 1)
7851 {
7852 if (ada_is_others_clause (var_type, i))
7853 others_clause = i;
7854 else if (ada_in_variant (discrim_val, var_type, i))
7855 return i;
7856 }
7857
7858 return others_clause;
7859 }
7860 \f
7861
7862
7863 /* Dynamic-Sized Records */
7864
7865 /* Strategy: The type ostensibly attached to a value with dynamic size
7866 (i.e., a size that is not statically recorded in the debugging
7867 data) does not accurately reflect the size or layout of the value.
7868 Our strategy is to convert these values to values with accurate,
7869 conventional types that are constructed on the fly. */
7870
7871 /* There is a subtle and tricky problem here. In general, we cannot
7872 determine the size of dynamic records without its data. However,
7873 the 'struct value' data structure, which GDB uses to represent
7874 quantities in the inferior process (the target), requires the size
7875 of the type at the time of its allocation in order to reserve space
7876 for GDB's internal copy of the data. That's why the
7877 'to_fixed_xxx_type' routines take (target) addresses as parameters,
7878 rather than struct value*s.
7879
7880 However, GDB's internal history variables ($1, $2, etc.) are
7881 struct value*s containing internal copies of the data that are not, in
7882 general, the same as the data at their corresponding addresses in
7883 the target. Fortunately, the types we give to these values are all
7884 conventional, fixed-size types (as per the strategy described
7885 above), so that we don't usually have to perform the
7886 'to_fixed_xxx_type' conversions to look at their values.
7887 Unfortunately, there is one exception: if one of the internal
7888 history variables is an array whose elements are unconstrained
7889 records, then we will need to create distinct fixed types for each
7890 element selected. */
7891
7892 /* The upshot of all of this is that many routines take a (type, host
7893 address, target address) triple as arguments to represent a value.
7894 The host address, if non-null, is supposed to contain an internal
7895 copy of the relevant data; otherwise, the program is to consult the
7896 target at the target address. */
7897
7898 /* Assuming that VAL0 represents a pointer value, the result of
7899 dereferencing it. Differs from value_ind in its treatment of
7900 dynamic-sized types. */
7901
7902 struct value *
7903 ada_value_ind (struct value *val0)
7904 {
7905 struct value *val = value_ind (val0);
7906
7907 if (ada_is_tagged_type (value_type (val), 0))
7908 val = ada_tag_value_at_base_address (val);
7909
7910 return ada_to_fixed_value (val);
7911 }
7912
7913 /* The value resulting from dereferencing any "reference to"
7914 qualifiers on VAL0. */
7915
7916 static struct value *
7917 ada_coerce_ref (struct value *val0)
7918 {
7919 if (TYPE_CODE (value_type (val0)) == TYPE_CODE_REF)
7920 {
7921 struct value *val = val0;
7922
7923 val = coerce_ref (val);
7924
7925 if (ada_is_tagged_type (value_type (val), 0))
7926 val = ada_tag_value_at_base_address (val);
7927
7928 return ada_to_fixed_value (val);
7929 }
7930 else
7931 return val0;
7932 }
7933
7934 /* Return OFF rounded upward if necessary to a multiple of
7935 ALIGNMENT (a power of 2). */
7936
7937 static unsigned int
7938 align_value (unsigned int off, unsigned int alignment)
7939 {
7940 return (off + alignment - 1) & ~(alignment - 1);
7941 }
7942
7943 /* Return the bit alignment required for field #F of template type TYPE. */
7944
7945 static unsigned int
7946 field_alignment (struct type *type, int f)
7947 {
7948 const char *name = TYPE_FIELD_NAME (type, f);
7949 int len;
7950 int align_offset;
7951
7952 /* The field name should never be null, unless the debugging information
7953 is somehow malformed. In this case, we assume the field does not
7954 require any alignment. */
7955 if (name == NULL)
7956 return 1;
7957
7958 len = strlen (name);
7959
7960 if (!isdigit (name[len - 1]))
7961 return 1;
7962
7963 if (isdigit (name[len - 2]))
7964 align_offset = len - 2;
7965 else
7966 align_offset = len - 1;
7967
7968 if (align_offset < 7 || !startswith (name + align_offset - 6, "___XV"))
7969 return TARGET_CHAR_BIT;
7970
7971 return atoi (name + align_offset) * TARGET_CHAR_BIT;
7972 }
7973
7974 /* Find a typedef or tag symbol named NAME. Ignores ambiguity. */
7975
7976 static struct symbol *
7977 ada_find_any_type_symbol (const char *name)
7978 {
7979 struct symbol *sym;
7980
7981 sym = standard_lookup (name, get_selected_block (NULL), VAR_DOMAIN);
7982 if (sym != NULL && SYMBOL_CLASS (sym) == LOC_TYPEDEF)
7983 return sym;
7984
7985 sym = standard_lookup (name, NULL, STRUCT_DOMAIN);
7986 return sym;
7987 }
7988
7989 /* Find a type named NAME. Ignores ambiguity. This routine will look
7990 solely for types defined by debug info, it will not search the GDB
7991 primitive types. */
7992
7993 static struct type *
7994 ada_find_any_type (const char *name)
7995 {
7996 struct symbol *sym = ada_find_any_type_symbol (name);
7997
7998 if (sym != NULL)
7999 return SYMBOL_TYPE (sym);
8000
8001 return NULL;
8002 }
8003
8004 /* Given NAME_SYM and an associated BLOCK, find a "renaming" symbol
8005 associated with NAME_SYM's name. NAME_SYM may itself be a renaming
8006 symbol, in which case it is returned. Otherwise, this looks for
8007 symbols whose name is that of NAME_SYM suffixed with "___XR".
8008 Return symbol if found, and NULL otherwise. */
8009
8010 struct symbol *
8011 ada_find_renaming_symbol (struct symbol *name_sym, const struct block *block)
8012 {
8013 const char *name = SYMBOL_LINKAGE_NAME (name_sym);
8014 struct symbol *sym;
8015
8016 if (strstr (name, "___XR") != NULL)
8017 return name_sym;
8018
8019 sym = find_old_style_renaming_symbol (name, block);
8020
8021 if (sym != NULL)
8022 return sym;
8023
8024 /* Not right yet. FIXME pnh 7/20/2007. */
8025 sym = ada_find_any_type_symbol (name);
8026 if (sym != NULL && strstr (SYMBOL_LINKAGE_NAME (sym), "___XR") != NULL)
8027 return sym;
8028 else
8029 return NULL;
8030 }
8031
8032 static struct symbol *
8033 find_old_style_renaming_symbol (const char *name, const struct block *block)
8034 {
8035 const struct symbol *function_sym = block_linkage_function (block);
8036 char *rename;
8037
8038 if (function_sym != NULL)
8039 {
8040 /* If the symbol is defined inside a function, NAME is not fully
8041 qualified. This means we need to prepend the function name
8042 as well as adding the ``___XR'' suffix to build the name of
8043 the associated renaming symbol. */
8044 const char *function_name = SYMBOL_LINKAGE_NAME (function_sym);
8045 /* Function names sometimes contain suffixes used
8046 for instance to qualify nested subprograms. When building
8047 the XR type name, we need to make sure that this suffix is
8048 not included. So do not include any suffix in the function
8049 name length below. */
8050 int function_name_len = ada_name_prefix_len (function_name);
8051 const int rename_len = function_name_len + 2 /* "__" */
8052 + strlen (name) + 6 /* "___XR\0" */ ;
8053
8054 /* Strip the suffix if necessary. */
8055 ada_remove_trailing_digits (function_name, &function_name_len);
8056 ada_remove_po_subprogram_suffix (function_name, &function_name_len);
8057 ada_remove_Xbn_suffix (function_name, &function_name_len);
8058
8059 /* Library-level functions are a special case, as GNAT adds
8060 a ``_ada_'' prefix to the function name to avoid namespace
8061 pollution. However, the renaming symbols themselves do not
8062 have this prefix, so we need to skip this prefix if present. */
8063 if (function_name_len > 5 /* "_ada_" */
8064 && strstr (function_name, "_ada_") == function_name)
8065 {
8066 function_name += 5;
8067 function_name_len -= 5;
8068 }
8069
8070 rename = (char *) alloca (rename_len * sizeof (char));
8071 strncpy (rename, function_name, function_name_len);
8072 xsnprintf (rename + function_name_len, rename_len - function_name_len,
8073 "__%s___XR", name);
8074 }
8075 else
8076 {
8077 const int rename_len = strlen (name) + 6;
8078
8079 rename = (char *) alloca (rename_len * sizeof (char));
8080 xsnprintf (rename, rename_len * sizeof (char), "%s___XR", name);
8081 }
8082
8083 return ada_find_any_type_symbol (rename);
8084 }
8085
8086 /* Because of GNAT encoding conventions, several GDB symbols may match a
8087 given type name. If the type denoted by TYPE0 is to be preferred to
8088 that of TYPE1 for purposes of type printing, return non-zero;
8089 otherwise return 0. */
8090
8091 int
8092 ada_prefer_type (struct type *type0, struct type *type1)
8093 {
8094 if (type1 == NULL)
8095 return 1;
8096 else if (type0 == NULL)
8097 return 0;
8098 else if (TYPE_CODE (type1) == TYPE_CODE_VOID)
8099 return 1;
8100 else if (TYPE_CODE (type0) == TYPE_CODE_VOID)
8101 return 0;
8102 else if (TYPE_NAME (type1) == NULL && TYPE_NAME (type0) != NULL)
8103 return 1;
8104 else if (ada_is_constrained_packed_array_type (type0))
8105 return 1;
8106 else if (ada_is_array_descriptor_type (type0)
8107 && !ada_is_array_descriptor_type (type1))
8108 return 1;
8109 else
8110 {
8111 const char *type0_name = TYPE_NAME (type0);
8112 const char *type1_name = TYPE_NAME (type1);
8113
8114 if (type0_name != NULL && strstr (type0_name, "___XR") != NULL
8115 && (type1_name == NULL || strstr (type1_name, "___XR") == NULL))
8116 return 1;
8117 }
8118 return 0;
8119 }
8120
8121 /* The name of TYPE, which is its TYPE_NAME. Null if TYPE is
8122 null. */
8123
8124 const char *
8125 ada_type_name (struct type *type)
8126 {
8127 if (type == NULL)
8128 return NULL;
8129 return TYPE_NAME (type);
8130 }
8131
8132 /* Search the list of "descriptive" types associated to TYPE for a type
8133 whose name is NAME. */
8134
8135 static struct type *
8136 find_parallel_type_by_descriptive_type (struct type *type, const char *name)
8137 {
8138 struct type *result, *tmp;
8139
8140 if (ada_ignore_descriptive_types_p)
8141 return NULL;
8142
8143 /* If there no descriptive-type info, then there is no parallel type
8144 to be found. */
8145 if (!HAVE_GNAT_AUX_INFO (type))
8146 return NULL;
8147
8148 result = TYPE_DESCRIPTIVE_TYPE (type);
8149 while (result != NULL)
8150 {
8151 const char *result_name = ada_type_name (result);
8152
8153 if (result_name == NULL)
8154 {
8155 warning (_("unexpected null name on descriptive type"));
8156 return NULL;
8157 }
8158
8159 /* If the names match, stop. */
8160 if (strcmp (result_name, name) == 0)
8161 break;
8162
8163 /* Otherwise, look at the next item on the list, if any. */
8164 if (HAVE_GNAT_AUX_INFO (result))
8165 tmp = TYPE_DESCRIPTIVE_TYPE (result);
8166 else
8167 tmp = NULL;
8168
8169 /* If not found either, try after having resolved the typedef. */
8170 if (tmp != NULL)
8171 result = tmp;
8172 else
8173 {
8174 result = check_typedef (result);
8175 if (HAVE_GNAT_AUX_INFO (result))
8176 result = TYPE_DESCRIPTIVE_TYPE (result);
8177 else
8178 result = NULL;
8179 }
8180 }
8181
8182 /* If we didn't find a match, see whether this is a packed array. With
8183 older compilers, the descriptive type information is either absent or
8184 irrelevant when it comes to packed arrays so the above lookup fails.
8185 Fall back to using a parallel lookup by name in this case. */
8186 if (result == NULL && ada_is_constrained_packed_array_type (type))
8187 return ada_find_any_type (name);
8188
8189 return result;
8190 }
8191
8192 /* Find a parallel type to TYPE with the specified NAME, using the
8193 descriptive type taken from the debugging information, if available,
8194 and otherwise using the (slower) name-based method. */
8195
8196 static struct type *
8197 ada_find_parallel_type_with_name (struct type *type, const char *name)
8198 {
8199 struct type *result = NULL;
8200
8201 if (HAVE_GNAT_AUX_INFO (type))
8202 result = find_parallel_type_by_descriptive_type (type, name);
8203 else
8204 result = ada_find_any_type (name);
8205
8206 return result;
8207 }
8208
8209 /* Same as above, but specify the name of the parallel type by appending
8210 SUFFIX to the name of TYPE. */
8211
8212 struct type *
8213 ada_find_parallel_type (struct type *type, const char *suffix)
8214 {
8215 char *name;
8216 const char *type_name = ada_type_name (type);
8217 int len;
8218
8219 if (type_name == NULL)
8220 return NULL;
8221
8222 len = strlen (type_name);
8223
8224 name = (char *) alloca (len + strlen (suffix) + 1);
8225
8226 strcpy (name, type_name);
8227 strcpy (name + len, suffix);
8228
8229 return ada_find_parallel_type_with_name (type, name);
8230 }
8231
8232 /* If TYPE is a variable-size record type, return the corresponding template
8233 type describing its fields. Otherwise, return NULL. */
8234
8235 static struct type *
8236 dynamic_template_type (struct type *type)
8237 {
8238 type = ada_check_typedef (type);
8239
8240 if (type == NULL || TYPE_CODE (type) != TYPE_CODE_STRUCT
8241 || ada_type_name (type) == NULL)
8242 return NULL;
8243 else
8244 {
8245 int len = strlen (ada_type_name (type));
8246
8247 if (len > 6 && strcmp (ada_type_name (type) + len - 6, "___XVE") == 0)
8248 return type;
8249 else
8250 return ada_find_parallel_type (type, "___XVE");
8251 }
8252 }
8253
8254 /* Assuming that TEMPL_TYPE is a union or struct type, returns
8255 non-zero iff field FIELD_NUM of TEMPL_TYPE has dynamic size. */
8256
8257 static int
8258 is_dynamic_field (struct type *templ_type, int field_num)
8259 {
8260 const char *name = TYPE_FIELD_NAME (templ_type, field_num);
8261
8262 return name != NULL
8263 && TYPE_CODE (TYPE_FIELD_TYPE (templ_type, field_num)) == TYPE_CODE_PTR
8264 && strstr (name, "___XVL") != NULL;
8265 }
8266
8267 /* The index of the variant field of TYPE, or -1 if TYPE does not
8268 represent a variant record type. */
8269
8270 static int
8271 variant_field_index (struct type *type)
8272 {
8273 int f;
8274
8275 if (type == NULL || TYPE_CODE (type) != TYPE_CODE_STRUCT)
8276 return -1;
8277
8278 for (f = 0; f < TYPE_NFIELDS (type); f += 1)
8279 {
8280 if (ada_is_variant_part (type, f))
8281 return f;
8282 }
8283 return -1;
8284 }
8285
8286 /* A record type with no fields. */
8287
8288 static struct type *
8289 empty_record (struct type *templ)
8290 {
8291 struct type *type = alloc_type_copy (templ);
8292
8293 TYPE_CODE (type) = TYPE_CODE_STRUCT;
8294 TYPE_NFIELDS (type) = 0;
8295 TYPE_FIELDS (type) = NULL;
8296 INIT_NONE_SPECIFIC (type);
8297 TYPE_NAME (type) = "<empty>";
8298 TYPE_LENGTH (type) = 0;
8299 return type;
8300 }
8301
8302 /* An ordinary record type (with fixed-length fields) that describes
8303 the value of type TYPE at VALADDR or ADDRESS (see comments at
8304 the beginning of this section) VAL according to GNAT conventions.
8305 DVAL0 should describe the (portion of a) record that contains any
8306 necessary discriminants. It should be NULL if value_type (VAL) is
8307 an outer-level type (i.e., as opposed to a branch of a variant.) A
8308 variant field (unless unchecked) is replaced by a particular branch
8309 of the variant.
8310
8311 If not KEEP_DYNAMIC_FIELDS, then all fields whose position or
8312 length are not statically known are discarded. As a consequence,
8313 VALADDR, ADDRESS and DVAL0 are ignored.
8314
8315 NOTE: Limitations: For now, we assume that dynamic fields and
8316 variants occupy whole numbers of bytes. However, they need not be
8317 byte-aligned. */
8318
8319 struct type *
8320 ada_template_to_fixed_record_type_1 (struct type *type,
8321 const gdb_byte *valaddr,
8322 CORE_ADDR address, struct value *dval0,
8323 int keep_dynamic_fields)
8324 {
8325 struct value *mark = value_mark ();
8326 struct value *dval;
8327 struct type *rtype;
8328 int nfields, bit_len;
8329 int variant_field;
8330 long off;
8331 int fld_bit_len;
8332 int f;
8333
8334 /* Compute the number of fields in this record type that are going
8335 to be processed: unless keep_dynamic_fields, this includes only
8336 fields whose position and length are static will be processed. */
8337 if (keep_dynamic_fields)
8338 nfields = TYPE_NFIELDS (type);
8339 else
8340 {
8341 nfields = 0;
8342 while (nfields < TYPE_NFIELDS (type)
8343 && !ada_is_variant_part (type, nfields)
8344 && !is_dynamic_field (type, nfields))
8345 nfields++;
8346 }
8347
8348 rtype = alloc_type_copy (type);
8349 TYPE_CODE (rtype) = TYPE_CODE_STRUCT;
8350 INIT_NONE_SPECIFIC (rtype);
8351 TYPE_NFIELDS (rtype) = nfields;
8352 TYPE_FIELDS (rtype) = (struct field *)
8353 TYPE_ALLOC (rtype, nfields * sizeof (struct field));
8354 memset (TYPE_FIELDS (rtype), 0, sizeof (struct field) * nfields);
8355 TYPE_NAME (rtype) = ada_type_name (type);
8356 TYPE_FIXED_INSTANCE (rtype) = 1;
8357
8358 off = 0;
8359 bit_len = 0;
8360 variant_field = -1;
8361
8362 for (f = 0; f < nfields; f += 1)
8363 {
8364 off = align_value (off, field_alignment (type, f))
8365 + TYPE_FIELD_BITPOS (type, f);
8366 SET_FIELD_BITPOS (TYPE_FIELD (rtype, f), off);
8367 TYPE_FIELD_BITSIZE (rtype, f) = 0;
8368
8369 if (ada_is_variant_part (type, f))
8370 {
8371 variant_field = f;
8372 fld_bit_len = 0;
8373 }
8374 else if (is_dynamic_field (type, f))
8375 {
8376 const gdb_byte *field_valaddr = valaddr;
8377 CORE_ADDR field_address = address;
8378 struct type *field_type =
8379 TYPE_TARGET_TYPE (TYPE_FIELD_TYPE (type, f));
8380
8381 if (dval0 == NULL)
8382 {
8383 /* rtype's length is computed based on the run-time
8384 value of discriminants. If the discriminants are not
8385 initialized, the type size may be completely bogus and
8386 GDB may fail to allocate a value for it. So check the
8387 size first before creating the value. */
8388 ada_ensure_varsize_limit (rtype);
8389 /* Using plain value_from_contents_and_address here
8390 causes problems because we will end up trying to
8391 resolve a type that is currently being
8392 constructed. */
8393 dval = value_from_contents_and_address_unresolved (rtype,
8394 valaddr,
8395 address);
8396 rtype = value_type (dval);
8397 }
8398 else
8399 dval = dval0;
8400
8401 /* If the type referenced by this field is an aligner type, we need
8402 to unwrap that aligner type, because its size might not be set.
8403 Keeping the aligner type would cause us to compute the wrong
8404 size for this field, impacting the offset of the all the fields
8405 that follow this one. */
8406 if (ada_is_aligner_type (field_type))
8407 {
8408 long field_offset = TYPE_FIELD_BITPOS (field_type, f);
8409
8410 field_valaddr = cond_offset_host (field_valaddr, field_offset);
8411 field_address = cond_offset_target (field_address, field_offset);
8412 field_type = ada_aligned_type (field_type);
8413 }
8414
8415 field_valaddr = cond_offset_host (field_valaddr,
8416 off / TARGET_CHAR_BIT);
8417 field_address = cond_offset_target (field_address,
8418 off / TARGET_CHAR_BIT);
8419
8420 /* Get the fixed type of the field. Note that, in this case,
8421 we do not want to get the real type out of the tag: if
8422 the current field is the parent part of a tagged record,
8423 we will get the tag of the object. Clearly wrong: the real
8424 type of the parent is not the real type of the child. We
8425 would end up in an infinite loop. */
8426 field_type = ada_get_base_type (field_type);
8427 field_type = ada_to_fixed_type (field_type, field_valaddr,
8428 field_address, dval, 0);
8429 /* If the field size is already larger than the maximum
8430 object size, then the record itself will necessarily
8431 be larger than the maximum object size. We need to make
8432 this check now, because the size might be so ridiculously
8433 large (due to an uninitialized variable in the inferior)
8434 that it would cause an overflow when adding it to the
8435 record size. */
8436 ada_ensure_varsize_limit (field_type);
8437
8438 TYPE_FIELD_TYPE (rtype, f) = field_type;
8439 TYPE_FIELD_NAME (rtype, f) = TYPE_FIELD_NAME (type, f);
8440 /* The multiplication can potentially overflow. But because
8441 the field length has been size-checked just above, and
8442 assuming that the maximum size is a reasonable value,
8443 an overflow should not happen in practice. So rather than
8444 adding overflow recovery code to this already complex code,
8445 we just assume that it's not going to happen. */
8446 fld_bit_len =
8447 TYPE_LENGTH (TYPE_FIELD_TYPE (rtype, f)) * TARGET_CHAR_BIT;
8448 }
8449 else
8450 {
8451 /* Note: If this field's type is a typedef, it is important
8452 to preserve the typedef layer.
8453
8454 Otherwise, we might be transforming a typedef to a fat
8455 pointer (encoding a pointer to an unconstrained array),
8456 into a basic fat pointer (encoding an unconstrained
8457 array). As both types are implemented using the same
8458 structure, the typedef is the only clue which allows us
8459 to distinguish between the two options. Stripping it
8460 would prevent us from printing this field appropriately. */
8461 TYPE_FIELD_TYPE (rtype, f) = TYPE_FIELD_TYPE (type, f);
8462 TYPE_FIELD_NAME (rtype, f) = TYPE_FIELD_NAME (type, f);
8463 if (TYPE_FIELD_BITSIZE (type, f) > 0)
8464 fld_bit_len =
8465 TYPE_FIELD_BITSIZE (rtype, f) = TYPE_FIELD_BITSIZE (type, f);
8466 else
8467 {
8468 struct type *field_type = TYPE_FIELD_TYPE (type, f);
8469
8470 /* We need to be careful of typedefs when computing
8471 the length of our field. If this is a typedef,
8472 get the length of the target type, not the length
8473 of the typedef. */
8474 if (TYPE_CODE (field_type) == TYPE_CODE_TYPEDEF)
8475 field_type = ada_typedef_target_type (field_type);
8476
8477 fld_bit_len =
8478 TYPE_LENGTH (ada_check_typedef (field_type)) * TARGET_CHAR_BIT;
8479 }
8480 }
8481 if (off + fld_bit_len > bit_len)
8482 bit_len = off + fld_bit_len;
8483 off += fld_bit_len;
8484 TYPE_LENGTH (rtype) =
8485 align_value (bit_len, TARGET_CHAR_BIT) / TARGET_CHAR_BIT;
8486 }
8487
8488 /* We handle the variant part, if any, at the end because of certain
8489 odd cases in which it is re-ordered so as NOT to be the last field of
8490 the record. This can happen in the presence of representation
8491 clauses. */
8492 if (variant_field >= 0)
8493 {
8494 struct type *branch_type;
8495
8496 off = TYPE_FIELD_BITPOS (rtype, variant_field);
8497
8498 if (dval0 == NULL)
8499 {
8500 /* Using plain value_from_contents_and_address here causes
8501 problems because we will end up trying to resolve a type
8502 that is currently being constructed. */
8503 dval = value_from_contents_and_address_unresolved (rtype, valaddr,
8504 address);
8505 rtype = value_type (dval);
8506 }
8507 else
8508 dval = dval0;
8509
8510 branch_type =
8511 to_fixed_variant_branch_type
8512 (TYPE_FIELD_TYPE (type, variant_field),
8513 cond_offset_host (valaddr, off / TARGET_CHAR_BIT),
8514 cond_offset_target (address, off / TARGET_CHAR_BIT), dval);
8515 if (branch_type == NULL)
8516 {
8517 for (f = variant_field + 1; f < TYPE_NFIELDS (rtype); f += 1)
8518 TYPE_FIELDS (rtype)[f - 1] = TYPE_FIELDS (rtype)[f];
8519 TYPE_NFIELDS (rtype) -= 1;
8520 }
8521 else
8522 {
8523 TYPE_FIELD_TYPE (rtype, variant_field) = branch_type;
8524 TYPE_FIELD_NAME (rtype, variant_field) = "S";
8525 fld_bit_len =
8526 TYPE_LENGTH (TYPE_FIELD_TYPE (rtype, variant_field)) *
8527 TARGET_CHAR_BIT;
8528 if (off + fld_bit_len > bit_len)
8529 bit_len = off + fld_bit_len;
8530 TYPE_LENGTH (rtype) =
8531 align_value (bit_len, TARGET_CHAR_BIT) / TARGET_CHAR_BIT;
8532 }
8533 }
8534
8535 /* According to exp_dbug.ads, the size of TYPE for variable-size records
8536 should contain the alignment of that record, which should be a strictly
8537 positive value. If null or negative, then something is wrong, most
8538 probably in the debug info. In that case, we don't round up the size
8539 of the resulting type. If this record is not part of another structure,
8540 the current RTYPE length might be good enough for our purposes. */
8541 if (TYPE_LENGTH (type) <= 0)
8542 {
8543 if (TYPE_NAME (rtype))
8544 warning (_("Invalid type size for `%s' detected: %s."),
8545 TYPE_NAME (rtype), pulongest (TYPE_LENGTH (type)));
8546 else
8547 warning (_("Invalid type size for <unnamed> detected: %s."),
8548 pulongest (TYPE_LENGTH (type)));
8549 }
8550 else
8551 {
8552 TYPE_LENGTH (rtype) = align_value (TYPE_LENGTH (rtype),
8553 TYPE_LENGTH (type));
8554 }
8555
8556 value_free_to_mark (mark);
8557 if (TYPE_LENGTH (rtype) > varsize_limit)
8558 error (_("record type with dynamic size is larger than varsize-limit"));
8559 return rtype;
8560 }
8561
8562 /* As for ada_template_to_fixed_record_type_1 with KEEP_DYNAMIC_FIELDS
8563 of 1. */
8564
8565 static struct type *
8566 template_to_fixed_record_type (struct type *type, const gdb_byte *valaddr,
8567 CORE_ADDR address, struct value *dval0)
8568 {
8569 return ada_template_to_fixed_record_type_1 (type, valaddr,
8570 address, dval0, 1);
8571 }
8572
8573 /* An ordinary record type in which ___XVL-convention fields and
8574 ___XVU- and ___XVN-convention field types in TYPE0 are replaced with
8575 static approximations, containing all possible fields. Uses
8576 no runtime values. Useless for use in values, but that's OK,
8577 since the results are used only for type determinations. Works on both
8578 structs and unions. Representation note: to save space, we memorize
8579 the result of this function in the TYPE_TARGET_TYPE of the
8580 template type. */
8581
8582 static struct type *
8583 template_to_static_fixed_type (struct type *type0)
8584 {
8585 struct type *type;
8586 int nfields;
8587 int f;
8588
8589 /* No need no do anything if the input type is already fixed. */
8590 if (TYPE_FIXED_INSTANCE (type0))
8591 return type0;
8592
8593 /* Likewise if we already have computed the static approximation. */
8594 if (TYPE_TARGET_TYPE (type0) != NULL)
8595 return TYPE_TARGET_TYPE (type0);
8596
8597 /* Don't clone TYPE0 until we are sure we are going to need a copy. */
8598 type = type0;
8599 nfields = TYPE_NFIELDS (type0);
8600
8601 /* Whether or not we cloned TYPE0, cache the result so that we don't do
8602 recompute all over next time. */
8603 TYPE_TARGET_TYPE (type0) = type;
8604
8605 for (f = 0; f < nfields; f += 1)
8606 {
8607 struct type *field_type = TYPE_FIELD_TYPE (type0, f);
8608 struct type *new_type;
8609
8610 if (is_dynamic_field (type0, f))
8611 {
8612 field_type = ada_check_typedef (field_type);
8613 new_type = to_static_fixed_type (TYPE_TARGET_TYPE (field_type));
8614 }
8615 else
8616 new_type = static_unwrap_type (field_type);
8617
8618 if (new_type != field_type)
8619 {
8620 /* Clone TYPE0 only the first time we get a new field type. */
8621 if (type == type0)
8622 {
8623 TYPE_TARGET_TYPE (type0) = type = alloc_type_copy (type0);
8624 TYPE_CODE (type) = TYPE_CODE (type0);
8625 INIT_NONE_SPECIFIC (type);
8626 TYPE_NFIELDS (type) = nfields;
8627 TYPE_FIELDS (type) = (struct field *)
8628 TYPE_ALLOC (type, nfields * sizeof (struct field));
8629 memcpy (TYPE_FIELDS (type), TYPE_FIELDS (type0),
8630 sizeof (struct field) * nfields);
8631 TYPE_NAME (type) = ada_type_name (type0);
8632 TYPE_FIXED_INSTANCE (type) = 1;
8633 TYPE_LENGTH (type) = 0;
8634 }
8635 TYPE_FIELD_TYPE (type, f) = new_type;
8636 TYPE_FIELD_NAME (type, f) = TYPE_FIELD_NAME (type0, f);
8637 }
8638 }
8639
8640 return type;
8641 }
8642
8643 /* Given an object of type TYPE whose contents are at VALADDR and
8644 whose address in memory is ADDRESS, returns a revision of TYPE,
8645 which should be a non-dynamic-sized record, in which the variant
8646 part, if any, is replaced with the appropriate branch. Looks
8647 for discriminant values in DVAL0, which can be NULL if the record
8648 contains the necessary discriminant values. */
8649
8650 static struct type *
8651 to_record_with_fixed_variant_part (struct type *type, const gdb_byte *valaddr,
8652 CORE_ADDR address, struct value *dval0)
8653 {
8654 struct value *mark = value_mark ();
8655 struct value *dval;
8656 struct type *rtype;
8657 struct type *branch_type;
8658 int nfields = TYPE_NFIELDS (type);
8659 int variant_field = variant_field_index (type);
8660
8661 if (variant_field == -1)
8662 return type;
8663
8664 if (dval0 == NULL)
8665 {
8666 dval = value_from_contents_and_address (type, valaddr, address);
8667 type = value_type (dval);
8668 }
8669 else
8670 dval = dval0;
8671
8672 rtype = alloc_type_copy (type);
8673 TYPE_CODE (rtype) = TYPE_CODE_STRUCT;
8674 INIT_NONE_SPECIFIC (rtype);
8675 TYPE_NFIELDS (rtype) = nfields;
8676 TYPE_FIELDS (rtype) =
8677 (struct field *) TYPE_ALLOC (rtype, nfields * sizeof (struct field));
8678 memcpy (TYPE_FIELDS (rtype), TYPE_FIELDS (type),
8679 sizeof (struct field) * nfields);
8680 TYPE_NAME (rtype) = ada_type_name (type);
8681 TYPE_FIXED_INSTANCE (rtype) = 1;
8682 TYPE_LENGTH (rtype) = TYPE_LENGTH (type);
8683
8684 branch_type = to_fixed_variant_branch_type
8685 (TYPE_FIELD_TYPE (type, variant_field),
8686 cond_offset_host (valaddr,
8687 TYPE_FIELD_BITPOS (type, variant_field)
8688 / TARGET_CHAR_BIT),
8689 cond_offset_target (address,
8690 TYPE_FIELD_BITPOS (type, variant_field)
8691 / TARGET_CHAR_BIT), dval);
8692 if (branch_type == NULL)
8693 {
8694 int f;
8695
8696 for (f = variant_field + 1; f < nfields; f += 1)
8697 TYPE_FIELDS (rtype)[f - 1] = TYPE_FIELDS (rtype)[f];
8698 TYPE_NFIELDS (rtype) -= 1;
8699 }
8700 else
8701 {
8702 TYPE_FIELD_TYPE (rtype, variant_field) = branch_type;
8703 TYPE_FIELD_NAME (rtype, variant_field) = "S";
8704 TYPE_FIELD_BITSIZE (rtype, variant_field) = 0;
8705 TYPE_LENGTH (rtype) += TYPE_LENGTH (branch_type);
8706 }
8707 TYPE_LENGTH (rtype) -= TYPE_LENGTH (TYPE_FIELD_TYPE (type, variant_field));
8708
8709 value_free_to_mark (mark);
8710 return rtype;
8711 }
8712
8713 /* An ordinary record type (with fixed-length fields) that describes
8714 the value at (TYPE0, VALADDR, ADDRESS) [see explanation at
8715 beginning of this section]. Any necessary discriminants' values
8716 should be in DVAL, a record value; it may be NULL if the object
8717 at ADDR itself contains any necessary discriminant values.
8718 Additionally, VALADDR and ADDRESS may also be NULL if no discriminant
8719 values from the record are needed. Except in the case that DVAL,
8720 VALADDR, and ADDRESS are all 0 or NULL, a variant field (unless
8721 unchecked) is replaced by a particular branch of the variant.
8722
8723 NOTE: the case in which DVAL and VALADDR are NULL and ADDRESS is 0
8724 is questionable and may be removed. It can arise during the
8725 processing of an unconstrained-array-of-record type where all the
8726 variant branches have exactly the same size. This is because in
8727 such cases, the compiler does not bother to use the XVS convention
8728 when encoding the record. I am currently dubious of this
8729 shortcut and suspect the compiler should be altered. FIXME. */
8730
8731 static struct type *
8732 to_fixed_record_type (struct type *type0, const gdb_byte *valaddr,
8733 CORE_ADDR address, struct value *dval)
8734 {
8735 struct type *templ_type;
8736
8737 if (TYPE_FIXED_INSTANCE (type0))
8738 return type0;
8739
8740 templ_type = dynamic_template_type (type0);
8741
8742 if (templ_type != NULL)
8743 return template_to_fixed_record_type (templ_type, valaddr, address, dval);
8744 else if (variant_field_index (type0) >= 0)
8745 {
8746 if (dval == NULL && valaddr == NULL && address == 0)
8747 return type0;
8748 return to_record_with_fixed_variant_part (type0, valaddr, address,
8749 dval);
8750 }
8751 else
8752 {
8753 TYPE_FIXED_INSTANCE (type0) = 1;
8754 return type0;
8755 }
8756
8757 }
8758
8759 /* An ordinary record type (with fixed-length fields) that describes
8760 the value at (VAR_TYPE0, VALADDR, ADDRESS), where VAR_TYPE0 is a
8761 union type. Any necessary discriminants' values should be in DVAL,
8762 a record value. That is, this routine selects the appropriate
8763 branch of the union at ADDR according to the discriminant value
8764 indicated in the union's type name. Returns VAR_TYPE0 itself if
8765 it represents a variant subject to a pragma Unchecked_Union. */
8766
8767 static struct type *
8768 to_fixed_variant_branch_type (struct type *var_type0, const gdb_byte *valaddr,
8769 CORE_ADDR address, struct value *dval)
8770 {
8771 int which;
8772 struct type *templ_type;
8773 struct type *var_type;
8774
8775 if (TYPE_CODE (var_type0) == TYPE_CODE_PTR)
8776 var_type = TYPE_TARGET_TYPE (var_type0);
8777 else
8778 var_type = var_type0;
8779
8780 templ_type = ada_find_parallel_type (var_type, "___XVU");
8781
8782 if (templ_type != NULL)
8783 var_type = templ_type;
8784
8785 if (is_unchecked_variant (var_type, value_type (dval)))
8786 return var_type0;
8787 which =
8788 ada_which_variant_applies (var_type,
8789 value_type (dval), value_contents (dval));
8790
8791 if (which < 0)
8792 return empty_record (var_type);
8793 else if (is_dynamic_field (var_type, which))
8794 return to_fixed_record_type
8795 (TYPE_TARGET_TYPE (TYPE_FIELD_TYPE (var_type, which)),
8796 valaddr, address, dval);
8797 else if (variant_field_index (TYPE_FIELD_TYPE (var_type, which)) >= 0)
8798 return
8799 to_fixed_record_type
8800 (TYPE_FIELD_TYPE (var_type, which), valaddr, address, dval);
8801 else
8802 return TYPE_FIELD_TYPE (var_type, which);
8803 }
8804
8805 /* Assuming RANGE_TYPE is a TYPE_CODE_RANGE, return nonzero if
8806 ENCODING_TYPE, a type following the GNAT conventions for discrete
8807 type encodings, only carries redundant information. */
8808
8809 static int
8810 ada_is_redundant_range_encoding (struct type *range_type,
8811 struct type *encoding_type)
8812 {
8813 const char *bounds_str;
8814 int n;
8815 LONGEST lo, hi;
8816
8817 gdb_assert (TYPE_CODE (range_type) == TYPE_CODE_RANGE);
8818
8819 if (TYPE_CODE (get_base_type (range_type))
8820 != TYPE_CODE (get_base_type (encoding_type)))
8821 {
8822 /* The compiler probably used a simple base type to describe
8823 the range type instead of the range's actual base type,
8824 expecting us to get the real base type from the encoding
8825 anyway. In this situation, the encoding cannot be ignored
8826 as redundant. */
8827 return 0;
8828 }
8829
8830 if (is_dynamic_type (range_type))
8831 return 0;
8832
8833 if (TYPE_NAME (encoding_type) == NULL)
8834 return 0;
8835
8836 bounds_str = strstr (TYPE_NAME (encoding_type), "___XDLU_");
8837 if (bounds_str == NULL)
8838 return 0;
8839
8840 n = 8; /* Skip "___XDLU_". */
8841 if (!ada_scan_number (bounds_str, n, &lo, &n))
8842 return 0;
8843 if (TYPE_LOW_BOUND (range_type) != lo)
8844 return 0;
8845
8846 n += 2; /* Skip the "__" separator between the two bounds. */
8847 if (!ada_scan_number (bounds_str, n, &hi, &n))
8848 return 0;
8849 if (TYPE_HIGH_BOUND (range_type) != hi)
8850 return 0;
8851
8852 return 1;
8853 }
8854
8855 /* Given the array type ARRAY_TYPE, return nonzero if DESC_TYPE,
8856 a type following the GNAT encoding for describing array type
8857 indices, only carries redundant information. */
8858
8859 static int
8860 ada_is_redundant_index_type_desc (struct type *array_type,
8861 struct type *desc_type)
8862 {
8863 struct type *this_layer = check_typedef (array_type);
8864 int i;
8865
8866 for (i = 0; i < TYPE_NFIELDS (desc_type); i++)
8867 {
8868 if (!ada_is_redundant_range_encoding (TYPE_INDEX_TYPE (this_layer),
8869 TYPE_FIELD_TYPE (desc_type, i)))
8870 return 0;
8871 this_layer = check_typedef (TYPE_TARGET_TYPE (this_layer));
8872 }
8873
8874 return 1;
8875 }
8876
8877 /* Assuming that TYPE0 is an array type describing the type of a value
8878 at ADDR, and that DVAL describes a record containing any
8879 discriminants used in TYPE0, returns a type for the value that
8880 contains no dynamic components (that is, no components whose sizes
8881 are determined by run-time quantities). Unless IGNORE_TOO_BIG is
8882 true, gives an error message if the resulting type's size is over
8883 varsize_limit. */
8884
8885 static struct type *
8886 to_fixed_array_type (struct type *type0, struct value *dval,
8887 int ignore_too_big)
8888 {
8889 struct type *index_type_desc;
8890 struct type *result;
8891 int constrained_packed_array_p;
8892 static const char *xa_suffix = "___XA";
8893
8894 type0 = ada_check_typedef (type0);
8895 if (TYPE_FIXED_INSTANCE (type0))
8896 return type0;
8897
8898 constrained_packed_array_p = ada_is_constrained_packed_array_type (type0);
8899 if (constrained_packed_array_p)
8900 type0 = decode_constrained_packed_array_type (type0);
8901
8902 index_type_desc = ada_find_parallel_type (type0, xa_suffix);
8903
8904 /* As mentioned in exp_dbug.ads, for non bit-packed arrays an
8905 encoding suffixed with 'P' may still be generated. If so,
8906 it should be used to find the XA type. */
8907
8908 if (index_type_desc == NULL)
8909 {
8910 const char *type_name = ada_type_name (type0);
8911
8912 if (type_name != NULL)
8913 {
8914 const int len = strlen (type_name);
8915 char *name = (char *) alloca (len + strlen (xa_suffix));
8916
8917 if (type_name[len - 1] == 'P')
8918 {
8919 strcpy (name, type_name);
8920 strcpy (name + len - 1, xa_suffix);
8921 index_type_desc = ada_find_parallel_type_with_name (type0, name);
8922 }
8923 }
8924 }
8925
8926 ada_fixup_array_indexes_type (index_type_desc);
8927 if (index_type_desc != NULL
8928 && ada_is_redundant_index_type_desc (type0, index_type_desc))
8929 {
8930 /* Ignore this ___XA parallel type, as it does not bring any
8931 useful information. This allows us to avoid creating fixed
8932 versions of the array's index types, which would be identical
8933 to the original ones. This, in turn, can also help avoid
8934 the creation of fixed versions of the array itself. */
8935 index_type_desc = NULL;
8936 }
8937
8938 if (index_type_desc == NULL)
8939 {
8940 struct type *elt_type0 = ada_check_typedef (TYPE_TARGET_TYPE (type0));
8941
8942 /* NOTE: elt_type---the fixed version of elt_type0---should never
8943 depend on the contents of the array in properly constructed
8944 debugging data. */
8945 /* Create a fixed version of the array element type.
8946 We're not providing the address of an element here,
8947 and thus the actual object value cannot be inspected to do
8948 the conversion. This should not be a problem, since arrays of
8949 unconstrained objects are not allowed. In particular, all
8950 the elements of an array of a tagged type should all be of
8951 the same type specified in the debugging info. No need to
8952 consult the object tag. */
8953 struct type *elt_type = ada_to_fixed_type (elt_type0, 0, 0, dval, 1);
8954
8955 /* Make sure we always create a new array type when dealing with
8956 packed array types, since we're going to fix-up the array
8957 type length and element bitsize a little further down. */
8958 if (elt_type0 == elt_type && !constrained_packed_array_p)
8959 result = type0;
8960 else
8961 result = create_array_type (alloc_type_copy (type0),
8962 elt_type, TYPE_INDEX_TYPE (type0));
8963 }
8964 else
8965 {
8966 int i;
8967 struct type *elt_type0;
8968
8969 elt_type0 = type0;
8970 for (i = TYPE_NFIELDS (index_type_desc); i > 0; i -= 1)
8971 elt_type0 = TYPE_TARGET_TYPE (elt_type0);
8972
8973 /* NOTE: result---the fixed version of elt_type0---should never
8974 depend on the contents of the array in properly constructed
8975 debugging data. */
8976 /* Create a fixed version of the array element type.
8977 We're not providing the address of an element here,
8978 and thus the actual object value cannot be inspected to do
8979 the conversion. This should not be a problem, since arrays of
8980 unconstrained objects are not allowed. In particular, all
8981 the elements of an array of a tagged type should all be of
8982 the same type specified in the debugging info. No need to
8983 consult the object tag. */
8984 result =
8985 ada_to_fixed_type (ada_check_typedef (elt_type0), 0, 0, dval, 1);
8986
8987 elt_type0 = type0;
8988 for (i = TYPE_NFIELDS (index_type_desc) - 1; i >= 0; i -= 1)
8989 {
8990 struct type *range_type =
8991 to_fixed_range_type (TYPE_FIELD_TYPE (index_type_desc, i), dval);
8992
8993 result = create_array_type (alloc_type_copy (elt_type0),
8994 result, range_type);
8995 elt_type0 = TYPE_TARGET_TYPE (elt_type0);
8996 }
8997 if (!ignore_too_big && TYPE_LENGTH (result) > varsize_limit)
8998 error (_("array type with dynamic size is larger than varsize-limit"));
8999 }
9000
9001 /* We want to preserve the type name. This can be useful when
9002 trying to get the type name of a value that has already been
9003 printed (for instance, if the user did "print VAR; whatis $". */
9004 TYPE_NAME (result) = TYPE_NAME (type0);
9005
9006 if (constrained_packed_array_p)
9007 {
9008 /* So far, the resulting type has been created as if the original
9009 type was a regular (non-packed) array type. As a result, the
9010 bitsize of the array elements needs to be set again, and the array
9011 length needs to be recomputed based on that bitsize. */
9012 int len = TYPE_LENGTH (result) / TYPE_LENGTH (TYPE_TARGET_TYPE (result));
9013 int elt_bitsize = TYPE_FIELD_BITSIZE (type0, 0);
9014
9015 TYPE_FIELD_BITSIZE (result, 0) = TYPE_FIELD_BITSIZE (type0, 0);
9016 TYPE_LENGTH (result) = len * elt_bitsize / HOST_CHAR_BIT;
9017 if (TYPE_LENGTH (result) * HOST_CHAR_BIT < len * elt_bitsize)
9018 TYPE_LENGTH (result)++;
9019 }
9020
9021 TYPE_FIXED_INSTANCE (result) = 1;
9022 return result;
9023 }
9024
9025
9026 /* A standard type (containing no dynamically sized components)
9027 corresponding to TYPE for the value (TYPE, VALADDR, ADDRESS)
9028 DVAL describes a record containing any discriminants used in TYPE0,
9029 and may be NULL if there are none, or if the object of type TYPE at
9030 ADDRESS or in VALADDR contains these discriminants.
9031
9032 If CHECK_TAG is not null, in the case of tagged types, this function
9033 attempts to locate the object's tag and use it to compute the actual
9034 type. However, when ADDRESS is null, we cannot use it to determine the
9035 location of the tag, and therefore compute the tagged type's actual type.
9036 So we return the tagged type without consulting the tag. */
9037
9038 static struct type *
9039 ada_to_fixed_type_1 (struct type *type, const gdb_byte *valaddr,
9040 CORE_ADDR address, struct value *dval, int check_tag)
9041 {
9042 type = ada_check_typedef (type);
9043
9044 /* Only un-fixed types need to be handled here. */
9045 if (!HAVE_GNAT_AUX_INFO (type))
9046 return type;
9047
9048 switch (TYPE_CODE (type))
9049 {
9050 default:
9051 return type;
9052 case TYPE_CODE_STRUCT:
9053 {
9054 struct type *static_type = to_static_fixed_type (type);
9055 struct type *fixed_record_type =
9056 to_fixed_record_type (type, valaddr, address, NULL);
9057
9058 /* If STATIC_TYPE is a tagged type and we know the object's address,
9059 then we can determine its tag, and compute the object's actual
9060 type from there. Note that we have to use the fixed record
9061 type (the parent part of the record may have dynamic fields
9062 and the way the location of _tag is expressed may depend on
9063 them). */
9064
9065 if (check_tag && address != 0 && ada_is_tagged_type (static_type, 0))
9066 {
9067 struct value *tag =
9068 value_tag_from_contents_and_address
9069 (fixed_record_type,
9070 valaddr,
9071 address);
9072 struct type *real_type = type_from_tag (tag);
9073 struct value *obj =
9074 value_from_contents_and_address (fixed_record_type,
9075 valaddr,
9076 address);
9077 fixed_record_type = value_type (obj);
9078 if (real_type != NULL)
9079 return to_fixed_record_type
9080 (real_type, NULL,
9081 value_address (ada_tag_value_at_base_address (obj)), NULL);
9082 }
9083
9084 /* Check to see if there is a parallel ___XVZ variable.
9085 If there is, then it provides the actual size of our type. */
9086 else if (ada_type_name (fixed_record_type) != NULL)
9087 {
9088 const char *name = ada_type_name (fixed_record_type);
9089 char *xvz_name
9090 = (char *) alloca (strlen (name) + 7 /* "___XVZ\0" */);
9091 bool xvz_found = false;
9092 LONGEST size;
9093
9094 xsnprintf (xvz_name, strlen (name) + 7, "%s___XVZ", name);
9095 try
9096 {
9097 xvz_found = get_int_var_value (xvz_name, size);
9098 }
9099 catch (const gdb_exception_error &except)
9100 {
9101 /* We found the variable, but somehow failed to read
9102 its value. Rethrow the same error, but with a little
9103 bit more information, to help the user understand
9104 what went wrong (Eg: the variable might have been
9105 optimized out). */
9106 throw_error (except.error,
9107 _("unable to read value of %s (%s)"),
9108 xvz_name, except.what ());
9109 }
9110
9111 if (xvz_found && TYPE_LENGTH (fixed_record_type) != size)
9112 {
9113 fixed_record_type = copy_type (fixed_record_type);
9114 TYPE_LENGTH (fixed_record_type) = size;
9115
9116 /* The FIXED_RECORD_TYPE may have be a stub. We have
9117 observed this when the debugging info is STABS, and
9118 apparently it is something that is hard to fix.
9119
9120 In practice, we don't need the actual type definition
9121 at all, because the presence of the XVZ variable allows us
9122 to assume that there must be a XVS type as well, which we
9123 should be able to use later, when we need the actual type
9124 definition.
9125
9126 In the meantime, pretend that the "fixed" type we are
9127 returning is NOT a stub, because this can cause trouble
9128 when using this type to create new types targeting it.
9129 Indeed, the associated creation routines often check
9130 whether the target type is a stub and will try to replace
9131 it, thus using a type with the wrong size. This, in turn,
9132 might cause the new type to have the wrong size too.
9133 Consider the case of an array, for instance, where the size
9134 of the array is computed from the number of elements in
9135 our array multiplied by the size of its element. */
9136 TYPE_STUB (fixed_record_type) = 0;
9137 }
9138 }
9139 return fixed_record_type;
9140 }
9141 case TYPE_CODE_ARRAY:
9142 return to_fixed_array_type (type, dval, 1);
9143 case TYPE_CODE_UNION:
9144 if (dval == NULL)
9145 return type;
9146 else
9147 return to_fixed_variant_branch_type (type, valaddr, address, dval);
9148 }
9149 }
9150
9151 /* The same as ada_to_fixed_type_1, except that it preserves the type
9152 if it is a TYPE_CODE_TYPEDEF of a type that is already fixed.
9153
9154 The typedef layer needs be preserved in order to differentiate between
9155 arrays and array pointers when both types are implemented using the same
9156 fat pointer. In the array pointer case, the pointer is encoded as
9157 a typedef of the pointer type. For instance, considering:
9158
9159 type String_Access is access String;
9160 S1 : String_Access := null;
9161
9162 To the debugger, S1 is defined as a typedef of type String. But
9163 to the user, it is a pointer. So if the user tries to print S1,
9164 we should not dereference the array, but print the array address
9165 instead.
9166
9167 If we didn't preserve the typedef layer, we would lose the fact that
9168 the type is to be presented as a pointer (needs de-reference before
9169 being printed). And we would also use the source-level type name. */
9170
9171 struct type *
9172 ada_to_fixed_type (struct type *type, const gdb_byte *valaddr,
9173 CORE_ADDR address, struct value *dval, int check_tag)
9174
9175 {
9176 struct type *fixed_type =
9177 ada_to_fixed_type_1 (type, valaddr, address, dval, check_tag);
9178
9179 /* If TYPE is a typedef and its target type is the same as the FIXED_TYPE,
9180 then preserve the typedef layer.
9181
9182 Implementation note: We can only check the main-type portion of
9183 the TYPE and FIXED_TYPE, because eliminating the typedef layer
9184 from TYPE now returns a type that has the same instance flags
9185 as TYPE. For instance, if TYPE is a "typedef const", and its
9186 target type is a "struct", then the typedef elimination will return
9187 a "const" version of the target type. See check_typedef for more
9188 details about how the typedef layer elimination is done.
9189
9190 brobecker/2010-11-19: It seems to me that the only case where it is
9191 useful to preserve the typedef layer is when dealing with fat pointers.
9192 Perhaps, we could add a check for that and preserve the typedef layer
9193 only in that situation. But this seems unecessary so far, probably
9194 because we call check_typedef/ada_check_typedef pretty much everywhere.
9195 */
9196 if (TYPE_CODE (type) == TYPE_CODE_TYPEDEF
9197 && (TYPE_MAIN_TYPE (ada_typedef_target_type (type))
9198 == TYPE_MAIN_TYPE (fixed_type)))
9199 return type;
9200
9201 return fixed_type;
9202 }
9203
9204 /* A standard (static-sized) type corresponding as well as possible to
9205 TYPE0, but based on no runtime data. */
9206
9207 static struct type *
9208 to_static_fixed_type (struct type *type0)
9209 {
9210 struct type *type;
9211
9212 if (type0 == NULL)
9213 return NULL;
9214
9215 if (TYPE_FIXED_INSTANCE (type0))
9216 return type0;
9217
9218 type0 = ada_check_typedef (type0);
9219
9220 switch (TYPE_CODE (type0))
9221 {
9222 default:
9223 return type0;
9224 case TYPE_CODE_STRUCT:
9225 type = dynamic_template_type (type0);
9226 if (type != NULL)
9227 return template_to_static_fixed_type (type);
9228 else
9229 return template_to_static_fixed_type (type0);
9230 case TYPE_CODE_UNION:
9231 type = ada_find_parallel_type (type0, "___XVU");
9232 if (type != NULL)
9233 return template_to_static_fixed_type (type);
9234 else
9235 return template_to_static_fixed_type (type0);
9236 }
9237 }
9238
9239 /* A static approximation of TYPE with all type wrappers removed. */
9240
9241 static struct type *
9242 static_unwrap_type (struct type *type)
9243 {
9244 if (ada_is_aligner_type (type))
9245 {
9246 struct type *type1 = TYPE_FIELD_TYPE (ada_check_typedef (type), 0);
9247 if (ada_type_name (type1) == NULL)
9248 TYPE_NAME (type1) = ada_type_name (type);
9249
9250 return static_unwrap_type (type1);
9251 }
9252 else
9253 {
9254 struct type *raw_real_type = ada_get_base_type (type);
9255
9256 if (raw_real_type == type)
9257 return type;
9258 else
9259 return to_static_fixed_type (raw_real_type);
9260 }
9261 }
9262
9263 /* In some cases, incomplete and private types require
9264 cross-references that are not resolved as records (for example,
9265 type Foo;
9266 type FooP is access Foo;
9267 V: FooP;
9268 type Foo is array ...;
9269 ). In these cases, since there is no mechanism for producing
9270 cross-references to such types, we instead substitute for FooP a
9271 stub enumeration type that is nowhere resolved, and whose tag is
9272 the name of the actual type. Call these types "non-record stubs". */
9273
9274 /* A type equivalent to TYPE that is not a non-record stub, if one
9275 exists, otherwise TYPE. */
9276
9277 struct type *
9278 ada_check_typedef (struct type *type)
9279 {
9280 if (type == NULL)
9281 return NULL;
9282
9283 /* If our type is an access to an unconstrained array, which is encoded
9284 as a TYPE_CODE_TYPEDEF of a fat pointer, then we're done.
9285 We don't want to strip the TYPE_CODE_TYPDEF layer, because this is
9286 what allows us to distinguish between fat pointers that represent
9287 array types, and fat pointers that represent array access types
9288 (in both cases, the compiler implements them as fat pointers). */
9289 if (ada_is_access_to_unconstrained_array (type))
9290 return type;
9291
9292 type = check_typedef (type);
9293 if (type == NULL || TYPE_CODE (type) != TYPE_CODE_ENUM
9294 || !TYPE_STUB (type)
9295 || TYPE_NAME (type) == NULL)
9296 return type;
9297 else
9298 {
9299 const char *name = TYPE_NAME (type);
9300 struct type *type1 = ada_find_any_type (name);
9301
9302 if (type1 == NULL)
9303 return type;
9304
9305 /* TYPE1 might itself be a TYPE_CODE_TYPEDEF (this can happen with
9306 stubs pointing to arrays, as we don't create symbols for array
9307 types, only for the typedef-to-array types). If that's the case,
9308 strip the typedef layer. */
9309 if (TYPE_CODE (type1) == TYPE_CODE_TYPEDEF)
9310 type1 = ada_check_typedef (type1);
9311
9312 return type1;
9313 }
9314 }
9315
9316 /* A value representing the data at VALADDR/ADDRESS as described by
9317 type TYPE0, but with a standard (static-sized) type that correctly
9318 describes it. If VAL0 is not NULL and TYPE0 already is a standard
9319 type, then return VAL0 [this feature is simply to avoid redundant
9320 creation of struct values]. */
9321
9322 static struct value *
9323 ada_to_fixed_value_create (struct type *type0, CORE_ADDR address,
9324 struct value *val0)
9325 {
9326 struct type *type = ada_to_fixed_type (type0, 0, address, NULL, 1);
9327
9328 if (type == type0 && val0 != NULL)
9329 return val0;
9330
9331 if (VALUE_LVAL (val0) != lval_memory)
9332 {
9333 /* Our value does not live in memory; it could be a convenience
9334 variable, for instance. Create a not_lval value using val0's
9335 contents. */
9336 return value_from_contents (type, value_contents (val0));
9337 }
9338
9339 return value_from_contents_and_address (type, 0, address);
9340 }
9341
9342 /* A value representing VAL, but with a standard (static-sized) type
9343 that correctly describes it. Does not necessarily create a new
9344 value. */
9345
9346 struct value *
9347 ada_to_fixed_value (struct value *val)
9348 {
9349 val = unwrap_value (val);
9350 val = ada_to_fixed_value_create (value_type (val), value_address (val), val);
9351 return val;
9352 }
9353 \f
9354
9355 /* Attributes */
9356
9357 /* Table mapping attribute numbers to names.
9358 NOTE: Keep up to date with enum ada_attribute definition in ada-lang.h. */
9359
9360 static const char *attribute_names[] = {
9361 "<?>",
9362
9363 "first",
9364 "last",
9365 "length",
9366 "image",
9367 "max",
9368 "min",
9369 "modulus",
9370 "pos",
9371 "size",
9372 "tag",
9373 "val",
9374 0
9375 };
9376
9377 const char *
9378 ada_attribute_name (enum exp_opcode n)
9379 {
9380 if (n >= OP_ATR_FIRST && n <= (int) OP_ATR_VAL)
9381 return attribute_names[n - OP_ATR_FIRST + 1];
9382 else
9383 return attribute_names[0];
9384 }
9385
9386 /* Evaluate the 'POS attribute applied to ARG. */
9387
9388 static LONGEST
9389 pos_atr (struct value *arg)
9390 {
9391 struct value *val = coerce_ref (arg);
9392 struct type *type = value_type (val);
9393 LONGEST result;
9394
9395 if (!discrete_type_p (type))
9396 error (_("'POS only defined on discrete types"));
9397
9398 if (!discrete_position (type, value_as_long (val), &result))
9399 error (_("enumeration value is invalid: can't find 'POS"));
9400
9401 return result;
9402 }
9403
9404 static struct value *
9405 value_pos_atr (struct type *type, struct value *arg)
9406 {
9407 return value_from_longest (type, pos_atr (arg));
9408 }
9409
9410 /* Evaluate the TYPE'VAL attribute applied to ARG. */
9411
9412 static struct value *
9413 value_val_atr (struct type *type, struct value *arg)
9414 {
9415 if (!discrete_type_p (type))
9416 error (_("'VAL only defined on discrete types"));
9417 if (!integer_type_p (value_type (arg)))
9418 error (_("'VAL requires integral argument"));
9419
9420 if (TYPE_CODE (type) == TYPE_CODE_ENUM)
9421 {
9422 long pos = value_as_long (arg);
9423
9424 if (pos < 0 || pos >= TYPE_NFIELDS (type))
9425 error (_("argument to 'VAL out of range"));
9426 return value_from_longest (type, TYPE_FIELD_ENUMVAL (type, pos));
9427 }
9428 else
9429 return value_from_longest (type, value_as_long (arg));
9430 }
9431 \f
9432
9433 /* Evaluation */
9434
9435 /* True if TYPE appears to be an Ada character type.
9436 [At the moment, this is true only for Character and Wide_Character;
9437 It is a heuristic test that could stand improvement]. */
9438
9439 bool
9440 ada_is_character_type (struct type *type)
9441 {
9442 const char *name;
9443
9444 /* If the type code says it's a character, then assume it really is,
9445 and don't check any further. */
9446 if (TYPE_CODE (type) == TYPE_CODE_CHAR)
9447 return true;
9448
9449 /* Otherwise, assume it's a character type iff it is a discrete type
9450 with a known character type name. */
9451 name = ada_type_name (type);
9452 return (name != NULL
9453 && (TYPE_CODE (type) == TYPE_CODE_INT
9454 || TYPE_CODE (type) == TYPE_CODE_RANGE)
9455 && (strcmp (name, "character") == 0
9456 || strcmp (name, "wide_character") == 0
9457 || strcmp (name, "wide_wide_character") == 0
9458 || strcmp (name, "unsigned char") == 0));
9459 }
9460
9461 /* True if TYPE appears to be an Ada string type. */
9462
9463 bool
9464 ada_is_string_type (struct type *type)
9465 {
9466 type = ada_check_typedef (type);
9467 if (type != NULL
9468 && TYPE_CODE (type) != TYPE_CODE_PTR
9469 && (ada_is_simple_array_type (type)
9470 || ada_is_array_descriptor_type (type))
9471 && ada_array_arity (type) == 1)
9472 {
9473 struct type *elttype = ada_array_element_type (type, 1);
9474
9475 return ada_is_character_type (elttype);
9476 }
9477 else
9478 return false;
9479 }
9480
9481 /* The compiler sometimes provides a parallel XVS type for a given
9482 PAD type. Normally, it is safe to follow the PAD type directly,
9483 but older versions of the compiler have a bug that causes the offset
9484 of its "F" field to be wrong. Following that field in that case
9485 would lead to incorrect results, but this can be worked around
9486 by ignoring the PAD type and using the associated XVS type instead.
9487
9488 Set to True if the debugger should trust the contents of PAD types.
9489 Otherwise, ignore the PAD type if there is a parallel XVS type. */
9490 static int trust_pad_over_xvs = 1;
9491
9492 /* True if TYPE is a struct type introduced by the compiler to force the
9493 alignment of a value. Such types have a single field with a
9494 distinctive name. */
9495
9496 int
9497 ada_is_aligner_type (struct type *type)
9498 {
9499 type = ada_check_typedef (type);
9500
9501 if (!trust_pad_over_xvs && ada_find_parallel_type (type, "___XVS") != NULL)
9502 return 0;
9503
9504 return (TYPE_CODE (type) == TYPE_CODE_STRUCT
9505 && TYPE_NFIELDS (type) == 1
9506 && strcmp (TYPE_FIELD_NAME (type, 0), "F") == 0);
9507 }
9508
9509 /* If there is an ___XVS-convention type parallel to SUBTYPE, return
9510 the parallel type. */
9511
9512 struct type *
9513 ada_get_base_type (struct type *raw_type)
9514 {
9515 struct type *real_type_namer;
9516 struct type *raw_real_type;
9517
9518 if (raw_type == NULL || TYPE_CODE (raw_type) != TYPE_CODE_STRUCT)
9519 return raw_type;
9520
9521 if (ada_is_aligner_type (raw_type))
9522 /* The encoding specifies that we should always use the aligner type.
9523 So, even if this aligner type has an associated XVS type, we should
9524 simply ignore it.
9525
9526 According to the compiler gurus, an XVS type parallel to an aligner
9527 type may exist because of a stabs limitation. In stabs, aligner
9528 types are empty because the field has a variable-sized type, and
9529 thus cannot actually be used as an aligner type. As a result,
9530 we need the associated parallel XVS type to decode the type.
9531 Since the policy in the compiler is to not change the internal
9532 representation based on the debugging info format, we sometimes
9533 end up having a redundant XVS type parallel to the aligner type. */
9534 return raw_type;
9535
9536 real_type_namer = ada_find_parallel_type (raw_type, "___XVS");
9537 if (real_type_namer == NULL
9538 || TYPE_CODE (real_type_namer) != TYPE_CODE_STRUCT
9539 || TYPE_NFIELDS (real_type_namer) != 1)
9540 return raw_type;
9541
9542 if (TYPE_CODE (TYPE_FIELD_TYPE (real_type_namer, 0)) != TYPE_CODE_REF)
9543 {
9544 /* This is an older encoding form where the base type needs to be
9545 looked up by name. We prefer the newer enconding because it is
9546 more efficient. */
9547 raw_real_type = ada_find_any_type (TYPE_FIELD_NAME (real_type_namer, 0));
9548 if (raw_real_type == NULL)
9549 return raw_type;
9550 else
9551 return raw_real_type;
9552 }
9553
9554 /* The field in our XVS type is a reference to the base type. */
9555 return TYPE_TARGET_TYPE (TYPE_FIELD_TYPE (real_type_namer, 0));
9556 }
9557
9558 /* The type of value designated by TYPE, with all aligners removed. */
9559
9560 struct type *
9561 ada_aligned_type (struct type *type)
9562 {
9563 if (ada_is_aligner_type (type))
9564 return ada_aligned_type (TYPE_FIELD_TYPE (type, 0));
9565 else
9566 return ada_get_base_type (type);
9567 }
9568
9569
9570 /* The address of the aligned value in an object at address VALADDR
9571 having type TYPE. Assumes ada_is_aligner_type (TYPE). */
9572
9573 const gdb_byte *
9574 ada_aligned_value_addr (struct type *type, const gdb_byte *valaddr)
9575 {
9576 if (ada_is_aligner_type (type))
9577 return ada_aligned_value_addr (TYPE_FIELD_TYPE (type, 0),
9578 valaddr +
9579 TYPE_FIELD_BITPOS (type,
9580 0) / TARGET_CHAR_BIT);
9581 else
9582 return valaddr;
9583 }
9584
9585
9586
9587 /* The printed representation of an enumeration literal with encoded
9588 name NAME. The value is good to the next call of ada_enum_name. */
9589 const char *
9590 ada_enum_name (const char *name)
9591 {
9592 static char *result;
9593 static size_t result_len = 0;
9594 const char *tmp;
9595
9596 /* First, unqualify the enumeration name:
9597 1. Search for the last '.' character. If we find one, then skip
9598 all the preceding characters, the unqualified name starts
9599 right after that dot.
9600 2. Otherwise, we may be debugging on a target where the compiler
9601 translates dots into "__". Search forward for double underscores,
9602 but stop searching when we hit an overloading suffix, which is
9603 of the form "__" followed by digits. */
9604
9605 tmp = strrchr (name, '.');
9606 if (tmp != NULL)
9607 name = tmp + 1;
9608 else
9609 {
9610 while ((tmp = strstr (name, "__")) != NULL)
9611 {
9612 if (isdigit (tmp[2]))
9613 break;
9614 else
9615 name = tmp + 2;
9616 }
9617 }
9618
9619 if (name[0] == 'Q')
9620 {
9621 int v;
9622
9623 if (name[1] == 'U' || name[1] == 'W')
9624 {
9625 if (sscanf (name + 2, "%x", &v) != 1)
9626 return name;
9627 }
9628 else
9629 return name;
9630
9631 GROW_VECT (result, result_len, 16);
9632 if (isascii (v) && isprint (v))
9633 xsnprintf (result, result_len, "'%c'", v);
9634 else if (name[1] == 'U')
9635 xsnprintf (result, result_len, "[\"%02x\"]", v);
9636 else
9637 xsnprintf (result, result_len, "[\"%04x\"]", v);
9638
9639 return result;
9640 }
9641 else
9642 {
9643 tmp = strstr (name, "__");
9644 if (tmp == NULL)
9645 tmp = strstr (name, "$");
9646 if (tmp != NULL)
9647 {
9648 GROW_VECT (result, result_len, tmp - name + 1);
9649 strncpy (result, name, tmp - name);
9650 result[tmp - name] = '\0';
9651 return result;
9652 }
9653
9654 return name;
9655 }
9656 }
9657
9658 /* Evaluate the subexpression of EXP starting at *POS as for
9659 evaluate_type, updating *POS to point just past the evaluated
9660 expression. */
9661
9662 static struct value *
9663 evaluate_subexp_type (struct expression *exp, int *pos)
9664 {
9665 return evaluate_subexp (NULL_TYPE, exp, pos, EVAL_AVOID_SIDE_EFFECTS);
9666 }
9667
9668 /* If VAL is wrapped in an aligner or subtype wrapper, return the
9669 value it wraps. */
9670
9671 static struct value *
9672 unwrap_value (struct value *val)
9673 {
9674 struct type *type = ada_check_typedef (value_type (val));
9675
9676 if (ada_is_aligner_type (type))
9677 {
9678 struct value *v = ada_value_struct_elt (val, "F", 0);
9679 struct type *val_type = ada_check_typedef (value_type (v));
9680
9681 if (ada_type_name (val_type) == NULL)
9682 TYPE_NAME (val_type) = ada_type_name (type);
9683
9684 return unwrap_value (v);
9685 }
9686 else
9687 {
9688 struct type *raw_real_type =
9689 ada_check_typedef (ada_get_base_type (type));
9690
9691 /* If there is no parallel XVS or XVE type, then the value is
9692 already unwrapped. Return it without further modification. */
9693 if ((type == raw_real_type)
9694 && ada_find_parallel_type (type, "___XVE") == NULL)
9695 return val;
9696
9697 return
9698 coerce_unspec_val_to_type
9699 (val, ada_to_fixed_type (raw_real_type, 0,
9700 value_address (val),
9701 NULL, 1));
9702 }
9703 }
9704
9705 static struct value *
9706 cast_from_fixed (struct type *type, struct value *arg)
9707 {
9708 struct value *scale = ada_scaling_factor (value_type (arg));
9709 arg = value_cast (value_type (scale), arg);
9710
9711 arg = value_binop (arg, scale, BINOP_MUL);
9712 return value_cast (type, arg);
9713 }
9714
9715 static struct value *
9716 cast_to_fixed (struct type *type, struct value *arg)
9717 {
9718 if (type == value_type (arg))
9719 return arg;
9720
9721 struct value *scale = ada_scaling_factor (type);
9722 if (ada_is_fixed_point_type (value_type (arg)))
9723 arg = cast_from_fixed (value_type (scale), arg);
9724 else
9725 arg = value_cast (value_type (scale), arg);
9726
9727 arg = value_binop (arg, scale, BINOP_DIV);
9728 return value_cast (type, arg);
9729 }
9730
9731 /* Given two array types T1 and T2, return nonzero iff both arrays
9732 contain the same number of elements. */
9733
9734 static int
9735 ada_same_array_size_p (struct type *t1, struct type *t2)
9736 {
9737 LONGEST lo1, hi1, lo2, hi2;
9738
9739 /* Get the array bounds in order to verify that the size of
9740 the two arrays match. */
9741 if (!get_array_bounds (t1, &lo1, &hi1)
9742 || !get_array_bounds (t2, &lo2, &hi2))
9743 error (_("unable to determine array bounds"));
9744
9745 /* To make things easier for size comparison, normalize a bit
9746 the case of empty arrays by making sure that the difference
9747 between upper bound and lower bound is always -1. */
9748 if (lo1 > hi1)
9749 hi1 = lo1 - 1;
9750 if (lo2 > hi2)
9751 hi2 = lo2 - 1;
9752
9753 return (hi1 - lo1 == hi2 - lo2);
9754 }
9755
9756 /* Assuming that VAL is an array of integrals, and TYPE represents
9757 an array with the same number of elements, but with wider integral
9758 elements, return an array "casted" to TYPE. In practice, this
9759 means that the returned array is built by casting each element
9760 of the original array into TYPE's (wider) element type. */
9761
9762 static struct value *
9763 ada_promote_array_of_integrals (struct type *type, struct value *val)
9764 {
9765 struct type *elt_type = TYPE_TARGET_TYPE (type);
9766 LONGEST lo, hi;
9767 struct value *res;
9768 LONGEST i;
9769
9770 /* Verify that both val and type are arrays of scalars, and
9771 that the size of val's elements is smaller than the size
9772 of type's element. */
9773 gdb_assert (TYPE_CODE (type) == TYPE_CODE_ARRAY);
9774 gdb_assert (is_integral_type (TYPE_TARGET_TYPE (type)));
9775 gdb_assert (TYPE_CODE (value_type (val)) == TYPE_CODE_ARRAY);
9776 gdb_assert (is_integral_type (TYPE_TARGET_TYPE (value_type (val))));
9777 gdb_assert (TYPE_LENGTH (TYPE_TARGET_TYPE (type))
9778 > TYPE_LENGTH (TYPE_TARGET_TYPE (value_type (val))));
9779
9780 if (!get_array_bounds (type, &lo, &hi))
9781 error (_("unable to determine array bounds"));
9782
9783 res = allocate_value (type);
9784
9785 /* Promote each array element. */
9786 for (i = 0; i < hi - lo + 1; i++)
9787 {
9788 struct value *elt = value_cast (elt_type, value_subscript (val, lo + i));
9789
9790 memcpy (value_contents_writeable (res) + (i * TYPE_LENGTH (elt_type)),
9791 value_contents_all (elt), TYPE_LENGTH (elt_type));
9792 }
9793
9794 return res;
9795 }
9796
9797 /* Coerce VAL as necessary for assignment to an lval of type TYPE, and
9798 return the converted value. */
9799
9800 static struct value *
9801 coerce_for_assign (struct type *type, struct value *val)
9802 {
9803 struct type *type2 = value_type (val);
9804
9805 if (type == type2)
9806 return val;
9807
9808 type2 = ada_check_typedef (type2);
9809 type = ada_check_typedef (type);
9810
9811 if (TYPE_CODE (type2) == TYPE_CODE_PTR
9812 && TYPE_CODE (type) == TYPE_CODE_ARRAY)
9813 {
9814 val = ada_value_ind (val);
9815 type2 = value_type (val);
9816 }
9817
9818 if (TYPE_CODE (type2) == TYPE_CODE_ARRAY
9819 && TYPE_CODE (type) == TYPE_CODE_ARRAY)
9820 {
9821 if (!ada_same_array_size_p (type, type2))
9822 error (_("cannot assign arrays of different length"));
9823
9824 if (is_integral_type (TYPE_TARGET_TYPE (type))
9825 && is_integral_type (TYPE_TARGET_TYPE (type2))
9826 && TYPE_LENGTH (TYPE_TARGET_TYPE (type2))
9827 < TYPE_LENGTH (TYPE_TARGET_TYPE (type)))
9828 {
9829 /* Allow implicit promotion of the array elements to
9830 a wider type. */
9831 return ada_promote_array_of_integrals (type, val);
9832 }
9833
9834 if (TYPE_LENGTH (TYPE_TARGET_TYPE (type2))
9835 != TYPE_LENGTH (TYPE_TARGET_TYPE (type)))
9836 error (_("Incompatible types in assignment"));
9837 deprecated_set_value_type (val, type);
9838 }
9839 return val;
9840 }
9841
9842 static struct value *
9843 ada_value_binop (struct value *arg1, struct value *arg2, enum exp_opcode op)
9844 {
9845 struct value *val;
9846 struct type *type1, *type2;
9847 LONGEST v, v1, v2;
9848
9849 arg1 = coerce_ref (arg1);
9850 arg2 = coerce_ref (arg2);
9851 type1 = get_base_type (ada_check_typedef (value_type (arg1)));
9852 type2 = get_base_type (ada_check_typedef (value_type (arg2)));
9853
9854 if (TYPE_CODE (type1) != TYPE_CODE_INT
9855 || TYPE_CODE (type2) != TYPE_CODE_INT)
9856 return value_binop (arg1, arg2, op);
9857
9858 switch (op)
9859 {
9860 case BINOP_MOD:
9861 case BINOP_DIV:
9862 case BINOP_REM:
9863 break;
9864 default:
9865 return value_binop (arg1, arg2, op);
9866 }
9867
9868 v2 = value_as_long (arg2);
9869 if (v2 == 0)
9870 error (_("second operand of %s must not be zero."), op_string (op));
9871
9872 if (TYPE_UNSIGNED (type1) || op == BINOP_MOD)
9873 return value_binop (arg1, arg2, op);
9874
9875 v1 = value_as_long (arg1);
9876 switch (op)
9877 {
9878 case BINOP_DIV:
9879 v = v1 / v2;
9880 if (!TRUNCATION_TOWARDS_ZERO && v1 * (v1 % v2) < 0)
9881 v += v > 0 ? -1 : 1;
9882 break;
9883 case BINOP_REM:
9884 v = v1 % v2;
9885 if (v * v1 < 0)
9886 v -= v2;
9887 break;
9888 default:
9889 /* Should not reach this point. */
9890 v = 0;
9891 }
9892
9893 val = allocate_value (type1);
9894 store_unsigned_integer (value_contents_raw (val),
9895 TYPE_LENGTH (value_type (val)),
9896 gdbarch_byte_order (get_type_arch (type1)), v);
9897 return val;
9898 }
9899
9900 static int
9901 ada_value_equal (struct value *arg1, struct value *arg2)
9902 {
9903 if (ada_is_direct_array_type (value_type (arg1))
9904 || ada_is_direct_array_type (value_type (arg2)))
9905 {
9906 struct type *arg1_type, *arg2_type;
9907
9908 /* Automatically dereference any array reference before
9909 we attempt to perform the comparison. */
9910 arg1 = ada_coerce_ref (arg1);
9911 arg2 = ada_coerce_ref (arg2);
9912
9913 arg1 = ada_coerce_to_simple_array (arg1);
9914 arg2 = ada_coerce_to_simple_array (arg2);
9915
9916 arg1_type = ada_check_typedef (value_type (arg1));
9917 arg2_type = ada_check_typedef (value_type (arg2));
9918
9919 if (TYPE_CODE (arg1_type) != TYPE_CODE_ARRAY
9920 || TYPE_CODE (arg2_type) != TYPE_CODE_ARRAY)
9921 error (_("Attempt to compare array with non-array"));
9922 /* FIXME: The following works only for types whose
9923 representations use all bits (no padding or undefined bits)
9924 and do not have user-defined equality. */
9925 return (TYPE_LENGTH (arg1_type) == TYPE_LENGTH (arg2_type)
9926 && memcmp (value_contents (arg1), value_contents (arg2),
9927 TYPE_LENGTH (arg1_type)) == 0);
9928 }
9929 return value_equal (arg1, arg2);
9930 }
9931
9932 /* Total number of component associations in the aggregate starting at
9933 index PC in EXP. Assumes that index PC is the start of an
9934 OP_AGGREGATE. */
9935
9936 static int
9937 num_component_specs (struct expression *exp, int pc)
9938 {
9939 int n, m, i;
9940
9941 m = exp->elts[pc + 1].longconst;
9942 pc += 3;
9943 n = 0;
9944 for (i = 0; i < m; i += 1)
9945 {
9946 switch (exp->elts[pc].opcode)
9947 {
9948 default:
9949 n += 1;
9950 break;
9951 case OP_CHOICES:
9952 n += exp->elts[pc + 1].longconst;
9953 break;
9954 }
9955 ada_evaluate_subexp (NULL, exp, &pc, EVAL_SKIP);
9956 }
9957 return n;
9958 }
9959
9960 /* Assign the result of evaluating EXP starting at *POS to the INDEXth
9961 component of LHS (a simple array or a record), updating *POS past
9962 the expression, assuming that LHS is contained in CONTAINER. Does
9963 not modify the inferior's memory, nor does it modify LHS (unless
9964 LHS == CONTAINER). */
9965
9966 static void
9967 assign_component (struct value *container, struct value *lhs, LONGEST index,
9968 struct expression *exp, int *pos)
9969 {
9970 struct value *mark = value_mark ();
9971 struct value *elt;
9972 struct type *lhs_type = check_typedef (value_type (lhs));
9973
9974 if (TYPE_CODE (lhs_type) == TYPE_CODE_ARRAY)
9975 {
9976 struct type *index_type = builtin_type (exp->gdbarch)->builtin_int;
9977 struct value *index_val = value_from_longest (index_type, index);
9978
9979 elt = unwrap_value (ada_value_subscript (lhs, 1, &index_val));
9980 }
9981 else
9982 {
9983 elt = ada_index_struct_field (index, lhs, 0, value_type (lhs));
9984 elt = ada_to_fixed_value (elt);
9985 }
9986
9987 if (exp->elts[*pos].opcode == OP_AGGREGATE)
9988 assign_aggregate (container, elt, exp, pos, EVAL_NORMAL);
9989 else
9990 value_assign_to_component (container, elt,
9991 ada_evaluate_subexp (NULL, exp, pos,
9992 EVAL_NORMAL));
9993
9994 value_free_to_mark (mark);
9995 }
9996
9997 /* Assuming that LHS represents an lvalue having a record or array
9998 type, and EXP->ELTS[*POS] is an OP_AGGREGATE, evaluate an assignment
9999 of that aggregate's value to LHS, advancing *POS past the
10000 aggregate. NOSIDE is as for evaluate_subexp. CONTAINER is an
10001 lvalue containing LHS (possibly LHS itself). Does not modify
10002 the inferior's memory, nor does it modify the contents of
10003 LHS (unless == CONTAINER). Returns the modified CONTAINER. */
10004
10005 static struct value *
10006 assign_aggregate (struct value *container,
10007 struct value *lhs, struct expression *exp,
10008 int *pos, enum noside noside)
10009 {
10010 struct type *lhs_type;
10011 int n = exp->elts[*pos+1].longconst;
10012 LONGEST low_index, high_index;
10013 int num_specs;
10014 LONGEST *indices;
10015 int max_indices, num_indices;
10016 int i;
10017
10018 *pos += 3;
10019 if (noside != EVAL_NORMAL)
10020 {
10021 for (i = 0; i < n; i += 1)
10022 ada_evaluate_subexp (NULL, exp, pos, noside);
10023 return container;
10024 }
10025
10026 container = ada_coerce_ref (container);
10027 if (ada_is_direct_array_type (value_type (container)))
10028 container = ada_coerce_to_simple_array (container);
10029 lhs = ada_coerce_ref (lhs);
10030 if (!deprecated_value_modifiable (lhs))
10031 error (_("Left operand of assignment is not a modifiable lvalue."));
10032
10033 lhs_type = check_typedef (value_type (lhs));
10034 if (ada_is_direct_array_type (lhs_type))
10035 {
10036 lhs = ada_coerce_to_simple_array (lhs);
10037 lhs_type = check_typedef (value_type (lhs));
10038 low_index = TYPE_ARRAY_LOWER_BOUND_VALUE (lhs_type);
10039 high_index = TYPE_ARRAY_UPPER_BOUND_VALUE (lhs_type);
10040 }
10041 else if (TYPE_CODE (lhs_type) == TYPE_CODE_STRUCT)
10042 {
10043 low_index = 0;
10044 high_index = num_visible_fields (lhs_type) - 1;
10045 }
10046 else
10047 error (_("Left-hand side must be array or record."));
10048
10049 num_specs = num_component_specs (exp, *pos - 3);
10050 max_indices = 4 * num_specs + 4;
10051 indices = XALLOCAVEC (LONGEST, max_indices);
10052 indices[0] = indices[1] = low_index - 1;
10053 indices[2] = indices[3] = high_index + 1;
10054 num_indices = 4;
10055
10056 for (i = 0; i < n; i += 1)
10057 {
10058 switch (exp->elts[*pos].opcode)
10059 {
10060 case OP_CHOICES:
10061 aggregate_assign_from_choices (container, lhs, exp, pos, indices,
10062 &num_indices, max_indices,
10063 low_index, high_index);
10064 break;
10065 case OP_POSITIONAL:
10066 aggregate_assign_positional (container, lhs, exp, pos, indices,
10067 &num_indices, max_indices,
10068 low_index, high_index);
10069 break;
10070 case OP_OTHERS:
10071 if (i != n-1)
10072 error (_("Misplaced 'others' clause"));
10073 aggregate_assign_others (container, lhs, exp, pos, indices,
10074 num_indices, low_index, high_index);
10075 break;
10076 default:
10077 error (_("Internal error: bad aggregate clause"));
10078 }
10079 }
10080
10081 return container;
10082 }
10083
10084 /* Assign into the component of LHS indexed by the OP_POSITIONAL
10085 construct at *POS, updating *POS past the construct, given that
10086 the positions are relative to lower bound LOW, where HIGH is the
10087 upper bound. Record the position in INDICES[0 .. MAX_INDICES-1]
10088 updating *NUM_INDICES as needed. CONTAINER is as for
10089 assign_aggregate. */
10090 static void
10091 aggregate_assign_positional (struct value *container,
10092 struct value *lhs, struct expression *exp,
10093 int *pos, LONGEST *indices, int *num_indices,
10094 int max_indices, LONGEST low, LONGEST high)
10095 {
10096 LONGEST ind = longest_to_int (exp->elts[*pos + 1].longconst) + low;
10097
10098 if (ind - 1 == high)
10099 warning (_("Extra components in aggregate ignored."));
10100 if (ind <= high)
10101 {
10102 add_component_interval (ind, ind, indices, num_indices, max_indices);
10103 *pos += 3;
10104 assign_component (container, lhs, ind, exp, pos);
10105 }
10106 else
10107 ada_evaluate_subexp (NULL, exp, pos, EVAL_SKIP);
10108 }
10109
10110 /* Assign into the components of LHS indexed by the OP_CHOICES
10111 construct at *POS, updating *POS past the construct, given that
10112 the allowable indices are LOW..HIGH. Record the indices assigned
10113 to in INDICES[0 .. MAX_INDICES-1], updating *NUM_INDICES as
10114 needed. CONTAINER is as for assign_aggregate. */
10115 static void
10116 aggregate_assign_from_choices (struct value *container,
10117 struct value *lhs, struct expression *exp,
10118 int *pos, LONGEST *indices, int *num_indices,
10119 int max_indices, LONGEST low, LONGEST high)
10120 {
10121 int j;
10122 int n_choices = longest_to_int (exp->elts[*pos+1].longconst);
10123 int choice_pos, expr_pc;
10124 int is_array = ada_is_direct_array_type (value_type (lhs));
10125
10126 choice_pos = *pos += 3;
10127
10128 for (j = 0; j < n_choices; j += 1)
10129 ada_evaluate_subexp (NULL, exp, pos, EVAL_SKIP);
10130 expr_pc = *pos;
10131 ada_evaluate_subexp (NULL, exp, pos, EVAL_SKIP);
10132
10133 for (j = 0; j < n_choices; j += 1)
10134 {
10135 LONGEST lower, upper;
10136 enum exp_opcode op = exp->elts[choice_pos].opcode;
10137
10138 if (op == OP_DISCRETE_RANGE)
10139 {
10140 choice_pos += 1;
10141 lower = value_as_long (ada_evaluate_subexp (NULL, exp, pos,
10142 EVAL_NORMAL));
10143 upper = value_as_long (ada_evaluate_subexp (NULL, exp, pos,
10144 EVAL_NORMAL));
10145 }
10146 else if (is_array)
10147 {
10148 lower = value_as_long (ada_evaluate_subexp (NULL, exp, &choice_pos,
10149 EVAL_NORMAL));
10150 upper = lower;
10151 }
10152 else
10153 {
10154 int ind;
10155 const char *name;
10156
10157 switch (op)
10158 {
10159 case OP_NAME:
10160 name = &exp->elts[choice_pos + 2].string;
10161 break;
10162 case OP_VAR_VALUE:
10163 name = SYMBOL_NATURAL_NAME (exp->elts[choice_pos + 2].symbol);
10164 break;
10165 default:
10166 error (_("Invalid record component association."));
10167 }
10168 ada_evaluate_subexp (NULL, exp, &choice_pos, EVAL_SKIP);
10169 ind = 0;
10170 if (! find_struct_field (name, value_type (lhs), 0,
10171 NULL, NULL, NULL, NULL, &ind))
10172 error (_("Unknown component name: %s."), name);
10173 lower = upper = ind;
10174 }
10175
10176 if (lower <= upper && (lower < low || upper > high))
10177 error (_("Index in component association out of bounds."));
10178
10179 add_component_interval (lower, upper, indices, num_indices,
10180 max_indices);
10181 while (lower <= upper)
10182 {
10183 int pos1;
10184
10185 pos1 = expr_pc;
10186 assign_component (container, lhs, lower, exp, &pos1);
10187 lower += 1;
10188 }
10189 }
10190 }
10191
10192 /* Assign the value of the expression in the OP_OTHERS construct in
10193 EXP at *POS into the components of LHS indexed from LOW .. HIGH that
10194 have not been previously assigned. The index intervals already assigned
10195 are in INDICES[0 .. NUM_INDICES-1]. Updates *POS to after the
10196 OP_OTHERS clause. CONTAINER is as for assign_aggregate. */
10197 static void
10198 aggregate_assign_others (struct value *container,
10199 struct value *lhs, struct expression *exp,
10200 int *pos, LONGEST *indices, int num_indices,
10201 LONGEST low, LONGEST high)
10202 {
10203 int i;
10204 int expr_pc = *pos + 1;
10205
10206 for (i = 0; i < num_indices - 2; i += 2)
10207 {
10208 LONGEST ind;
10209
10210 for (ind = indices[i + 1] + 1; ind < indices[i + 2]; ind += 1)
10211 {
10212 int localpos;
10213
10214 localpos = expr_pc;
10215 assign_component (container, lhs, ind, exp, &localpos);
10216 }
10217 }
10218 ada_evaluate_subexp (NULL, exp, pos, EVAL_SKIP);
10219 }
10220
10221 /* Add the interval [LOW .. HIGH] to the sorted set of intervals
10222 [ INDICES[0] .. INDICES[1] ],..., [ INDICES[*SIZE-2] .. INDICES[*SIZE-1] ],
10223 modifying *SIZE as needed. It is an error if *SIZE exceeds
10224 MAX_SIZE. The resulting intervals do not overlap. */
10225 static void
10226 add_component_interval (LONGEST low, LONGEST high,
10227 LONGEST* indices, int *size, int max_size)
10228 {
10229 int i, j;
10230
10231 for (i = 0; i < *size; i += 2) {
10232 if (high >= indices[i] && low <= indices[i + 1])
10233 {
10234 int kh;
10235
10236 for (kh = i + 2; kh < *size; kh += 2)
10237 if (high < indices[kh])
10238 break;
10239 if (low < indices[i])
10240 indices[i] = low;
10241 indices[i + 1] = indices[kh - 1];
10242 if (high > indices[i + 1])
10243 indices[i + 1] = high;
10244 memcpy (indices + i + 2, indices + kh, *size - kh);
10245 *size -= kh - i - 2;
10246 return;
10247 }
10248 else if (high < indices[i])
10249 break;
10250 }
10251
10252 if (*size == max_size)
10253 error (_("Internal error: miscounted aggregate components."));
10254 *size += 2;
10255 for (j = *size-1; j >= i+2; j -= 1)
10256 indices[j] = indices[j - 2];
10257 indices[i] = low;
10258 indices[i + 1] = high;
10259 }
10260
10261 /* Perform and Ada cast of ARG2 to type TYPE if the type of ARG2
10262 is different. */
10263
10264 static struct value *
10265 ada_value_cast (struct type *type, struct value *arg2)
10266 {
10267 if (type == ada_check_typedef (value_type (arg2)))
10268 return arg2;
10269
10270 if (ada_is_fixed_point_type (type))
10271 return cast_to_fixed (type, arg2);
10272
10273 if (ada_is_fixed_point_type (value_type (arg2)))
10274 return cast_from_fixed (type, arg2);
10275
10276 return value_cast (type, arg2);
10277 }
10278
10279 /* Evaluating Ada expressions, and printing their result.
10280 ------------------------------------------------------
10281
10282 1. Introduction:
10283 ----------------
10284
10285 We usually evaluate an Ada expression in order to print its value.
10286 We also evaluate an expression in order to print its type, which
10287 happens during the EVAL_AVOID_SIDE_EFFECTS phase of the evaluation,
10288 but we'll focus mostly on the EVAL_NORMAL phase. In practice, the
10289 EVAL_AVOID_SIDE_EFFECTS phase allows us to simplify certain aspects of
10290 the evaluation compared to the EVAL_NORMAL, but is otherwise very
10291 similar.
10292
10293 Evaluating expressions is a little more complicated for Ada entities
10294 than it is for entities in languages such as C. The main reason for
10295 this is that Ada provides types whose definition might be dynamic.
10296 One example of such types is variant records. Or another example
10297 would be an array whose bounds can only be known at run time.
10298
10299 The following description is a general guide as to what should be
10300 done (and what should NOT be done) in order to evaluate an expression
10301 involving such types, and when. This does not cover how the semantic
10302 information is encoded by GNAT as this is covered separatly. For the
10303 document used as the reference for the GNAT encoding, see exp_dbug.ads
10304 in the GNAT sources.
10305
10306 Ideally, we should embed each part of this description next to its
10307 associated code. Unfortunately, the amount of code is so vast right
10308 now that it's hard to see whether the code handling a particular
10309 situation might be duplicated or not. One day, when the code is
10310 cleaned up, this guide might become redundant with the comments
10311 inserted in the code, and we might want to remove it.
10312
10313 2. ``Fixing'' an Entity, the Simple Case:
10314 -----------------------------------------
10315
10316 When evaluating Ada expressions, the tricky issue is that they may
10317 reference entities whose type contents and size are not statically
10318 known. Consider for instance a variant record:
10319
10320 type Rec (Empty : Boolean := True) is record
10321 case Empty is
10322 when True => null;
10323 when False => Value : Integer;
10324 end case;
10325 end record;
10326 Yes : Rec := (Empty => False, Value => 1);
10327 No : Rec := (empty => True);
10328
10329 The size and contents of that record depends on the value of the
10330 descriminant (Rec.Empty). At this point, neither the debugging
10331 information nor the associated type structure in GDB are able to
10332 express such dynamic types. So what the debugger does is to create
10333 "fixed" versions of the type that applies to the specific object.
10334 We also informally refer to this opperation as "fixing" an object,
10335 which means creating its associated fixed type.
10336
10337 Example: when printing the value of variable "Yes" above, its fixed
10338 type would look like this:
10339
10340 type Rec is record
10341 Empty : Boolean;
10342 Value : Integer;
10343 end record;
10344
10345 On the other hand, if we printed the value of "No", its fixed type
10346 would become:
10347
10348 type Rec is record
10349 Empty : Boolean;
10350 end record;
10351
10352 Things become a little more complicated when trying to fix an entity
10353 with a dynamic type that directly contains another dynamic type,
10354 such as an array of variant records, for instance. There are
10355 two possible cases: Arrays, and records.
10356
10357 3. ``Fixing'' Arrays:
10358 ---------------------
10359
10360 The type structure in GDB describes an array in terms of its bounds,
10361 and the type of its elements. By design, all elements in the array
10362 have the same type and we cannot represent an array of variant elements
10363 using the current type structure in GDB. When fixing an array,
10364 we cannot fix the array element, as we would potentially need one
10365 fixed type per element of the array. As a result, the best we can do
10366 when fixing an array is to produce an array whose bounds and size
10367 are correct (allowing us to read it from memory), but without having
10368 touched its element type. Fixing each element will be done later,
10369 when (if) necessary.
10370
10371 Arrays are a little simpler to handle than records, because the same
10372 amount of memory is allocated for each element of the array, even if
10373 the amount of space actually used by each element differs from element
10374 to element. Consider for instance the following array of type Rec:
10375
10376 type Rec_Array is array (1 .. 2) of Rec;
10377
10378 The actual amount of memory occupied by each element might be different
10379 from element to element, depending on the value of their discriminant.
10380 But the amount of space reserved for each element in the array remains
10381 fixed regardless. So we simply need to compute that size using
10382 the debugging information available, from which we can then determine
10383 the array size (we multiply the number of elements of the array by
10384 the size of each element).
10385
10386 The simplest case is when we have an array of a constrained element
10387 type. For instance, consider the following type declarations:
10388
10389 type Bounded_String (Max_Size : Integer) is
10390 Length : Integer;
10391 Buffer : String (1 .. Max_Size);
10392 end record;
10393 type Bounded_String_Array is array (1 ..2) of Bounded_String (80);
10394
10395 In this case, the compiler describes the array as an array of
10396 variable-size elements (identified by its XVS suffix) for which
10397 the size can be read in the parallel XVZ variable.
10398
10399 In the case of an array of an unconstrained element type, the compiler
10400 wraps the array element inside a private PAD type. This type should not
10401 be shown to the user, and must be "unwrap"'ed before printing. Note
10402 that we also use the adjective "aligner" in our code to designate
10403 these wrapper types.
10404
10405 In some cases, the size allocated for each element is statically
10406 known. In that case, the PAD type already has the correct size,
10407 and the array element should remain unfixed.
10408
10409 But there are cases when this size is not statically known.
10410 For instance, assuming that "Five" is an integer variable:
10411
10412 type Dynamic is array (1 .. Five) of Integer;
10413 type Wrapper (Has_Length : Boolean := False) is record
10414 Data : Dynamic;
10415 case Has_Length is
10416 when True => Length : Integer;
10417 when False => null;
10418 end case;
10419 end record;
10420 type Wrapper_Array is array (1 .. 2) of Wrapper;
10421
10422 Hello : Wrapper_Array := (others => (Has_Length => True,
10423 Data => (others => 17),
10424 Length => 1));
10425
10426
10427 The debugging info would describe variable Hello as being an
10428 array of a PAD type. The size of that PAD type is not statically
10429 known, but can be determined using a parallel XVZ variable.
10430 In that case, a copy of the PAD type with the correct size should
10431 be used for the fixed array.
10432
10433 3. ``Fixing'' record type objects:
10434 ----------------------------------
10435
10436 Things are slightly different from arrays in the case of dynamic
10437 record types. In this case, in order to compute the associated
10438 fixed type, we need to determine the size and offset of each of
10439 its components. This, in turn, requires us to compute the fixed
10440 type of each of these components.
10441
10442 Consider for instance the example:
10443
10444 type Bounded_String (Max_Size : Natural) is record
10445 Str : String (1 .. Max_Size);
10446 Length : Natural;
10447 end record;
10448 My_String : Bounded_String (Max_Size => 10);
10449
10450 In that case, the position of field "Length" depends on the size
10451 of field Str, which itself depends on the value of the Max_Size
10452 discriminant. In order to fix the type of variable My_String,
10453 we need to fix the type of field Str. Therefore, fixing a variant
10454 record requires us to fix each of its components.
10455
10456 However, if a component does not have a dynamic size, the component
10457 should not be fixed. In particular, fields that use a PAD type
10458 should not fixed. Here is an example where this might happen
10459 (assuming type Rec above):
10460
10461 type Container (Big : Boolean) is record
10462 First : Rec;
10463 After : Integer;
10464 case Big is
10465 when True => Another : Integer;
10466 when False => null;
10467 end case;
10468 end record;
10469 My_Container : Container := (Big => False,
10470 First => (Empty => True),
10471 After => 42);
10472
10473 In that example, the compiler creates a PAD type for component First,
10474 whose size is constant, and then positions the component After just
10475 right after it. The offset of component After is therefore constant
10476 in this case.
10477
10478 The debugger computes the position of each field based on an algorithm
10479 that uses, among other things, the actual position and size of the field
10480 preceding it. Let's now imagine that the user is trying to print
10481 the value of My_Container. If the type fixing was recursive, we would
10482 end up computing the offset of field After based on the size of the
10483 fixed version of field First. And since in our example First has
10484 only one actual field, the size of the fixed type is actually smaller
10485 than the amount of space allocated to that field, and thus we would
10486 compute the wrong offset of field After.
10487
10488 To make things more complicated, we need to watch out for dynamic
10489 components of variant records (identified by the ___XVL suffix in
10490 the component name). Even if the target type is a PAD type, the size
10491 of that type might not be statically known. So the PAD type needs
10492 to be unwrapped and the resulting type needs to be fixed. Otherwise,
10493 we might end up with the wrong size for our component. This can be
10494 observed with the following type declarations:
10495
10496 type Octal is new Integer range 0 .. 7;
10497 type Octal_Array is array (Positive range <>) of Octal;
10498 pragma Pack (Octal_Array);
10499
10500 type Octal_Buffer (Size : Positive) is record
10501 Buffer : Octal_Array (1 .. Size);
10502 Length : Integer;
10503 end record;
10504
10505 In that case, Buffer is a PAD type whose size is unset and needs
10506 to be computed by fixing the unwrapped type.
10507
10508 4. When to ``Fix'' un-``Fixed'' sub-elements of an entity:
10509 ----------------------------------------------------------
10510
10511 Lastly, when should the sub-elements of an entity that remained unfixed
10512 thus far, be actually fixed?
10513
10514 The answer is: Only when referencing that element. For instance
10515 when selecting one component of a record, this specific component
10516 should be fixed at that point in time. Or when printing the value
10517 of a record, each component should be fixed before its value gets
10518 printed. Similarly for arrays, the element of the array should be
10519 fixed when printing each element of the array, or when extracting
10520 one element out of that array. On the other hand, fixing should
10521 not be performed on the elements when taking a slice of an array!
10522
10523 Note that one of the side effects of miscomputing the offset and
10524 size of each field is that we end up also miscomputing the size
10525 of the containing type. This can have adverse results when computing
10526 the value of an entity. GDB fetches the value of an entity based
10527 on the size of its type, and thus a wrong size causes GDB to fetch
10528 the wrong amount of memory. In the case where the computed size is
10529 too small, GDB fetches too little data to print the value of our
10530 entity. Results in this case are unpredictable, as we usually read
10531 past the buffer containing the data =:-o. */
10532
10533 /* Evaluate a subexpression of EXP, at index *POS, and return a value
10534 for that subexpression cast to TO_TYPE. Advance *POS over the
10535 subexpression. */
10536
10537 static value *
10538 ada_evaluate_subexp_for_cast (expression *exp, int *pos,
10539 enum noside noside, struct type *to_type)
10540 {
10541 int pc = *pos;
10542
10543 if (exp->elts[pc].opcode == OP_VAR_MSYM_VALUE
10544 || exp->elts[pc].opcode == OP_VAR_VALUE)
10545 {
10546 (*pos) += 4;
10547
10548 value *val;
10549 if (exp->elts[pc].opcode == OP_VAR_MSYM_VALUE)
10550 {
10551 if (noside == EVAL_AVOID_SIDE_EFFECTS)
10552 return value_zero (to_type, not_lval);
10553
10554 val = evaluate_var_msym_value (noside,
10555 exp->elts[pc + 1].objfile,
10556 exp->elts[pc + 2].msymbol);
10557 }
10558 else
10559 val = evaluate_var_value (noside,
10560 exp->elts[pc + 1].block,
10561 exp->elts[pc + 2].symbol);
10562
10563 if (noside == EVAL_SKIP)
10564 return eval_skip_value (exp);
10565
10566 val = ada_value_cast (to_type, val);
10567
10568 /* Follow the Ada language semantics that do not allow taking
10569 an address of the result of a cast (view conversion in Ada). */
10570 if (VALUE_LVAL (val) == lval_memory)
10571 {
10572 if (value_lazy (val))
10573 value_fetch_lazy (val);
10574 VALUE_LVAL (val) = not_lval;
10575 }
10576 return val;
10577 }
10578
10579 value *val = evaluate_subexp (to_type, exp, pos, noside);
10580 if (noside == EVAL_SKIP)
10581 return eval_skip_value (exp);
10582 return ada_value_cast (to_type, val);
10583 }
10584
10585 /* Implement the evaluate_exp routine in the exp_descriptor structure
10586 for the Ada language. */
10587
10588 static struct value *
10589 ada_evaluate_subexp (struct type *expect_type, struct expression *exp,
10590 int *pos, enum noside noside)
10591 {
10592 enum exp_opcode op;
10593 int tem;
10594 int pc;
10595 int preeval_pos;
10596 struct value *arg1 = NULL, *arg2 = NULL, *arg3;
10597 struct type *type;
10598 int nargs, oplen;
10599 struct value **argvec;
10600
10601 pc = *pos;
10602 *pos += 1;
10603 op = exp->elts[pc].opcode;
10604
10605 switch (op)
10606 {
10607 default:
10608 *pos -= 1;
10609 arg1 = evaluate_subexp_standard (expect_type, exp, pos, noside);
10610
10611 if (noside == EVAL_NORMAL)
10612 arg1 = unwrap_value (arg1);
10613
10614 /* If evaluating an OP_FLOAT and an EXPECT_TYPE was provided,
10615 then we need to perform the conversion manually, because
10616 evaluate_subexp_standard doesn't do it. This conversion is
10617 necessary in Ada because the different kinds of float/fixed
10618 types in Ada have different representations.
10619
10620 Similarly, we need to perform the conversion from OP_LONG
10621 ourselves. */
10622 if ((op == OP_FLOAT || op == OP_LONG) && expect_type != NULL)
10623 arg1 = ada_value_cast (expect_type, arg1);
10624
10625 return arg1;
10626
10627 case OP_STRING:
10628 {
10629 struct value *result;
10630
10631 *pos -= 1;
10632 result = evaluate_subexp_standard (expect_type, exp, pos, noside);
10633 /* The result type will have code OP_STRING, bashed there from
10634 OP_ARRAY. Bash it back. */
10635 if (TYPE_CODE (value_type (result)) == TYPE_CODE_STRING)
10636 TYPE_CODE (value_type (result)) = TYPE_CODE_ARRAY;
10637 return result;
10638 }
10639
10640 case UNOP_CAST:
10641 (*pos) += 2;
10642 type = exp->elts[pc + 1].type;
10643 return ada_evaluate_subexp_for_cast (exp, pos, noside, type);
10644
10645 case UNOP_QUAL:
10646 (*pos) += 2;
10647 type = exp->elts[pc + 1].type;
10648 return ada_evaluate_subexp (type, exp, pos, noside);
10649
10650 case BINOP_ASSIGN:
10651 arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
10652 if (exp->elts[*pos].opcode == OP_AGGREGATE)
10653 {
10654 arg1 = assign_aggregate (arg1, arg1, exp, pos, noside);
10655 if (noside == EVAL_SKIP || noside == EVAL_AVOID_SIDE_EFFECTS)
10656 return arg1;
10657 return ada_value_assign (arg1, arg1);
10658 }
10659 /* Force the evaluation of the rhs ARG2 to the type of the lhs ARG1,
10660 except if the lhs of our assignment is a convenience variable.
10661 In the case of assigning to a convenience variable, the lhs
10662 should be exactly the result of the evaluation of the rhs. */
10663 type = value_type (arg1);
10664 if (VALUE_LVAL (arg1) == lval_internalvar)
10665 type = NULL;
10666 arg2 = evaluate_subexp (type, exp, pos, noside);
10667 if (noside == EVAL_SKIP || noside == EVAL_AVOID_SIDE_EFFECTS)
10668 return arg1;
10669 if (ada_is_fixed_point_type (value_type (arg1)))
10670 arg2 = cast_to_fixed (value_type (arg1), arg2);
10671 else if (ada_is_fixed_point_type (value_type (arg2)))
10672 error
10673 (_("Fixed-point values must be assigned to fixed-point variables"));
10674 else
10675 arg2 = coerce_for_assign (value_type (arg1), arg2);
10676 return ada_value_assign (arg1, arg2);
10677
10678 case BINOP_ADD:
10679 arg1 = evaluate_subexp_with_coercion (exp, pos, noside);
10680 arg2 = evaluate_subexp_with_coercion (exp, pos, noside);
10681 if (noside == EVAL_SKIP)
10682 goto nosideret;
10683 if (TYPE_CODE (value_type (arg1)) == TYPE_CODE_PTR)
10684 return (value_from_longest
10685 (value_type (arg1),
10686 value_as_long (arg1) + value_as_long (arg2)));
10687 if (TYPE_CODE (value_type (arg2)) == TYPE_CODE_PTR)
10688 return (value_from_longest
10689 (value_type (arg2),
10690 value_as_long (arg1) + value_as_long (arg2)));
10691 if ((ada_is_fixed_point_type (value_type (arg1))
10692 || ada_is_fixed_point_type (value_type (arg2)))
10693 && value_type (arg1) != value_type (arg2))
10694 error (_("Operands of fixed-point addition must have the same type"));
10695 /* Do the addition, and cast the result to the type of the first
10696 argument. We cannot cast the result to a reference type, so if
10697 ARG1 is a reference type, find its underlying type. */
10698 type = value_type (arg1);
10699 while (TYPE_CODE (type) == TYPE_CODE_REF)
10700 type = TYPE_TARGET_TYPE (type);
10701 binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
10702 return value_cast (type, value_binop (arg1, arg2, BINOP_ADD));
10703
10704 case BINOP_SUB:
10705 arg1 = evaluate_subexp_with_coercion (exp, pos, noside);
10706 arg2 = evaluate_subexp_with_coercion (exp, pos, noside);
10707 if (noside == EVAL_SKIP)
10708 goto nosideret;
10709 if (TYPE_CODE (value_type (arg1)) == TYPE_CODE_PTR)
10710 return (value_from_longest
10711 (value_type (arg1),
10712 value_as_long (arg1) - value_as_long (arg2)));
10713 if (TYPE_CODE (value_type (arg2)) == TYPE_CODE_PTR)
10714 return (value_from_longest
10715 (value_type (arg2),
10716 value_as_long (arg1) - value_as_long (arg2)));
10717 if ((ada_is_fixed_point_type (value_type (arg1))
10718 || ada_is_fixed_point_type (value_type (arg2)))
10719 && value_type (arg1) != value_type (arg2))
10720 error (_("Operands of fixed-point subtraction "
10721 "must have the same type"));
10722 /* Do the substraction, and cast the result to the type of the first
10723 argument. We cannot cast the result to a reference type, so if
10724 ARG1 is a reference type, find its underlying type. */
10725 type = value_type (arg1);
10726 while (TYPE_CODE (type) == TYPE_CODE_REF)
10727 type = TYPE_TARGET_TYPE (type);
10728 binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
10729 return value_cast (type, value_binop (arg1, arg2, BINOP_SUB));
10730
10731 case BINOP_MUL:
10732 case BINOP_DIV:
10733 case BINOP_REM:
10734 case BINOP_MOD:
10735 arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
10736 arg2 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
10737 if (noside == EVAL_SKIP)
10738 goto nosideret;
10739 else if (noside == EVAL_AVOID_SIDE_EFFECTS)
10740 {
10741 binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
10742 return value_zero (value_type (arg1), not_lval);
10743 }
10744 else
10745 {
10746 type = builtin_type (exp->gdbarch)->builtin_double;
10747 if (ada_is_fixed_point_type (value_type (arg1)))
10748 arg1 = cast_from_fixed (type, arg1);
10749 if (ada_is_fixed_point_type (value_type (arg2)))
10750 arg2 = cast_from_fixed (type, arg2);
10751 binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
10752 return ada_value_binop (arg1, arg2, op);
10753 }
10754
10755 case BINOP_EQUAL:
10756 case BINOP_NOTEQUAL:
10757 arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
10758 arg2 = evaluate_subexp (value_type (arg1), exp, pos, noside);
10759 if (noside == EVAL_SKIP)
10760 goto nosideret;
10761 if (noside == EVAL_AVOID_SIDE_EFFECTS)
10762 tem = 0;
10763 else
10764 {
10765 binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
10766 tem = ada_value_equal (arg1, arg2);
10767 }
10768 if (op == BINOP_NOTEQUAL)
10769 tem = !tem;
10770 type = language_bool_type (exp->language_defn, exp->gdbarch);
10771 return value_from_longest (type, (LONGEST) tem);
10772
10773 case UNOP_NEG:
10774 arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
10775 if (noside == EVAL_SKIP)
10776 goto nosideret;
10777 else if (ada_is_fixed_point_type (value_type (arg1)))
10778 return value_cast (value_type (arg1), value_neg (arg1));
10779 else
10780 {
10781 unop_promote (exp->language_defn, exp->gdbarch, &arg1);
10782 return value_neg (arg1);
10783 }
10784
10785 case BINOP_LOGICAL_AND:
10786 case BINOP_LOGICAL_OR:
10787 case UNOP_LOGICAL_NOT:
10788 {
10789 struct value *val;
10790
10791 *pos -= 1;
10792 val = evaluate_subexp_standard (expect_type, exp, pos, noside);
10793 type = language_bool_type (exp->language_defn, exp->gdbarch);
10794 return value_cast (type, val);
10795 }
10796
10797 case BINOP_BITWISE_AND:
10798 case BINOP_BITWISE_IOR:
10799 case BINOP_BITWISE_XOR:
10800 {
10801 struct value *val;
10802
10803 arg1 = evaluate_subexp (NULL_TYPE, exp, pos, EVAL_AVOID_SIDE_EFFECTS);
10804 *pos = pc;
10805 val = evaluate_subexp_standard (expect_type, exp, pos, noside);
10806
10807 return value_cast (value_type (arg1), val);
10808 }
10809
10810 case OP_VAR_VALUE:
10811 *pos -= 1;
10812
10813 if (noside == EVAL_SKIP)
10814 {
10815 *pos += 4;
10816 goto nosideret;
10817 }
10818
10819 if (SYMBOL_DOMAIN (exp->elts[pc + 2].symbol) == UNDEF_DOMAIN)
10820 /* Only encountered when an unresolved symbol occurs in a
10821 context other than a function call, in which case, it is
10822 invalid. */
10823 error (_("Unexpected unresolved symbol, %s, during evaluation"),
10824 SYMBOL_PRINT_NAME (exp->elts[pc + 2].symbol));
10825
10826 if (noside == EVAL_AVOID_SIDE_EFFECTS)
10827 {
10828 type = static_unwrap_type (SYMBOL_TYPE (exp->elts[pc + 2].symbol));
10829 /* Check to see if this is a tagged type. We also need to handle
10830 the case where the type is a reference to a tagged type, but
10831 we have to be careful to exclude pointers to tagged types.
10832 The latter should be shown as usual (as a pointer), whereas
10833 a reference should mostly be transparent to the user. */
10834 if (ada_is_tagged_type (type, 0)
10835 || (TYPE_CODE (type) == TYPE_CODE_REF
10836 && ada_is_tagged_type (TYPE_TARGET_TYPE (type), 0)))
10837 {
10838 /* Tagged types are a little special in the fact that the real
10839 type is dynamic and can only be determined by inspecting the
10840 object's tag. This means that we need to get the object's
10841 value first (EVAL_NORMAL) and then extract the actual object
10842 type from its tag.
10843
10844 Note that we cannot skip the final step where we extract
10845 the object type from its tag, because the EVAL_NORMAL phase
10846 results in dynamic components being resolved into fixed ones.
10847 This can cause problems when trying to print the type
10848 description of tagged types whose parent has a dynamic size:
10849 We use the type name of the "_parent" component in order
10850 to print the name of the ancestor type in the type description.
10851 If that component had a dynamic size, the resolution into
10852 a fixed type would result in the loss of that type name,
10853 thus preventing us from printing the name of the ancestor
10854 type in the type description. */
10855 arg1 = evaluate_subexp (NULL_TYPE, exp, pos, EVAL_NORMAL);
10856
10857 if (TYPE_CODE (type) != TYPE_CODE_REF)
10858 {
10859 struct type *actual_type;
10860
10861 actual_type = type_from_tag (ada_value_tag (arg1));
10862 if (actual_type == NULL)
10863 /* If, for some reason, we were unable to determine
10864 the actual type from the tag, then use the static
10865 approximation that we just computed as a fallback.
10866 This can happen if the debugging information is
10867 incomplete, for instance. */
10868 actual_type = type;
10869 return value_zero (actual_type, not_lval);
10870 }
10871 else
10872 {
10873 /* In the case of a ref, ada_coerce_ref takes care
10874 of determining the actual type. But the evaluation
10875 should return a ref as it should be valid to ask
10876 for its address; so rebuild a ref after coerce. */
10877 arg1 = ada_coerce_ref (arg1);
10878 return value_ref (arg1, TYPE_CODE_REF);
10879 }
10880 }
10881
10882 /* Records and unions for which GNAT encodings have been
10883 generated need to be statically fixed as well.
10884 Otherwise, non-static fixing produces a type where
10885 all dynamic properties are removed, which prevents "ptype"
10886 from being able to completely describe the type.
10887 For instance, a case statement in a variant record would be
10888 replaced by the relevant components based on the actual
10889 value of the discriminants. */
10890 if ((TYPE_CODE (type) == TYPE_CODE_STRUCT
10891 && dynamic_template_type (type) != NULL)
10892 || (TYPE_CODE (type) == TYPE_CODE_UNION
10893 && ada_find_parallel_type (type, "___XVU") != NULL))
10894 {
10895 *pos += 4;
10896 return value_zero (to_static_fixed_type (type), not_lval);
10897 }
10898 }
10899
10900 arg1 = evaluate_subexp_standard (expect_type, exp, pos, noside);
10901 return ada_to_fixed_value (arg1);
10902
10903 case OP_FUNCALL:
10904 (*pos) += 2;
10905
10906 /* Allocate arg vector, including space for the function to be
10907 called in argvec[0] and a terminating NULL. */
10908 nargs = longest_to_int (exp->elts[pc + 1].longconst);
10909 argvec = XALLOCAVEC (struct value *, nargs + 2);
10910
10911 if (exp->elts[*pos].opcode == OP_VAR_VALUE
10912 && SYMBOL_DOMAIN (exp->elts[pc + 5].symbol) == UNDEF_DOMAIN)
10913 error (_("Unexpected unresolved symbol, %s, during evaluation"),
10914 SYMBOL_PRINT_NAME (exp->elts[pc + 5].symbol));
10915 else
10916 {
10917 for (tem = 0; tem <= nargs; tem += 1)
10918 argvec[tem] = evaluate_subexp (NULL_TYPE, exp, pos, noside);
10919 argvec[tem] = 0;
10920
10921 if (noside == EVAL_SKIP)
10922 goto nosideret;
10923 }
10924
10925 if (ada_is_constrained_packed_array_type
10926 (desc_base_type (value_type (argvec[0]))))
10927 argvec[0] = ada_coerce_to_simple_array (argvec[0]);
10928 else if (TYPE_CODE (value_type (argvec[0])) == TYPE_CODE_ARRAY
10929 && TYPE_FIELD_BITSIZE (value_type (argvec[0]), 0) != 0)
10930 /* This is a packed array that has already been fixed, and
10931 therefore already coerced to a simple array. Nothing further
10932 to do. */
10933 ;
10934 else if (TYPE_CODE (value_type (argvec[0])) == TYPE_CODE_REF)
10935 {
10936 /* Make sure we dereference references so that all the code below
10937 feels like it's really handling the referenced value. Wrapping
10938 types (for alignment) may be there, so make sure we strip them as
10939 well. */
10940 argvec[0] = ada_to_fixed_value (coerce_ref (argvec[0]));
10941 }
10942 else if (TYPE_CODE (value_type (argvec[0])) == TYPE_CODE_ARRAY
10943 && VALUE_LVAL (argvec[0]) == lval_memory)
10944 argvec[0] = value_addr (argvec[0]);
10945
10946 type = ada_check_typedef (value_type (argvec[0]));
10947
10948 /* Ada allows us to implicitly dereference arrays when subscripting
10949 them. So, if this is an array typedef (encoding use for array
10950 access types encoded as fat pointers), strip it now. */
10951 if (TYPE_CODE (type) == TYPE_CODE_TYPEDEF)
10952 type = ada_typedef_target_type (type);
10953
10954 if (TYPE_CODE (type) == TYPE_CODE_PTR)
10955 {
10956 switch (TYPE_CODE (ada_check_typedef (TYPE_TARGET_TYPE (type))))
10957 {
10958 case TYPE_CODE_FUNC:
10959 type = ada_check_typedef (TYPE_TARGET_TYPE (type));
10960 break;
10961 case TYPE_CODE_ARRAY:
10962 break;
10963 case TYPE_CODE_STRUCT:
10964 if (noside != EVAL_AVOID_SIDE_EFFECTS)
10965 argvec[0] = ada_value_ind (argvec[0]);
10966 type = ada_check_typedef (TYPE_TARGET_TYPE (type));
10967 break;
10968 default:
10969 error (_("cannot subscript or call something of type `%s'"),
10970 ada_type_name (value_type (argvec[0])));
10971 break;
10972 }
10973 }
10974
10975 switch (TYPE_CODE (type))
10976 {
10977 case TYPE_CODE_FUNC:
10978 if (noside == EVAL_AVOID_SIDE_EFFECTS)
10979 {
10980 if (TYPE_TARGET_TYPE (type) == NULL)
10981 error_call_unknown_return_type (NULL);
10982 return allocate_value (TYPE_TARGET_TYPE (type));
10983 }
10984 return call_function_by_hand (argvec[0], NULL,
10985 gdb::make_array_view (argvec + 1,
10986 nargs));
10987 case TYPE_CODE_INTERNAL_FUNCTION:
10988 if (noside == EVAL_AVOID_SIDE_EFFECTS)
10989 /* We don't know anything about what the internal
10990 function might return, but we have to return
10991 something. */
10992 return value_zero (builtin_type (exp->gdbarch)->builtin_int,
10993 not_lval);
10994 else
10995 return call_internal_function (exp->gdbarch, exp->language_defn,
10996 argvec[0], nargs, argvec + 1);
10997
10998 case TYPE_CODE_STRUCT:
10999 {
11000 int arity;
11001
11002 arity = ada_array_arity (type);
11003 type = ada_array_element_type (type, nargs);
11004 if (type == NULL)
11005 error (_("cannot subscript or call a record"));
11006 if (arity != nargs)
11007 error (_("wrong number of subscripts; expecting %d"), arity);
11008 if (noside == EVAL_AVOID_SIDE_EFFECTS)
11009 return value_zero (ada_aligned_type (type), lval_memory);
11010 return
11011 unwrap_value (ada_value_subscript
11012 (argvec[0], nargs, argvec + 1));
11013 }
11014 case TYPE_CODE_ARRAY:
11015 if (noside == EVAL_AVOID_SIDE_EFFECTS)
11016 {
11017 type = ada_array_element_type (type, nargs);
11018 if (type == NULL)
11019 error (_("element type of array unknown"));
11020 else
11021 return value_zero (ada_aligned_type (type), lval_memory);
11022 }
11023 return
11024 unwrap_value (ada_value_subscript
11025 (ada_coerce_to_simple_array (argvec[0]),
11026 nargs, argvec + 1));
11027 case TYPE_CODE_PTR: /* Pointer to array */
11028 if (noside == EVAL_AVOID_SIDE_EFFECTS)
11029 {
11030 type = to_fixed_array_type (TYPE_TARGET_TYPE (type), NULL, 1);
11031 type = ada_array_element_type (type, nargs);
11032 if (type == NULL)
11033 error (_("element type of array unknown"));
11034 else
11035 return value_zero (ada_aligned_type (type), lval_memory);
11036 }
11037 return
11038 unwrap_value (ada_value_ptr_subscript (argvec[0],
11039 nargs, argvec + 1));
11040
11041 default:
11042 error (_("Attempt to index or call something other than an "
11043 "array or function"));
11044 }
11045
11046 case TERNOP_SLICE:
11047 {
11048 struct value *array = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11049 struct value *low_bound_val =
11050 evaluate_subexp (NULL_TYPE, exp, pos, noside);
11051 struct value *high_bound_val =
11052 evaluate_subexp (NULL_TYPE, exp, pos, noside);
11053 LONGEST low_bound;
11054 LONGEST high_bound;
11055
11056 low_bound_val = coerce_ref (low_bound_val);
11057 high_bound_val = coerce_ref (high_bound_val);
11058 low_bound = value_as_long (low_bound_val);
11059 high_bound = value_as_long (high_bound_val);
11060
11061 if (noside == EVAL_SKIP)
11062 goto nosideret;
11063
11064 /* If this is a reference to an aligner type, then remove all
11065 the aligners. */
11066 if (TYPE_CODE (value_type (array)) == TYPE_CODE_REF
11067 && ada_is_aligner_type (TYPE_TARGET_TYPE (value_type (array))))
11068 TYPE_TARGET_TYPE (value_type (array)) =
11069 ada_aligned_type (TYPE_TARGET_TYPE (value_type (array)));
11070
11071 if (ada_is_constrained_packed_array_type (value_type (array)))
11072 error (_("cannot slice a packed array"));
11073
11074 /* If this is a reference to an array or an array lvalue,
11075 convert to a pointer. */
11076 if (TYPE_CODE (value_type (array)) == TYPE_CODE_REF
11077 || (TYPE_CODE (value_type (array)) == TYPE_CODE_ARRAY
11078 && VALUE_LVAL (array) == lval_memory))
11079 array = value_addr (array);
11080
11081 if (noside == EVAL_AVOID_SIDE_EFFECTS
11082 && ada_is_array_descriptor_type (ada_check_typedef
11083 (value_type (array))))
11084 return empty_array (ada_type_of_array (array, 0), low_bound,
11085 high_bound);
11086
11087 array = ada_coerce_to_simple_array_ptr (array);
11088
11089 /* If we have more than one level of pointer indirection,
11090 dereference the value until we get only one level. */
11091 while (TYPE_CODE (value_type (array)) == TYPE_CODE_PTR
11092 && (TYPE_CODE (TYPE_TARGET_TYPE (value_type (array)))
11093 == TYPE_CODE_PTR))
11094 array = value_ind (array);
11095
11096 /* Make sure we really do have an array type before going further,
11097 to avoid a SEGV when trying to get the index type or the target
11098 type later down the road if the debug info generated by
11099 the compiler is incorrect or incomplete. */
11100 if (!ada_is_simple_array_type (value_type (array)))
11101 error (_("cannot take slice of non-array"));
11102
11103 if (TYPE_CODE (ada_check_typedef (value_type (array)))
11104 == TYPE_CODE_PTR)
11105 {
11106 struct type *type0 = ada_check_typedef (value_type (array));
11107
11108 if (high_bound < low_bound || noside == EVAL_AVOID_SIDE_EFFECTS)
11109 return empty_array (TYPE_TARGET_TYPE (type0), low_bound, high_bound);
11110 else
11111 {
11112 struct type *arr_type0 =
11113 to_fixed_array_type (TYPE_TARGET_TYPE (type0), NULL, 1);
11114
11115 return ada_value_slice_from_ptr (array, arr_type0,
11116 longest_to_int (low_bound),
11117 longest_to_int (high_bound));
11118 }
11119 }
11120 else if (noside == EVAL_AVOID_SIDE_EFFECTS)
11121 return array;
11122 else if (high_bound < low_bound)
11123 return empty_array (value_type (array), low_bound, high_bound);
11124 else
11125 return ada_value_slice (array, longest_to_int (low_bound),
11126 longest_to_int (high_bound));
11127 }
11128
11129 case UNOP_IN_RANGE:
11130 (*pos) += 2;
11131 arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11132 type = check_typedef (exp->elts[pc + 1].type);
11133
11134 if (noside == EVAL_SKIP)
11135 goto nosideret;
11136
11137 switch (TYPE_CODE (type))
11138 {
11139 default:
11140 lim_warning (_("Membership test incompletely implemented; "
11141 "always returns true"));
11142 type = language_bool_type (exp->language_defn, exp->gdbarch);
11143 return value_from_longest (type, (LONGEST) 1);
11144
11145 case TYPE_CODE_RANGE:
11146 arg2 = value_from_longest (type, TYPE_LOW_BOUND (type));
11147 arg3 = value_from_longest (type, TYPE_HIGH_BOUND (type));
11148 binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
11149 binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg3);
11150 type = language_bool_type (exp->language_defn, exp->gdbarch);
11151 return
11152 value_from_longest (type,
11153 (value_less (arg1, arg3)
11154 || value_equal (arg1, arg3))
11155 && (value_less (arg2, arg1)
11156 || value_equal (arg2, arg1)));
11157 }
11158
11159 case BINOP_IN_BOUNDS:
11160 (*pos) += 2;
11161 arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11162 arg2 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11163
11164 if (noside == EVAL_SKIP)
11165 goto nosideret;
11166
11167 if (noside == EVAL_AVOID_SIDE_EFFECTS)
11168 {
11169 type = language_bool_type (exp->language_defn, exp->gdbarch);
11170 return value_zero (type, not_lval);
11171 }
11172
11173 tem = longest_to_int (exp->elts[pc + 1].longconst);
11174
11175 type = ada_index_type (value_type (arg2), tem, "range");
11176 if (!type)
11177 type = value_type (arg1);
11178
11179 arg3 = value_from_longest (type, ada_array_bound (arg2, tem, 1));
11180 arg2 = value_from_longest (type, ada_array_bound (arg2, tem, 0));
11181
11182 binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
11183 binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg3);
11184 type = language_bool_type (exp->language_defn, exp->gdbarch);
11185 return
11186 value_from_longest (type,
11187 (value_less (arg1, arg3)
11188 || value_equal (arg1, arg3))
11189 && (value_less (arg2, arg1)
11190 || value_equal (arg2, arg1)));
11191
11192 case TERNOP_IN_RANGE:
11193 arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11194 arg2 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11195 arg3 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11196
11197 if (noside == EVAL_SKIP)
11198 goto nosideret;
11199
11200 binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
11201 binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg3);
11202 type = language_bool_type (exp->language_defn, exp->gdbarch);
11203 return
11204 value_from_longest (type,
11205 (value_less (arg1, arg3)
11206 || value_equal (arg1, arg3))
11207 && (value_less (arg2, arg1)
11208 || value_equal (arg2, arg1)));
11209
11210 case OP_ATR_FIRST:
11211 case OP_ATR_LAST:
11212 case OP_ATR_LENGTH:
11213 {
11214 struct type *type_arg;
11215
11216 if (exp->elts[*pos].opcode == OP_TYPE)
11217 {
11218 evaluate_subexp (NULL_TYPE, exp, pos, EVAL_SKIP);
11219 arg1 = NULL;
11220 type_arg = check_typedef (exp->elts[pc + 2].type);
11221 }
11222 else
11223 {
11224 arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11225 type_arg = NULL;
11226 }
11227
11228 if (exp->elts[*pos].opcode != OP_LONG)
11229 error (_("Invalid operand to '%s"), ada_attribute_name (op));
11230 tem = longest_to_int (exp->elts[*pos + 2].longconst);
11231 *pos += 4;
11232
11233 if (noside == EVAL_SKIP)
11234 goto nosideret;
11235
11236 if (type_arg == NULL)
11237 {
11238 arg1 = ada_coerce_ref (arg1);
11239
11240 if (ada_is_constrained_packed_array_type (value_type (arg1)))
11241 arg1 = ada_coerce_to_simple_array (arg1);
11242
11243 if (op == OP_ATR_LENGTH)
11244 type = builtin_type (exp->gdbarch)->builtin_int;
11245 else
11246 {
11247 type = ada_index_type (value_type (arg1), tem,
11248 ada_attribute_name (op));
11249 if (type == NULL)
11250 type = builtin_type (exp->gdbarch)->builtin_int;
11251 }
11252
11253 if (noside == EVAL_AVOID_SIDE_EFFECTS)
11254 return allocate_value (type);
11255
11256 switch (op)
11257 {
11258 default: /* Should never happen. */
11259 error (_("unexpected attribute encountered"));
11260 case OP_ATR_FIRST:
11261 return value_from_longest
11262 (type, ada_array_bound (arg1, tem, 0));
11263 case OP_ATR_LAST:
11264 return value_from_longest
11265 (type, ada_array_bound (arg1, tem, 1));
11266 case OP_ATR_LENGTH:
11267 return value_from_longest
11268 (type, ada_array_length (arg1, tem));
11269 }
11270 }
11271 else if (discrete_type_p (type_arg))
11272 {
11273 struct type *range_type;
11274 const char *name = ada_type_name (type_arg);
11275
11276 range_type = NULL;
11277 if (name != NULL && TYPE_CODE (type_arg) != TYPE_CODE_ENUM)
11278 range_type = to_fixed_range_type (type_arg, NULL);
11279 if (range_type == NULL)
11280 range_type = type_arg;
11281 switch (op)
11282 {
11283 default:
11284 error (_("unexpected attribute encountered"));
11285 case OP_ATR_FIRST:
11286 return value_from_longest
11287 (range_type, ada_discrete_type_low_bound (range_type));
11288 case OP_ATR_LAST:
11289 return value_from_longest
11290 (range_type, ada_discrete_type_high_bound (range_type));
11291 case OP_ATR_LENGTH:
11292 error (_("the 'length attribute applies only to array types"));
11293 }
11294 }
11295 else if (TYPE_CODE (type_arg) == TYPE_CODE_FLT)
11296 error (_("unimplemented type attribute"));
11297 else
11298 {
11299 LONGEST low, high;
11300
11301 if (ada_is_constrained_packed_array_type (type_arg))
11302 type_arg = decode_constrained_packed_array_type (type_arg);
11303
11304 if (op == OP_ATR_LENGTH)
11305 type = builtin_type (exp->gdbarch)->builtin_int;
11306 else
11307 {
11308 type = ada_index_type (type_arg, tem, ada_attribute_name (op));
11309 if (type == NULL)
11310 type = builtin_type (exp->gdbarch)->builtin_int;
11311 }
11312
11313 if (noside == EVAL_AVOID_SIDE_EFFECTS)
11314 return allocate_value (type);
11315
11316 switch (op)
11317 {
11318 default:
11319 error (_("unexpected attribute encountered"));
11320 case OP_ATR_FIRST:
11321 low = ada_array_bound_from_type (type_arg, tem, 0);
11322 return value_from_longest (type, low);
11323 case OP_ATR_LAST:
11324 high = ada_array_bound_from_type (type_arg, tem, 1);
11325 return value_from_longest (type, high);
11326 case OP_ATR_LENGTH:
11327 low = ada_array_bound_from_type (type_arg, tem, 0);
11328 high = ada_array_bound_from_type (type_arg, tem, 1);
11329 return value_from_longest (type, high - low + 1);
11330 }
11331 }
11332 }
11333
11334 case OP_ATR_TAG:
11335 arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11336 if (noside == EVAL_SKIP)
11337 goto nosideret;
11338
11339 if (noside == EVAL_AVOID_SIDE_EFFECTS)
11340 return value_zero (ada_tag_type (arg1), not_lval);
11341
11342 return ada_value_tag (arg1);
11343
11344 case OP_ATR_MIN:
11345 case OP_ATR_MAX:
11346 evaluate_subexp (NULL_TYPE, exp, pos, EVAL_SKIP);
11347 arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11348 arg2 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11349 if (noside == EVAL_SKIP)
11350 goto nosideret;
11351 else if (noside == EVAL_AVOID_SIDE_EFFECTS)
11352 return value_zero (value_type (arg1), not_lval);
11353 else
11354 {
11355 binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
11356 return value_binop (arg1, arg2,
11357 op == OP_ATR_MIN ? BINOP_MIN : BINOP_MAX);
11358 }
11359
11360 case OP_ATR_MODULUS:
11361 {
11362 struct type *type_arg = check_typedef (exp->elts[pc + 2].type);
11363
11364 evaluate_subexp (NULL_TYPE, exp, pos, EVAL_SKIP);
11365 if (noside == EVAL_SKIP)
11366 goto nosideret;
11367
11368 if (!ada_is_modular_type (type_arg))
11369 error (_("'modulus must be applied to modular type"));
11370
11371 return value_from_longest (TYPE_TARGET_TYPE (type_arg),
11372 ada_modulus (type_arg));
11373 }
11374
11375
11376 case OP_ATR_POS:
11377 evaluate_subexp (NULL_TYPE, exp, pos, EVAL_SKIP);
11378 arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11379 if (noside == EVAL_SKIP)
11380 goto nosideret;
11381 type = builtin_type (exp->gdbarch)->builtin_int;
11382 if (noside == EVAL_AVOID_SIDE_EFFECTS)
11383 return value_zero (type, not_lval);
11384 else
11385 return value_pos_atr (type, arg1);
11386
11387 case OP_ATR_SIZE:
11388 arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11389 type = value_type (arg1);
11390
11391 /* If the argument is a reference, then dereference its type, since
11392 the user is really asking for the size of the actual object,
11393 not the size of the pointer. */
11394 if (TYPE_CODE (type) == TYPE_CODE_REF)
11395 type = TYPE_TARGET_TYPE (type);
11396
11397 if (noside == EVAL_SKIP)
11398 goto nosideret;
11399 else if (noside == EVAL_AVOID_SIDE_EFFECTS)
11400 return value_zero (builtin_type (exp->gdbarch)->builtin_int, not_lval);
11401 else
11402 return value_from_longest (builtin_type (exp->gdbarch)->builtin_int,
11403 TARGET_CHAR_BIT * TYPE_LENGTH (type));
11404
11405 case OP_ATR_VAL:
11406 evaluate_subexp (NULL_TYPE, exp, pos, EVAL_SKIP);
11407 arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11408 type = exp->elts[pc + 2].type;
11409 if (noside == EVAL_SKIP)
11410 goto nosideret;
11411 else if (noside == EVAL_AVOID_SIDE_EFFECTS)
11412 return value_zero (type, not_lval);
11413 else
11414 return value_val_atr (type, arg1);
11415
11416 case BINOP_EXP:
11417 arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11418 arg2 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11419 if (noside == EVAL_SKIP)
11420 goto nosideret;
11421 else if (noside == EVAL_AVOID_SIDE_EFFECTS)
11422 return value_zero (value_type (arg1), not_lval);
11423 else
11424 {
11425 /* For integer exponentiation operations,
11426 only promote the first argument. */
11427 if (is_integral_type (value_type (arg2)))
11428 unop_promote (exp->language_defn, exp->gdbarch, &arg1);
11429 else
11430 binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
11431
11432 return value_binop (arg1, arg2, op);
11433 }
11434
11435 case UNOP_PLUS:
11436 arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11437 if (noside == EVAL_SKIP)
11438 goto nosideret;
11439 else
11440 return arg1;
11441
11442 case UNOP_ABS:
11443 arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11444 if (noside == EVAL_SKIP)
11445 goto nosideret;
11446 unop_promote (exp->language_defn, exp->gdbarch, &arg1);
11447 if (value_less (arg1, value_zero (value_type (arg1), not_lval)))
11448 return value_neg (arg1);
11449 else
11450 return arg1;
11451
11452 case UNOP_IND:
11453 preeval_pos = *pos;
11454 arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11455 if (noside == EVAL_SKIP)
11456 goto nosideret;
11457 type = ada_check_typedef (value_type (arg1));
11458 if (noside == EVAL_AVOID_SIDE_EFFECTS)
11459 {
11460 if (ada_is_array_descriptor_type (type))
11461 /* GDB allows dereferencing GNAT array descriptors. */
11462 {
11463 struct type *arrType = ada_type_of_array (arg1, 0);
11464
11465 if (arrType == NULL)
11466 error (_("Attempt to dereference null array pointer."));
11467 return value_at_lazy (arrType, 0);
11468 }
11469 else if (TYPE_CODE (type) == TYPE_CODE_PTR
11470 || TYPE_CODE (type) == TYPE_CODE_REF
11471 /* In C you can dereference an array to get the 1st elt. */
11472 || TYPE_CODE (type) == TYPE_CODE_ARRAY)
11473 {
11474 /* As mentioned in the OP_VAR_VALUE case, tagged types can
11475 only be determined by inspecting the object's tag.
11476 This means that we need to evaluate completely the
11477 expression in order to get its type. */
11478
11479 if ((TYPE_CODE (type) == TYPE_CODE_REF
11480 || TYPE_CODE (type) == TYPE_CODE_PTR)
11481 && ada_is_tagged_type (TYPE_TARGET_TYPE (type), 0))
11482 {
11483 arg1 = evaluate_subexp (NULL_TYPE, exp, &preeval_pos,
11484 EVAL_NORMAL);
11485 type = value_type (ada_value_ind (arg1));
11486 }
11487 else
11488 {
11489 type = to_static_fixed_type
11490 (ada_aligned_type
11491 (ada_check_typedef (TYPE_TARGET_TYPE (type))));
11492 }
11493 ada_ensure_varsize_limit (type);
11494 return value_zero (type, lval_memory);
11495 }
11496 else if (TYPE_CODE (type) == TYPE_CODE_INT)
11497 {
11498 /* GDB allows dereferencing an int. */
11499 if (expect_type == NULL)
11500 return value_zero (builtin_type (exp->gdbarch)->builtin_int,
11501 lval_memory);
11502 else
11503 {
11504 expect_type =
11505 to_static_fixed_type (ada_aligned_type (expect_type));
11506 return value_zero (expect_type, lval_memory);
11507 }
11508 }
11509 else
11510 error (_("Attempt to take contents of a non-pointer value."));
11511 }
11512 arg1 = ada_coerce_ref (arg1); /* FIXME: What is this for?? */
11513 type = ada_check_typedef (value_type (arg1));
11514
11515 if (TYPE_CODE (type) == TYPE_CODE_INT)
11516 /* GDB allows dereferencing an int. If we were given
11517 the expect_type, then use that as the target type.
11518 Otherwise, assume that the target type is an int. */
11519 {
11520 if (expect_type != NULL)
11521 return ada_value_ind (value_cast (lookup_pointer_type (expect_type),
11522 arg1));
11523 else
11524 return value_at_lazy (builtin_type (exp->gdbarch)->builtin_int,
11525 (CORE_ADDR) value_as_address (arg1));
11526 }
11527
11528 if (ada_is_array_descriptor_type (type))
11529 /* GDB allows dereferencing GNAT array descriptors. */
11530 return ada_coerce_to_simple_array (arg1);
11531 else
11532 return ada_value_ind (arg1);
11533
11534 case STRUCTOP_STRUCT:
11535 tem = longest_to_int (exp->elts[pc + 1].longconst);
11536 (*pos) += 3 + BYTES_TO_EXP_ELEM (tem + 1);
11537 preeval_pos = *pos;
11538 arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11539 if (noside == EVAL_SKIP)
11540 goto nosideret;
11541 if (noside == EVAL_AVOID_SIDE_EFFECTS)
11542 {
11543 struct type *type1 = value_type (arg1);
11544
11545 if (ada_is_tagged_type (type1, 1))
11546 {
11547 type = ada_lookup_struct_elt_type (type1,
11548 &exp->elts[pc + 2].string,
11549 1, 1);
11550
11551 /* If the field is not found, check if it exists in the
11552 extension of this object's type. This means that we
11553 need to evaluate completely the expression. */
11554
11555 if (type == NULL)
11556 {
11557 arg1 = evaluate_subexp (NULL_TYPE, exp, &preeval_pos,
11558 EVAL_NORMAL);
11559 arg1 = ada_value_struct_elt (arg1,
11560 &exp->elts[pc + 2].string,
11561 0);
11562 arg1 = unwrap_value (arg1);
11563 type = value_type (ada_to_fixed_value (arg1));
11564 }
11565 }
11566 else
11567 type =
11568 ada_lookup_struct_elt_type (type1, &exp->elts[pc + 2].string, 1,
11569 0);
11570
11571 return value_zero (ada_aligned_type (type), lval_memory);
11572 }
11573 else
11574 {
11575 arg1 = ada_value_struct_elt (arg1, &exp->elts[pc + 2].string, 0);
11576 arg1 = unwrap_value (arg1);
11577 return ada_to_fixed_value (arg1);
11578 }
11579
11580 case OP_TYPE:
11581 /* The value is not supposed to be used. This is here to make it
11582 easier to accommodate expressions that contain types. */
11583 (*pos) += 2;
11584 if (noside == EVAL_SKIP)
11585 goto nosideret;
11586 else if (noside == EVAL_AVOID_SIDE_EFFECTS)
11587 return allocate_value (exp->elts[pc + 1].type);
11588 else
11589 error (_("Attempt to use a type name as an expression"));
11590
11591 case OP_AGGREGATE:
11592 case OP_CHOICES:
11593 case OP_OTHERS:
11594 case OP_DISCRETE_RANGE:
11595 case OP_POSITIONAL:
11596 case OP_NAME:
11597 if (noside == EVAL_NORMAL)
11598 switch (op)
11599 {
11600 case OP_NAME:
11601 error (_("Undefined name, ambiguous name, or renaming used in "
11602 "component association: %s."), &exp->elts[pc+2].string);
11603 case OP_AGGREGATE:
11604 error (_("Aggregates only allowed on the right of an assignment"));
11605 default:
11606 internal_error (__FILE__, __LINE__,
11607 _("aggregate apparently mangled"));
11608 }
11609
11610 ada_forward_operator_length (exp, pc, &oplen, &nargs);
11611 *pos += oplen - 1;
11612 for (tem = 0; tem < nargs; tem += 1)
11613 ada_evaluate_subexp (NULL, exp, pos, noside);
11614 goto nosideret;
11615 }
11616
11617 nosideret:
11618 return eval_skip_value (exp);
11619 }
11620 \f
11621
11622 /* Fixed point */
11623
11624 /* If TYPE encodes an Ada fixed-point type, return the suffix of the
11625 type name that encodes the 'small and 'delta information.
11626 Otherwise, return NULL. */
11627
11628 static const char *
11629 fixed_type_info (struct type *type)
11630 {
11631 const char *name = ada_type_name (type);
11632 enum type_code code = (type == NULL) ? TYPE_CODE_UNDEF : TYPE_CODE (type);
11633
11634 if ((code == TYPE_CODE_INT || code == TYPE_CODE_RANGE) && name != NULL)
11635 {
11636 const char *tail = strstr (name, "___XF_");
11637
11638 if (tail == NULL)
11639 return NULL;
11640 else
11641 return tail + 5;
11642 }
11643 else if (code == TYPE_CODE_RANGE && TYPE_TARGET_TYPE (type) != type)
11644 return fixed_type_info (TYPE_TARGET_TYPE (type));
11645 else
11646 return NULL;
11647 }
11648
11649 /* Returns non-zero iff TYPE represents an Ada fixed-point type. */
11650
11651 int
11652 ada_is_fixed_point_type (struct type *type)
11653 {
11654 return fixed_type_info (type) != NULL;
11655 }
11656
11657 /* Return non-zero iff TYPE represents a System.Address type. */
11658
11659 int
11660 ada_is_system_address_type (struct type *type)
11661 {
11662 return (TYPE_NAME (type)
11663 && strcmp (TYPE_NAME (type), "system__address") == 0);
11664 }
11665
11666 /* Assuming that TYPE is the representation of an Ada fixed-point
11667 type, return the target floating-point type to be used to represent
11668 of this type during internal computation. */
11669
11670 static struct type *
11671 ada_scaling_type (struct type *type)
11672 {
11673 return builtin_type (get_type_arch (type))->builtin_long_double;
11674 }
11675
11676 /* Assuming that TYPE is the representation of an Ada fixed-point
11677 type, return its delta, or NULL if the type is malformed and the
11678 delta cannot be determined. */
11679
11680 struct value *
11681 ada_delta (struct type *type)
11682 {
11683 const char *encoding = fixed_type_info (type);
11684 struct type *scale_type = ada_scaling_type (type);
11685
11686 long long num, den;
11687
11688 if (sscanf (encoding, "_%lld_%lld", &num, &den) < 2)
11689 return nullptr;
11690 else
11691 return value_binop (value_from_longest (scale_type, num),
11692 value_from_longest (scale_type, den), BINOP_DIV);
11693 }
11694
11695 /* Assuming that ada_is_fixed_point_type (TYPE), return the scaling
11696 factor ('SMALL value) associated with the type. */
11697
11698 struct value *
11699 ada_scaling_factor (struct type *type)
11700 {
11701 const char *encoding = fixed_type_info (type);
11702 struct type *scale_type = ada_scaling_type (type);
11703
11704 long long num0, den0, num1, den1;
11705 int n;
11706
11707 n = sscanf (encoding, "_%lld_%lld_%lld_%lld",
11708 &num0, &den0, &num1, &den1);
11709
11710 if (n < 2)
11711 return value_from_longest (scale_type, 1);
11712 else if (n == 4)
11713 return value_binop (value_from_longest (scale_type, num1),
11714 value_from_longest (scale_type, den1), BINOP_DIV);
11715 else
11716 return value_binop (value_from_longest (scale_type, num0),
11717 value_from_longest (scale_type, den0), BINOP_DIV);
11718 }
11719
11720 \f
11721
11722 /* Range types */
11723
11724 /* Scan STR beginning at position K for a discriminant name, and
11725 return the value of that discriminant field of DVAL in *PX. If
11726 PNEW_K is not null, put the position of the character beyond the
11727 name scanned in *PNEW_K. Return 1 if successful; return 0 and do
11728 not alter *PX and *PNEW_K if unsuccessful. */
11729
11730 static int
11731 scan_discrim_bound (const char *str, int k, struct value *dval, LONGEST * px,
11732 int *pnew_k)
11733 {
11734 static char *bound_buffer = NULL;
11735 static size_t bound_buffer_len = 0;
11736 const char *pstart, *pend, *bound;
11737 struct value *bound_val;
11738
11739 if (dval == NULL || str == NULL || str[k] == '\0')
11740 return 0;
11741
11742 pstart = str + k;
11743 pend = strstr (pstart, "__");
11744 if (pend == NULL)
11745 {
11746 bound = pstart;
11747 k += strlen (bound);
11748 }
11749 else
11750 {
11751 int len = pend - pstart;
11752
11753 /* Strip __ and beyond. */
11754 GROW_VECT (bound_buffer, bound_buffer_len, len + 1);
11755 strncpy (bound_buffer, pstart, len);
11756 bound_buffer[len] = '\0';
11757
11758 bound = bound_buffer;
11759 k = pend - str;
11760 }
11761
11762 bound_val = ada_search_struct_field (bound, dval, 0, value_type (dval));
11763 if (bound_val == NULL)
11764 return 0;
11765
11766 *px = value_as_long (bound_val);
11767 if (pnew_k != NULL)
11768 *pnew_k = k;
11769 return 1;
11770 }
11771
11772 /* Value of variable named NAME in the current environment. If
11773 no such variable found, then if ERR_MSG is null, returns 0, and
11774 otherwise causes an error with message ERR_MSG. */
11775
11776 static struct value *
11777 get_var_value (const char *name, const char *err_msg)
11778 {
11779 lookup_name_info lookup_name (name, symbol_name_match_type::FULL);
11780
11781 std::vector<struct block_symbol> syms;
11782 int nsyms = ada_lookup_symbol_list_worker (lookup_name,
11783 get_selected_block (0),
11784 VAR_DOMAIN, &syms, 1);
11785
11786 if (nsyms != 1)
11787 {
11788 if (err_msg == NULL)
11789 return 0;
11790 else
11791 error (("%s"), err_msg);
11792 }
11793
11794 return value_of_variable (syms[0].symbol, syms[0].block);
11795 }
11796
11797 /* Value of integer variable named NAME in the current environment.
11798 If no such variable is found, returns false. Otherwise, sets VALUE
11799 to the variable's value and returns true. */
11800
11801 bool
11802 get_int_var_value (const char *name, LONGEST &value)
11803 {
11804 struct value *var_val = get_var_value (name, 0);
11805
11806 if (var_val == 0)
11807 return false;
11808
11809 value = value_as_long (var_val);
11810 return true;
11811 }
11812
11813
11814 /* Return a range type whose base type is that of the range type named
11815 NAME in the current environment, and whose bounds are calculated
11816 from NAME according to the GNAT range encoding conventions.
11817 Extract discriminant values, if needed, from DVAL. ORIG_TYPE is the
11818 corresponding range type from debug information; fall back to using it
11819 if symbol lookup fails. If a new type must be created, allocate it
11820 like ORIG_TYPE was. The bounds information, in general, is encoded
11821 in NAME, the base type given in the named range type. */
11822
11823 static struct type *
11824 to_fixed_range_type (struct type *raw_type, struct value *dval)
11825 {
11826 const char *name;
11827 struct type *base_type;
11828 const char *subtype_info;
11829
11830 gdb_assert (raw_type != NULL);
11831 gdb_assert (TYPE_NAME (raw_type) != NULL);
11832
11833 if (TYPE_CODE (raw_type) == TYPE_CODE_RANGE)
11834 base_type = TYPE_TARGET_TYPE (raw_type);
11835 else
11836 base_type = raw_type;
11837
11838 name = TYPE_NAME (raw_type);
11839 subtype_info = strstr (name, "___XD");
11840 if (subtype_info == NULL)
11841 {
11842 LONGEST L = ada_discrete_type_low_bound (raw_type);
11843 LONGEST U = ada_discrete_type_high_bound (raw_type);
11844
11845 if (L < INT_MIN || U > INT_MAX)
11846 return raw_type;
11847 else
11848 return create_static_range_type (alloc_type_copy (raw_type), raw_type,
11849 L, U);
11850 }
11851 else
11852 {
11853 static char *name_buf = NULL;
11854 static size_t name_len = 0;
11855 int prefix_len = subtype_info - name;
11856 LONGEST L, U;
11857 struct type *type;
11858 const char *bounds_str;
11859 int n;
11860
11861 GROW_VECT (name_buf, name_len, prefix_len + 5);
11862 strncpy (name_buf, name, prefix_len);
11863 name_buf[prefix_len] = '\0';
11864
11865 subtype_info += 5;
11866 bounds_str = strchr (subtype_info, '_');
11867 n = 1;
11868
11869 if (*subtype_info == 'L')
11870 {
11871 if (!ada_scan_number (bounds_str, n, &L, &n)
11872 && !scan_discrim_bound (bounds_str, n, dval, &L, &n))
11873 return raw_type;
11874 if (bounds_str[n] == '_')
11875 n += 2;
11876 else if (bounds_str[n] == '.') /* FIXME? SGI Workshop kludge. */
11877 n += 1;
11878 subtype_info += 1;
11879 }
11880 else
11881 {
11882 strcpy (name_buf + prefix_len, "___L");
11883 if (!get_int_var_value (name_buf, L))
11884 {
11885 lim_warning (_("Unknown lower bound, using 1."));
11886 L = 1;
11887 }
11888 }
11889
11890 if (*subtype_info == 'U')
11891 {
11892 if (!ada_scan_number (bounds_str, n, &U, &n)
11893 && !scan_discrim_bound (bounds_str, n, dval, &U, &n))
11894 return raw_type;
11895 }
11896 else
11897 {
11898 strcpy (name_buf + prefix_len, "___U");
11899 if (!get_int_var_value (name_buf, U))
11900 {
11901 lim_warning (_("Unknown upper bound, using %ld."), (long) L);
11902 U = L;
11903 }
11904 }
11905
11906 type = create_static_range_type (alloc_type_copy (raw_type),
11907 base_type, L, U);
11908 /* create_static_range_type alters the resulting type's length
11909 to match the size of the base_type, which is not what we want.
11910 Set it back to the original range type's length. */
11911 TYPE_LENGTH (type) = TYPE_LENGTH (raw_type);
11912 TYPE_NAME (type) = name;
11913 return type;
11914 }
11915 }
11916
11917 /* True iff NAME is the name of a range type. */
11918
11919 int
11920 ada_is_range_type_name (const char *name)
11921 {
11922 return (name != NULL && strstr (name, "___XD"));
11923 }
11924 \f
11925
11926 /* Modular types */
11927
11928 /* True iff TYPE is an Ada modular type. */
11929
11930 int
11931 ada_is_modular_type (struct type *type)
11932 {
11933 struct type *subranged_type = get_base_type (type);
11934
11935 return (subranged_type != NULL && TYPE_CODE (type) == TYPE_CODE_RANGE
11936 && TYPE_CODE (subranged_type) == TYPE_CODE_INT
11937 && TYPE_UNSIGNED (subranged_type));
11938 }
11939
11940 /* Assuming ada_is_modular_type (TYPE), the modulus of TYPE. */
11941
11942 ULONGEST
11943 ada_modulus (struct type *type)
11944 {
11945 return (ULONGEST) TYPE_HIGH_BOUND (type) + 1;
11946 }
11947 \f
11948
11949 /* Ada exception catchpoint support:
11950 ---------------------------------
11951
11952 We support 3 kinds of exception catchpoints:
11953 . catchpoints on Ada exceptions
11954 . catchpoints on unhandled Ada exceptions
11955 . catchpoints on failed assertions
11956
11957 Exceptions raised during failed assertions, or unhandled exceptions
11958 could perfectly be caught with the general catchpoint on Ada exceptions.
11959 However, we can easily differentiate these two special cases, and having
11960 the option to distinguish these two cases from the rest can be useful
11961 to zero-in on certain situations.
11962
11963 Exception catchpoints are a specialized form of breakpoint,
11964 since they rely on inserting breakpoints inside known routines
11965 of the GNAT runtime. The implementation therefore uses a standard
11966 breakpoint structure of the BP_BREAKPOINT type, but with its own set
11967 of breakpoint_ops.
11968
11969 Support in the runtime for exception catchpoints have been changed
11970 a few times already, and these changes affect the implementation
11971 of these catchpoints. In order to be able to support several
11972 variants of the runtime, we use a sniffer that will determine
11973 the runtime variant used by the program being debugged. */
11974
11975 /* Ada's standard exceptions.
11976
11977 The Ada 83 standard also defined Numeric_Error. But there so many
11978 situations where it was unclear from the Ada 83 Reference Manual
11979 (RM) whether Constraint_Error or Numeric_Error should be raised,
11980 that the ARG (Ada Rapporteur Group) eventually issued a Binding
11981 Interpretation saying that anytime the RM says that Numeric_Error
11982 should be raised, the implementation may raise Constraint_Error.
11983 Ada 95 went one step further and pretty much removed Numeric_Error
11984 from the list of standard exceptions (it made it a renaming of
11985 Constraint_Error, to help preserve compatibility when compiling
11986 an Ada83 compiler). As such, we do not include Numeric_Error from
11987 this list of standard exceptions. */
11988
11989 static const char *standard_exc[] = {
11990 "constraint_error",
11991 "program_error",
11992 "storage_error",
11993 "tasking_error"
11994 };
11995
11996 typedef CORE_ADDR (ada_unhandled_exception_name_addr_ftype) (void);
11997
11998 /* A structure that describes how to support exception catchpoints
11999 for a given executable. */
12000
12001 struct exception_support_info
12002 {
12003 /* The name of the symbol to break on in order to insert
12004 a catchpoint on exceptions. */
12005 const char *catch_exception_sym;
12006
12007 /* The name of the symbol to break on in order to insert
12008 a catchpoint on unhandled exceptions. */
12009 const char *catch_exception_unhandled_sym;
12010
12011 /* The name of the symbol to break on in order to insert
12012 a catchpoint on failed assertions. */
12013 const char *catch_assert_sym;
12014
12015 /* The name of the symbol to break on in order to insert
12016 a catchpoint on exception handling. */
12017 const char *catch_handlers_sym;
12018
12019 /* Assuming that the inferior just triggered an unhandled exception
12020 catchpoint, this function is responsible for returning the address
12021 in inferior memory where the name of that exception is stored.
12022 Return zero if the address could not be computed. */
12023 ada_unhandled_exception_name_addr_ftype *unhandled_exception_name_addr;
12024 };
12025
12026 static CORE_ADDR ada_unhandled_exception_name_addr (void);
12027 static CORE_ADDR ada_unhandled_exception_name_addr_from_raise (void);
12028
12029 /* The following exception support info structure describes how to
12030 implement exception catchpoints with the latest version of the
12031 Ada runtime (as of 2007-03-06). */
12032
12033 static const struct exception_support_info default_exception_support_info =
12034 {
12035 "__gnat_debug_raise_exception", /* catch_exception_sym */
12036 "__gnat_unhandled_exception", /* catch_exception_unhandled_sym */
12037 "__gnat_debug_raise_assert_failure", /* catch_assert_sym */
12038 "__gnat_begin_handler", /* catch_handlers_sym */
12039 ada_unhandled_exception_name_addr
12040 };
12041
12042 /* The following exception support info structure describes how to
12043 implement exception catchpoints with a slightly older version
12044 of the Ada runtime. */
12045
12046 static const struct exception_support_info exception_support_info_fallback =
12047 {
12048 "__gnat_raise_nodefer_with_msg", /* catch_exception_sym */
12049 "__gnat_unhandled_exception", /* catch_exception_unhandled_sym */
12050 "system__assertions__raise_assert_failure", /* catch_assert_sym */
12051 "__gnat_begin_handler", /* catch_handlers_sym */
12052 ada_unhandled_exception_name_addr_from_raise
12053 };
12054
12055 /* Return nonzero if we can detect the exception support routines
12056 described in EINFO.
12057
12058 This function errors out if an abnormal situation is detected
12059 (for instance, if we find the exception support routines, but
12060 that support is found to be incomplete). */
12061
12062 static int
12063 ada_has_this_exception_support (const struct exception_support_info *einfo)
12064 {
12065 struct symbol *sym;
12066
12067 /* The symbol we're looking up is provided by a unit in the GNAT runtime
12068 that should be compiled with debugging information. As a result, we
12069 expect to find that symbol in the symtabs. */
12070
12071 sym = standard_lookup (einfo->catch_exception_sym, NULL, VAR_DOMAIN);
12072 if (sym == NULL)
12073 {
12074 /* Perhaps we did not find our symbol because the Ada runtime was
12075 compiled without debugging info, or simply stripped of it.
12076 It happens on some GNU/Linux distributions for instance, where
12077 users have to install a separate debug package in order to get
12078 the runtime's debugging info. In that situation, let the user
12079 know why we cannot insert an Ada exception catchpoint.
12080
12081 Note: Just for the purpose of inserting our Ada exception
12082 catchpoint, we could rely purely on the associated minimal symbol.
12083 But we would be operating in degraded mode anyway, since we are
12084 still lacking the debugging info needed later on to extract
12085 the name of the exception being raised (this name is printed in
12086 the catchpoint message, and is also used when trying to catch
12087 a specific exception). We do not handle this case for now. */
12088 struct bound_minimal_symbol msym
12089 = lookup_minimal_symbol (einfo->catch_exception_sym, NULL, NULL);
12090
12091 if (msym.minsym && MSYMBOL_TYPE (msym.minsym) != mst_solib_trampoline)
12092 error (_("Your Ada runtime appears to be missing some debugging "
12093 "information.\nCannot insert Ada exception catchpoint "
12094 "in this configuration."));
12095
12096 return 0;
12097 }
12098
12099 /* Make sure that the symbol we found corresponds to a function. */
12100
12101 if (SYMBOL_CLASS (sym) != LOC_BLOCK)
12102 error (_("Symbol \"%s\" is not a function (class = %d)"),
12103 SYMBOL_LINKAGE_NAME (sym), SYMBOL_CLASS (sym));
12104
12105 return 1;
12106 }
12107
12108 /* Inspect the Ada runtime and determine which exception info structure
12109 should be used to provide support for exception catchpoints.
12110
12111 This function will always set the per-inferior exception_info,
12112 or raise an error. */
12113
12114 static void
12115 ada_exception_support_info_sniffer (void)
12116 {
12117 struct ada_inferior_data *data = get_ada_inferior_data (current_inferior ());
12118
12119 /* If the exception info is already known, then no need to recompute it. */
12120 if (data->exception_info != NULL)
12121 return;
12122
12123 /* Check the latest (default) exception support info. */
12124 if (ada_has_this_exception_support (&default_exception_support_info))
12125 {
12126 data->exception_info = &default_exception_support_info;
12127 return;
12128 }
12129
12130 /* Try our fallback exception suport info. */
12131 if (ada_has_this_exception_support (&exception_support_info_fallback))
12132 {
12133 data->exception_info = &exception_support_info_fallback;
12134 return;
12135 }
12136
12137 /* Sometimes, it is normal for us to not be able to find the routine
12138 we are looking for. This happens when the program is linked with
12139 the shared version of the GNAT runtime, and the program has not been
12140 started yet. Inform the user of these two possible causes if
12141 applicable. */
12142
12143 if (ada_update_initial_language (language_unknown) != language_ada)
12144 error (_("Unable to insert catchpoint. Is this an Ada main program?"));
12145
12146 /* If the symbol does not exist, then check that the program is
12147 already started, to make sure that shared libraries have been
12148 loaded. If it is not started, this may mean that the symbol is
12149 in a shared library. */
12150
12151 if (inferior_ptid.pid () == 0)
12152 error (_("Unable to insert catchpoint. Try to start the program first."));
12153
12154 /* At this point, we know that we are debugging an Ada program and
12155 that the inferior has been started, but we still are not able to
12156 find the run-time symbols. That can mean that we are in
12157 configurable run time mode, or that a-except as been optimized
12158 out by the linker... In any case, at this point it is not worth
12159 supporting this feature. */
12160
12161 error (_("Cannot insert Ada exception catchpoints in this configuration."));
12162 }
12163
12164 /* True iff FRAME is very likely to be that of a function that is
12165 part of the runtime system. This is all very heuristic, but is
12166 intended to be used as advice as to what frames are uninteresting
12167 to most users. */
12168
12169 static int
12170 is_known_support_routine (struct frame_info *frame)
12171 {
12172 enum language func_lang;
12173 int i;
12174 const char *fullname;
12175
12176 /* If this code does not have any debugging information (no symtab),
12177 This cannot be any user code. */
12178
12179 symtab_and_line sal = find_frame_sal (frame);
12180 if (sal.symtab == NULL)
12181 return 1;
12182
12183 /* If there is a symtab, but the associated source file cannot be
12184 located, then assume this is not user code: Selecting a frame
12185 for which we cannot display the code would not be very helpful
12186 for the user. This should also take care of case such as VxWorks
12187 where the kernel has some debugging info provided for a few units. */
12188
12189 fullname = symtab_to_fullname (sal.symtab);
12190 if (access (fullname, R_OK) != 0)
12191 return 1;
12192
12193 /* Check the unit filename againt the Ada runtime file naming.
12194 We also check the name of the objfile against the name of some
12195 known system libraries that sometimes come with debugging info
12196 too. */
12197
12198 for (i = 0; known_runtime_file_name_patterns[i] != NULL; i += 1)
12199 {
12200 re_comp (known_runtime_file_name_patterns[i]);
12201 if (re_exec (lbasename (sal.symtab->filename)))
12202 return 1;
12203 if (SYMTAB_OBJFILE (sal.symtab) != NULL
12204 && re_exec (objfile_name (SYMTAB_OBJFILE (sal.symtab))))
12205 return 1;
12206 }
12207
12208 /* Check whether the function is a GNAT-generated entity. */
12209
12210 gdb::unique_xmalloc_ptr<char> func_name
12211 = find_frame_funname (frame, &func_lang, NULL);
12212 if (func_name == NULL)
12213 return 1;
12214
12215 for (i = 0; known_auxiliary_function_name_patterns[i] != NULL; i += 1)
12216 {
12217 re_comp (known_auxiliary_function_name_patterns[i]);
12218 if (re_exec (func_name.get ()))
12219 return 1;
12220 }
12221
12222 return 0;
12223 }
12224
12225 /* Find the first frame that contains debugging information and that is not
12226 part of the Ada run-time, starting from FI and moving upward. */
12227
12228 void
12229 ada_find_printable_frame (struct frame_info *fi)
12230 {
12231 for (; fi != NULL; fi = get_prev_frame (fi))
12232 {
12233 if (!is_known_support_routine (fi))
12234 {
12235 select_frame (fi);
12236 break;
12237 }
12238 }
12239
12240 }
12241
12242 /* Assuming that the inferior just triggered an unhandled exception
12243 catchpoint, return the address in inferior memory where the name
12244 of the exception is stored.
12245
12246 Return zero if the address could not be computed. */
12247
12248 static CORE_ADDR
12249 ada_unhandled_exception_name_addr (void)
12250 {
12251 return parse_and_eval_address ("e.full_name");
12252 }
12253
12254 /* Same as ada_unhandled_exception_name_addr, except that this function
12255 should be used when the inferior uses an older version of the runtime,
12256 where the exception name needs to be extracted from a specific frame
12257 several frames up in the callstack. */
12258
12259 static CORE_ADDR
12260 ada_unhandled_exception_name_addr_from_raise (void)
12261 {
12262 int frame_level;
12263 struct frame_info *fi;
12264 struct ada_inferior_data *data = get_ada_inferior_data (current_inferior ());
12265
12266 /* To determine the name of this exception, we need to select
12267 the frame corresponding to RAISE_SYM_NAME. This frame is
12268 at least 3 levels up, so we simply skip the first 3 frames
12269 without checking the name of their associated function. */
12270 fi = get_current_frame ();
12271 for (frame_level = 0; frame_level < 3; frame_level += 1)
12272 if (fi != NULL)
12273 fi = get_prev_frame (fi);
12274
12275 while (fi != NULL)
12276 {
12277 enum language func_lang;
12278
12279 gdb::unique_xmalloc_ptr<char> func_name
12280 = find_frame_funname (fi, &func_lang, NULL);
12281 if (func_name != NULL)
12282 {
12283 if (strcmp (func_name.get (),
12284 data->exception_info->catch_exception_sym) == 0)
12285 break; /* We found the frame we were looking for... */
12286 }
12287 fi = get_prev_frame (fi);
12288 }
12289
12290 if (fi == NULL)
12291 return 0;
12292
12293 select_frame (fi);
12294 return parse_and_eval_address ("id.full_name");
12295 }
12296
12297 /* Assuming the inferior just triggered an Ada exception catchpoint
12298 (of any type), return the address in inferior memory where the name
12299 of the exception is stored, if applicable.
12300
12301 Assumes the selected frame is the current frame.
12302
12303 Return zero if the address could not be computed, or if not relevant. */
12304
12305 static CORE_ADDR
12306 ada_exception_name_addr_1 (enum ada_exception_catchpoint_kind ex,
12307 struct breakpoint *b)
12308 {
12309 struct ada_inferior_data *data = get_ada_inferior_data (current_inferior ());
12310
12311 switch (ex)
12312 {
12313 case ada_catch_exception:
12314 return (parse_and_eval_address ("e.full_name"));
12315 break;
12316
12317 case ada_catch_exception_unhandled:
12318 return data->exception_info->unhandled_exception_name_addr ();
12319 break;
12320
12321 case ada_catch_handlers:
12322 return 0; /* The runtimes does not provide access to the exception
12323 name. */
12324 break;
12325
12326 case ada_catch_assert:
12327 return 0; /* Exception name is not relevant in this case. */
12328 break;
12329
12330 default:
12331 internal_error (__FILE__, __LINE__, _("unexpected catchpoint type"));
12332 break;
12333 }
12334
12335 return 0; /* Should never be reached. */
12336 }
12337
12338 /* Assuming the inferior is stopped at an exception catchpoint,
12339 return the message which was associated to the exception, if
12340 available. Return NULL if the message could not be retrieved.
12341
12342 Note: The exception message can be associated to an exception
12343 either through the use of the Raise_Exception function, or
12344 more simply (Ada 2005 and later), via:
12345
12346 raise Exception_Name with "exception message";
12347
12348 */
12349
12350 static gdb::unique_xmalloc_ptr<char>
12351 ada_exception_message_1 (void)
12352 {
12353 struct value *e_msg_val;
12354 int e_msg_len;
12355
12356 /* For runtimes that support this feature, the exception message
12357 is passed as an unbounded string argument called "message". */
12358 e_msg_val = parse_and_eval ("message");
12359 if (e_msg_val == NULL)
12360 return NULL; /* Exception message not supported. */
12361
12362 e_msg_val = ada_coerce_to_simple_array (e_msg_val);
12363 gdb_assert (e_msg_val != NULL);
12364 e_msg_len = TYPE_LENGTH (value_type (e_msg_val));
12365
12366 /* If the message string is empty, then treat it as if there was
12367 no exception message. */
12368 if (e_msg_len <= 0)
12369 return NULL;
12370
12371 gdb::unique_xmalloc_ptr<char> e_msg ((char *) xmalloc (e_msg_len + 1));
12372 read_memory_string (value_address (e_msg_val), e_msg.get (), e_msg_len + 1);
12373 e_msg.get ()[e_msg_len] = '\0';
12374
12375 return e_msg;
12376 }
12377
12378 /* Same as ada_exception_message_1, except that all exceptions are
12379 contained here (returning NULL instead). */
12380
12381 static gdb::unique_xmalloc_ptr<char>
12382 ada_exception_message (void)
12383 {
12384 gdb::unique_xmalloc_ptr<char> e_msg;
12385
12386 try
12387 {
12388 e_msg = ada_exception_message_1 ();
12389 }
12390 catch (const gdb_exception_error &e)
12391 {
12392 e_msg.reset (nullptr);
12393 }
12394
12395 return e_msg;
12396 }
12397
12398 /* Same as ada_exception_name_addr_1, except that it intercepts and contains
12399 any error that ada_exception_name_addr_1 might cause to be thrown.
12400 When an error is intercepted, a warning with the error message is printed,
12401 and zero is returned. */
12402
12403 static CORE_ADDR
12404 ada_exception_name_addr (enum ada_exception_catchpoint_kind ex,
12405 struct breakpoint *b)
12406 {
12407 CORE_ADDR result = 0;
12408
12409 try
12410 {
12411 result = ada_exception_name_addr_1 (ex, b);
12412 }
12413
12414 catch (const gdb_exception_error &e)
12415 {
12416 warning (_("failed to get exception name: %s"), e.what ());
12417 return 0;
12418 }
12419
12420 return result;
12421 }
12422
12423 static std::string ada_exception_catchpoint_cond_string
12424 (const char *excep_string,
12425 enum ada_exception_catchpoint_kind ex);
12426
12427 /* Ada catchpoints.
12428
12429 In the case of catchpoints on Ada exceptions, the catchpoint will
12430 stop the target on every exception the program throws. When a user
12431 specifies the name of a specific exception, we translate this
12432 request into a condition expression (in text form), and then parse
12433 it into an expression stored in each of the catchpoint's locations.
12434 We then use this condition to check whether the exception that was
12435 raised is the one the user is interested in. If not, then the
12436 target is resumed again. We store the name of the requested
12437 exception, in order to be able to re-set the condition expression
12438 when symbols change. */
12439
12440 /* An instance of this type is used to represent an Ada catchpoint
12441 breakpoint location. */
12442
12443 class ada_catchpoint_location : public bp_location
12444 {
12445 public:
12446 ada_catchpoint_location (breakpoint *owner)
12447 : bp_location (owner)
12448 {}
12449
12450 /* The condition that checks whether the exception that was raised
12451 is the specific exception the user specified on catchpoint
12452 creation. */
12453 expression_up excep_cond_expr;
12454 };
12455
12456 /* An instance of this type is used to represent an Ada catchpoint. */
12457
12458 struct ada_catchpoint : public breakpoint
12459 {
12460 /* The name of the specific exception the user specified. */
12461 std::string excep_string;
12462 };
12463
12464 /* Parse the exception condition string in the context of each of the
12465 catchpoint's locations, and store them for later evaluation. */
12466
12467 static void
12468 create_excep_cond_exprs (struct ada_catchpoint *c,
12469 enum ada_exception_catchpoint_kind ex)
12470 {
12471 /* Nothing to do if there's no specific exception to catch. */
12472 if (c->excep_string.empty ())
12473 return;
12474
12475 /* Same if there are no locations... */
12476 if (c->loc == NULL)
12477 return;
12478
12479 /* We have to compute the expression once for each program space,
12480 because the expression may hold the addresses of multiple symbols
12481 in some cases. */
12482 std::multimap<program_space *, struct bp_location *> loc_map;
12483 for (struct bp_location *bl = c->loc; bl != NULL; bl = bl->next)
12484 loc_map.emplace (bl->pspace, bl);
12485
12486 scoped_restore_current_program_space save_pspace;
12487
12488 std::string cond_string;
12489 program_space *last_ps = nullptr;
12490 for (auto iter : loc_map)
12491 {
12492 struct ada_catchpoint_location *ada_loc
12493 = (struct ada_catchpoint_location *) iter.second;
12494
12495 if (ada_loc->pspace != last_ps)
12496 {
12497 last_ps = ada_loc->pspace;
12498 set_current_program_space (last_ps);
12499
12500 /* Compute the condition expression in text form, from the
12501 specific expection we want to catch. */
12502 cond_string
12503 = ada_exception_catchpoint_cond_string (c->excep_string.c_str (),
12504 ex);
12505 }
12506
12507 expression_up exp;
12508
12509 if (!ada_loc->shlib_disabled)
12510 {
12511 const char *s;
12512
12513 s = cond_string.c_str ();
12514 try
12515 {
12516 exp = parse_exp_1 (&s, ada_loc->address,
12517 block_for_pc (ada_loc->address),
12518 0);
12519 }
12520 catch (const gdb_exception_error &e)
12521 {
12522 warning (_("failed to reevaluate internal exception condition "
12523 "for catchpoint %d: %s"),
12524 c->number, e.what ());
12525 }
12526 }
12527
12528 ada_loc->excep_cond_expr = std::move (exp);
12529 }
12530 }
12531
12532 /* Implement the ALLOCATE_LOCATION method in the breakpoint_ops
12533 structure for all exception catchpoint kinds. */
12534
12535 static struct bp_location *
12536 allocate_location_exception (enum ada_exception_catchpoint_kind ex,
12537 struct breakpoint *self)
12538 {
12539 return new ada_catchpoint_location (self);
12540 }
12541
12542 /* Implement the RE_SET method in the breakpoint_ops structure for all
12543 exception catchpoint kinds. */
12544
12545 static void
12546 re_set_exception (enum ada_exception_catchpoint_kind ex, struct breakpoint *b)
12547 {
12548 struct ada_catchpoint *c = (struct ada_catchpoint *) b;
12549
12550 /* Call the base class's method. This updates the catchpoint's
12551 locations. */
12552 bkpt_breakpoint_ops.re_set (b);
12553
12554 /* Reparse the exception conditional expressions. One for each
12555 location. */
12556 create_excep_cond_exprs (c, ex);
12557 }
12558
12559 /* Returns true if we should stop for this breakpoint hit. If the
12560 user specified a specific exception, we only want to cause a stop
12561 if the program thrown that exception. */
12562
12563 static int
12564 should_stop_exception (const struct bp_location *bl)
12565 {
12566 struct ada_catchpoint *c = (struct ada_catchpoint *) bl->owner;
12567 const struct ada_catchpoint_location *ada_loc
12568 = (const struct ada_catchpoint_location *) bl;
12569 int stop;
12570
12571 /* With no specific exception, should always stop. */
12572 if (c->excep_string.empty ())
12573 return 1;
12574
12575 if (ada_loc->excep_cond_expr == NULL)
12576 {
12577 /* We will have a NULL expression if back when we were creating
12578 the expressions, this location's had failed to parse. */
12579 return 1;
12580 }
12581
12582 stop = 1;
12583 try
12584 {
12585 struct value *mark;
12586
12587 mark = value_mark ();
12588 stop = value_true (evaluate_expression (ada_loc->excep_cond_expr.get ()));
12589 value_free_to_mark (mark);
12590 }
12591 catch (const gdb_exception &ex)
12592 {
12593 exception_fprintf (gdb_stderr, ex,
12594 _("Error in testing exception condition:\n"));
12595 }
12596
12597 return stop;
12598 }
12599
12600 /* Implement the CHECK_STATUS method in the breakpoint_ops structure
12601 for all exception catchpoint kinds. */
12602
12603 static void
12604 check_status_exception (enum ada_exception_catchpoint_kind ex, bpstat bs)
12605 {
12606 bs->stop = should_stop_exception (bs->bp_location_at);
12607 }
12608
12609 /* Implement the PRINT_IT method in the breakpoint_ops structure
12610 for all exception catchpoint kinds. */
12611
12612 static enum print_stop_action
12613 print_it_exception (enum ada_exception_catchpoint_kind ex, bpstat bs)
12614 {
12615 struct ui_out *uiout = current_uiout;
12616 struct breakpoint *b = bs->breakpoint_at;
12617
12618 annotate_catchpoint (b->number);
12619
12620 if (uiout->is_mi_like_p ())
12621 {
12622 uiout->field_string ("reason",
12623 async_reason_lookup (EXEC_ASYNC_BREAKPOINT_HIT));
12624 uiout->field_string ("disp", bpdisp_text (b->disposition));
12625 }
12626
12627 uiout->text (b->disposition == disp_del
12628 ? "\nTemporary catchpoint " : "\nCatchpoint ");
12629 uiout->field_int ("bkptno", b->number);
12630 uiout->text (", ");
12631
12632 /* ada_exception_name_addr relies on the selected frame being the
12633 current frame. Need to do this here because this function may be
12634 called more than once when printing a stop, and below, we'll
12635 select the first frame past the Ada run-time (see
12636 ada_find_printable_frame). */
12637 select_frame (get_current_frame ());
12638
12639 switch (ex)
12640 {
12641 case ada_catch_exception:
12642 case ada_catch_exception_unhandled:
12643 case ada_catch_handlers:
12644 {
12645 const CORE_ADDR addr = ada_exception_name_addr (ex, b);
12646 char exception_name[256];
12647
12648 if (addr != 0)
12649 {
12650 read_memory (addr, (gdb_byte *) exception_name,
12651 sizeof (exception_name) - 1);
12652 exception_name [sizeof (exception_name) - 1] = '\0';
12653 }
12654 else
12655 {
12656 /* For some reason, we were unable to read the exception
12657 name. This could happen if the Runtime was compiled
12658 without debugging info, for instance. In that case,
12659 just replace the exception name by the generic string
12660 "exception" - it will read as "an exception" in the
12661 notification we are about to print. */
12662 memcpy (exception_name, "exception", sizeof ("exception"));
12663 }
12664 /* In the case of unhandled exception breakpoints, we print
12665 the exception name as "unhandled EXCEPTION_NAME", to make
12666 it clearer to the user which kind of catchpoint just got
12667 hit. We used ui_out_text to make sure that this extra
12668 info does not pollute the exception name in the MI case. */
12669 if (ex == ada_catch_exception_unhandled)
12670 uiout->text ("unhandled ");
12671 uiout->field_string ("exception-name", exception_name);
12672 }
12673 break;
12674 case ada_catch_assert:
12675 /* In this case, the name of the exception is not really
12676 important. Just print "failed assertion" to make it clearer
12677 that his program just hit an assertion-failure catchpoint.
12678 We used ui_out_text because this info does not belong in
12679 the MI output. */
12680 uiout->text ("failed assertion");
12681 break;
12682 }
12683
12684 gdb::unique_xmalloc_ptr<char> exception_message = ada_exception_message ();
12685 if (exception_message != NULL)
12686 {
12687 uiout->text (" (");
12688 uiout->field_string ("exception-message", exception_message.get ());
12689 uiout->text (")");
12690 }
12691
12692 uiout->text (" at ");
12693 ada_find_printable_frame (get_current_frame ());
12694
12695 return PRINT_SRC_AND_LOC;
12696 }
12697
12698 /* Implement the PRINT_ONE method in the breakpoint_ops structure
12699 for all exception catchpoint kinds. */
12700
12701 static void
12702 print_one_exception (enum ada_exception_catchpoint_kind ex,
12703 struct breakpoint *b, struct bp_location **last_loc)
12704 {
12705 struct ui_out *uiout = current_uiout;
12706 struct ada_catchpoint *c = (struct ada_catchpoint *) b;
12707 struct value_print_options opts;
12708
12709 get_user_print_options (&opts);
12710 if (opts.addressprint)
12711 {
12712 annotate_field (4);
12713 uiout->field_core_addr ("addr", b->loc->gdbarch, b->loc->address);
12714 }
12715
12716 annotate_field (5);
12717 *last_loc = b->loc;
12718 switch (ex)
12719 {
12720 case ada_catch_exception:
12721 if (!c->excep_string.empty ())
12722 {
12723 std::string msg = string_printf (_("`%s' Ada exception"),
12724 c->excep_string.c_str ());
12725
12726 uiout->field_string ("what", msg);
12727 }
12728 else
12729 uiout->field_string ("what", "all Ada exceptions");
12730
12731 break;
12732
12733 case ada_catch_exception_unhandled:
12734 uiout->field_string ("what", "unhandled Ada exceptions");
12735 break;
12736
12737 case ada_catch_handlers:
12738 if (!c->excep_string.empty ())
12739 {
12740 uiout->field_fmt ("what",
12741 _("`%s' Ada exception handlers"),
12742 c->excep_string.c_str ());
12743 }
12744 else
12745 uiout->field_string ("what", "all Ada exceptions handlers");
12746 break;
12747
12748 case ada_catch_assert:
12749 uiout->field_string ("what", "failed Ada assertions");
12750 break;
12751
12752 default:
12753 internal_error (__FILE__, __LINE__, _("unexpected catchpoint type"));
12754 break;
12755 }
12756 }
12757
12758 /* Implement the PRINT_MENTION method in the breakpoint_ops structure
12759 for all exception catchpoint kinds. */
12760
12761 static void
12762 print_mention_exception (enum ada_exception_catchpoint_kind ex,
12763 struct breakpoint *b)
12764 {
12765 struct ada_catchpoint *c = (struct ada_catchpoint *) b;
12766 struct ui_out *uiout = current_uiout;
12767
12768 uiout->text (b->disposition == disp_del ? _("Temporary catchpoint ")
12769 : _("Catchpoint "));
12770 uiout->field_int ("bkptno", b->number);
12771 uiout->text (": ");
12772
12773 switch (ex)
12774 {
12775 case ada_catch_exception:
12776 if (!c->excep_string.empty ())
12777 {
12778 std::string info = string_printf (_("`%s' Ada exception"),
12779 c->excep_string.c_str ());
12780 uiout->text (info.c_str ());
12781 }
12782 else
12783 uiout->text (_("all Ada exceptions"));
12784 break;
12785
12786 case ada_catch_exception_unhandled:
12787 uiout->text (_("unhandled Ada exceptions"));
12788 break;
12789
12790 case ada_catch_handlers:
12791 if (!c->excep_string.empty ())
12792 {
12793 std::string info
12794 = string_printf (_("`%s' Ada exception handlers"),
12795 c->excep_string.c_str ());
12796 uiout->text (info.c_str ());
12797 }
12798 else
12799 uiout->text (_("all Ada exceptions handlers"));
12800 break;
12801
12802 case ada_catch_assert:
12803 uiout->text (_("failed Ada assertions"));
12804 break;
12805
12806 default:
12807 internal_error (__FILE__, __LINE__, _("unexpected catchpoint type"));
12808 break;
12809 }
12810 }
12811
12812 /* Implement the PRINT_RECREATE method in the breakpoint_ops structure
12813 for all exception catchpoint kinds. */
12814
12815 static void
12816 print_recreate_exception (enum ada_exception_catchpoint_kind ex,
12817 struct breakpoint *b, struct ui_file *fp)
12818 {
12819 struct ada_catchpoint *c = (struct ada_catchpoint *) b;
12820
12821 switch (ex)
12822 {
12823 case ada_catch_exception:
12824 fprintf_filtered (fp, "catch exception");
12825 if (!c->excep_string.empty ())
12826 fprintf_filtered (fp, " %s", c->excep_string.c_str ());
12827 break;
12828
12829 case ada_catch_exception_unhandled:
12830 fprintf_filtered (fp, "catch exception unhandled");
12831 break;
12832
12833 case ada_catch_handlers:
12834 fprintf_filtered (fp, "catch handlers");
12835 break;
12836
12837 case ada_catch_assert:
12838 fprintf_filtered (fp, "catch assert");
12839 break;
12840
12841 default:
12842 internal_error (__FILE__, __LINE__, _("unexpected catchpoint type"));
12843 }
12844 print_recreate_thread (b, fp);
12845 }
12846
12847 /* Virtual table for "catch exception" breakpoints. */
12848
12849 static struct bp_location *
12850 allocate_location_catch_exception (struct breakpoint *self)
12851 {
12852 return allocate_location_exception (ada_catch_exception, self);
12853 }
12854
12855 static void
12856 re_set_catch_exception (struct breakpoint *b)
12857 {
12858 re_set_exception (ada_catch_exception, b);
12859 }
12860
12861 static void
12862 check_status_catch_exception (bpstat bs)
12863 {
12864 check_status_exception (ada_catch_exception, bs);
12865 }
12866
12867 static enum print_stop_action
12868 print_it_catch_exception (bpstat bs)
12869 {
12870 return print_it_exception (ada_catch_exception, bs);
12871 }
12872
12873 static void
12874 print_one_catch_exception (struct breakpoint *b, struct bp_location **last_loc)
12875 {
12876 print_one_exception (ada_catch_exception, b, last_loc);
12877 }
12878
12879 static void
12880 print_mention_catch_exception (struct breakpoint *b)
12881 {
12882 print_mention_exception (ada_catch_exception, b);
12883 }
12884
12885 static void
12886 print_recreate_catch_exception (struct breakpoint *b, struct ui_file *fp)
12887 {
12888 print_recreate_exception (ada_catch_exception, b, fp);
12889 }
12890
12891 static struct breakpoint_ops catch_exception_breakpoint_ops;
12892
12893 /* Virtual table for "catch exception unhandled" breakpoints. */
12894
12895 static struct bp_location *
12896 allocate_location_catch_exception_unhandled (struct breakpoint *self)
12897 {
12898 return allocate_location_exception (ada_catch_exception_unhandled, self);
12899 }
12900
12901 static void
12902 re_set_catch_exception_unhandled (struct breakpoint *b)
12903 {
12904 re_set_exception (ada_catch_exception_unhandled, b);
12905 }
12906
12907 static void
12908 check_status_catch_exception_unhandled (bpstat bs)
12909 {
12910 check_status_exception (ada_catch_exception_unhandled, bs);
12911 }
12912
12913 static enum print_stop_action
12914 print_it_catch_exception_unhandled (bpstat bs)
12915 {
12916 return print_it_exception (ada_catch_exception_unhandled, bs);
12917 }
12918
12919 static void
12920 print_one_catch_exception_unhandled (struct breakpoint *b,
12921 struct bp_location **last_loc)
12922 {
12923 print_one_exception (ada_catch_exception_unhandled, b, last_loc);
12924 }
12925
12926 static void
12927 print_mention_catch_exception_unhandled (struct breakpoint *b)
12928 {
12929 print_mention_exception (ada_catch_exception_unhandled, b);
12930 }
12931
12932 static void
12933 print_recreate_catch_exception_unhandled (struct breakpoint *b,
12934 struct ui_file *fp)
12935 {
12936 print_recreate_exception (ada_catch_exception_unhandled, b, fp);
12937 }
12938
12939 static struct breakpoint_ops catch_exception_unhandled_breakpoint_ops;
12940
12941 /* Virtual table for "catch assert" breakpoints. */
12942
12943 static struct bp_location *
12944 allocate_location_catch_assert (struct breakpoint *self)
12945 {
12946 return allocate_location_exception (ada_catch_assert, self);
12947 }
12948
12949 static void
12950 re_set_catch_assert (struct breakpoint *b)
12951 {
12952 re_set_exception (ada_catch_assert, b);
12953 }
12954
12955 static void
12956 check_status_catch_assert (bpstat bs)
12957 {
12958 check_status_exception (ada_catch_assert, bs);
12959 }
12960
12961 static enum print_stop_action
12962 print_it_catch_assert (bpstat bs)
12963 {
12964 return print_it_exception (ada_catch_assert, bs);
12965 }
12966
12967 static void
12968 print_one_catch_assert (struct breakpoint *b, struct bp_location **last_loc)
12969 {
12970 print_one_exception (ada_catch_assert, b, last_loc);
12971 }
12972
12973 static void
12974 print_mention_catch_assert (struct breakpoint *b)
12975 {
12976 print_mention_exception (ada_catch_assert, b);
12977 }
12978
12979 static void
12980 print_recreate_catch_assert (struct breakpoint *b, struct ui_file *fp)
12981 {
12982 print_recreate_exception (ada_catch_assert, b, fp);
12983 }
12984
12985 static struct breakpoint_ops catch_assert_breakpoint_ops;
12986
12987 /* Virtual table for "catch handlers" breakpoints. */
12988
12989 static struct bp_location *
12990 allocate_location_catch_handlers (struct breakpoint *self)
12991 {
12992 return allocate_location_exception (ada_catch_handlers, self);
12993 }
12994
12995 static void
12996 re_set_catch_handlers (struct breakpoint *b)
12997 {
12998 re_set_exception (ada_catch_handlers, b);
12999 }
13000
13001 static void
13002 check_status_catch_handlers (bpstat bs)
13003 {
13004 check_status_exception (ada_catch_handlers, bs);
13005 }
13006
13007 static enum print_stop_action
13008 print_it_catch_handlers (bpstat bs)
13009 {
13010 return print_it_exception (ada_catch_handlers, bs);
13011 }
13012
13013 static void
13014 print_one_catch_handlers (struct breakpoint *b,
13015 struct bp_location **last_loc)
13016 {
13017 print_one_exception (ada_catch_handlers, b, last_loc);
13018 }
13019
13020 static void
13021 print_mention_catch_handlers (struct breakpoint *b)
13022 {
13023 print_mention_exception (ada_catch_handlers, b);
13024 }
13025
13026 static void
13027 print_recreate_catch_handlers (struct breakpoint *b,
13028 struct ui_file *fp)
13029 {
13030 print_recreate_exception (ada_catch_handlers, b, fp);
13031 }
13032
13033 static struct breakpoint_ops catch_handlers_breakpoint_ops;
13034
13035 /* Split the arguments specified in a "catch exception" command.
13036 Set EX to the appropriate catchpoint type.
13037 Set EXCEP_STRING to the name of the specific exception if
13038 specified by the user.
13039 IS_CATCH_HANDLERS_CMD: True if the arguments are for a
13040 "catch handlers" command. False otherwise.
13041 If a condition is found at the end of the arguments, the condition
13042 expression is stored in COND_STRING (memory must be deallocated
13043 after use). Otherwise COND_STRING is set to NULL. */
13044
13045 static void
13046 catch_ada_exception_command_split (const char *args,
13047 bool is_catch_handlers_cmd,
13048 enum ada_exception_catchpoint_kind *ex,
13049 std::string *excep_string,
13050 std::string *cond_string)
13051 {
13052 std::string exception_name;
13053
13054 exception_name = extract_arg (&args);
13055 if (exception_name == "if")
13056 {
13057 /* This is not an exception name; this is the start of a condition
13058 expression for a catchpoint on all exceptions. So, "un-get"
13059 this token, and set exception_name to NULL. */
13060 exception_name.clear ();
13061 args -= 2;
13062 }
13063
13064 /* Check to see if we have a condition. */
13065
13066 args = skip_spaces (args);
13067 if (startswith (args, "if")
13068 && (isspace (args[2]) || args[2] == '\0'))
13069 {
13070 args += 2;
13071 args = skip_spaces (args);
13072
13073 if (args[0] == '\0')
13074 error (_("Condition missing after `if' keyword"));
13075 *cond_string = args;
13076
13077 args += strlen (args);
13078 }
13079
13080 /* Check that we do not have any more arguments. Anything else
13081 is unexpected. */
13082
13083 if (args[0] != '\0')
13084 error (_("Junk at end of expression"));
13085
13086 if (is_catch_handlers_cmd)
13087 {
13088 /* Catch handling of exceptions. */
13089 *ex = ada_catch_handlers;
13090 *excep_string = exception_name;
13091 }
13092 else if (exception_name.empty ())
13093 {
13094 /* Catch all exceptions. */
13095 *ex = ada_catch_exception;
13096 excep_string->clear ();
13097 }
13098 else if (exception_name == "unhandled")
13099 {
13100 /* Catch unhandled exceptions. */
13101 *ex = ada_catch_exception_unhandled;
13102 excep_string->clear ();
13103 }
13104 else
13105 {
13106 /* Catch a specific exception. */
13107 *ex = ada_catch_exception;
13108 *excep_string = exception_name;
13109 }
13110 }
13111
13112 /* Return the name of the symbol on which we should break in order to
13113 implement a catchpoint of the EX kind. */
13114
13115 static const char *
13116 ada_exception_sym_name (enum ada_exception_catchpoint_kind ex)
13117 {
13118 struct ada_inferior_data *data = get_ada_inferior_data (current_inferior ());
13119
13120 gdb_assert (data->exception_info != NULL);
13121
13122 switch (ex)
13123 {
13124 case ada_catch_exception:
13125 return (data->exception_info->catch_exception_sym);
13126 break;
13127 case ada_catch_exception_unhandled:
13128 return (data->exception_info->catch_exception_unhandled_sym);
13129 break;
13130 case ada_catch_assert:
13131 return (data->exception_info->catch_assert_sym);
13132 break;
13133 case ada_catch_handlers:
13134 return (data->exception_info->catch_handlers_sym);
13135 break;
13136 default:
13137 internal_error (__FILE__, __LINE__,
13138 _("unexpected catchpoint kind (%d)"), ex);
13139 }
13140 }
13141
13142 /* Return the breakpoint ops "virtual table" used for catchpoints
13143 of the EX kind. */
13144
13145 static const struct breakpoint_ops *
13146 ada_exception_breakpoint_ops (enum ada_exception_catchpoint_kind ex)
13147 {
13148 switch (ex)
13149 {
13150 case ada_catch_exception:
13151 return (&catch_exception_breakpoint_ops);
13152 break;
13153 case ada_catch_exception_unhandled:
13154 return (&catch_exception_unhandled_breakpoint_ops);
13155 break;
13156 case ada_catch_assert:
13157 return (&catch_assert_breakpoint_ops);
13158 break;
13159 case ada_catch_handlers:
13160 return (&catch_handlers_breakpoint_ops);
13161 break;
13162 default:
13163 internal_error (__FILE__, __LINE__,
13164 _("unexpected catchpoint kind (%d)"), ex);
13165 }
13166 }
13167
13168 /* Return the condition that will be used to match the current exception
13169 being raised with the exception that the user wants to catch. This
13170 assumes that this condition is used when the inferior just triggered
13171 an exception catchpoint.
13172 EX: the type of catchpoints used for catching Ada exceptions. */
13173
13174 static std::string
13175 ada_exception_catchpoint_cond_string (const char *excep_string,
13176 enum ada_exception_catchpoint_kind ex)
13177 {
13178 int i;
13179 std::string result;
13180 const char *name;
13181
13182 if (ex == ada_catch_handlers)
13183 {
13184 /* For exception handlers catchpoints, the condition string does
13185 not use the same parameter as for the other exceptions. */
13186 name = ("long_integer (GNAT_GCC_exception_Access"
13187 "(gcc_exception).all.occurrence.id)");
13188 }
13189 else
13190 name = "long_integer (e)";
13191
13192 /* The standard exceptions are a special case. They are defined in
13193 runtime units that have been compiled without debugging info; if
13194 EXCEP_STRING is the not-fully-qualified name of a standard
13195 exception (e.g. "constraint_error") then, during the evaluation
13196 of the condition expression, the symbol lookup on this name would
13197 *not* return this standard exception. The catchpoint condition
13198 may then be set only on user-defined exceptions which have the
13199 same not-fully-qualified name (e.g. my_package.constraint_error).
13200
13201 To avoid this unexcepted behavior, these standard exceptions are
13202 systematically prefixed by "standard". This means that "catch
13203 exception constraint_error" is rewritten into "catch exception
13204 standard.constraint_error".
13205
13206 If an exception named contraint_error is defined in another package of
13207 the inferior program, then the only way to specify this exception as a
13208 breakpoint condition is to use its fully-qualified named:
13209 e.g. my_package.constraint_error.
13210
13211 Furthermore, in some situations a standard exception's symbol may
13212 be present in more than one objfile, because the compiler may
13213 choose to emit copy relocations for them. So, we have to compare
13214 against all the possible addresses. */
13215
13216 /* Storage for a rewritten symbol name. */
13217 std::string std_name;
13218 for (i = 0; i < sizeof (standard_exc) / sizeof (char *); i++)
13219 {
13220 if (strcmp (standard_exc [i], excep_string) == 0)
13221 {
13222 std_name = std::string ("standard.") + excep_string;
13223 excep_string = std_name.c_str ();
13224 break;
13225 }
13226 }
13227
13228 excep_string = ada_encode (excep_string);
13229 std::vector<struct bound_minimal_symbol> symbols
13230 = ada_lookup_simple_minsyms (excep_string);
13231 for (const struct bound_minimal_symbol &msym : symbols)
13232 {
13233 if (!result.empty ())
13234 result += " or ";
13235 string_appendf (result, "%s = %s", name,
13236 pulongest (BMSYMBOL_VALUE_ADDRESS (msym)));
13237 }
13238
13239 return result;
13240 }
13241
13242 /* Return the symtab_and_line that should be used to insert an exception
13243 catchpoint of the TYPE kind.
13244
13245 ADDR_STRING returns the name of the function where the real
13246 breakpoint that implements the catchpoints is set, depending on the
13247 type of catchpoint we need to create. */
13248
13249 static struct symtab_and_line
13250 ada_exception_sal (enum ada_exception_catchpoint_kind ex,
13251 std::string *addr_string, const struct breakpoint_ops **ops)
13252 {
13253 const char *sym_name;
13254 struct symbol *sym;
13255
13256 /* First, find out which exception support info to use. */
13257 ada_exception_support_info_sniffer ();
13258
13259 /* Then lookup the function on which we will break in order to catch
13260 the Ada exceptions requested by the user. */
13261 sym_name = ada_exception_sym_name (ex);
13262 sym = standard_lookup (sym_name, NULL, VAR_DOMAIN);
13263
13264 if (sym == NULL)
13265 error (_("Catchpoint symbol not found: %s"), sym_name);
13266
13267 if (SYMBOL_CLASS (sym) != LOC_BLOCK)
13268 error (_("Unable to insert catchpoint. %s is not a function."), sym_name);
13269
13270 /* Set ADDR_STRING. */
13271 *addr_string = sym_name;
13272
13273 /* Set OPS. */
13274 *ops = ada_exception_breakpoint_ops (ex);
13275
13276 return find_function_start_sal (sym, 1);
13277 }
13278
13279 /* Create an Ada exception catchpoint.
13280
13281 EX_KIND is the kind of exception catchpoint to be created.
13282
13283 If EXCEPT_STRING is empty, this catchpoint is expected to trigger
13284 for all exceptions. Otherwise, EXCEPT_STRING indicates the name
13285 of the exception to which this catchpoint applies.
13286
13287 COND_STRING, if not empty, is the catchpoint condition.
13288
13289 TEMPFLAG, if nonzero, means that the underlying breakpoint
13290 should be temporary.
13291
13292 FROM_TTY is the usual argument passed to all commands implementations. */
13293
13294 void
13295 create_ada_exception_catchpoint (struct gdbarch *gdbarch,
13296 enum ada_exception_catchpoint_kind ex_kind,
13297 const std::string &excep_string,
13298 const std::string &cond_string,
13299 int tempflag,
13300 int disabled,
13301 int from_tty)
13302 {
13303 std::string addr_string;
13304 const struct breakpoint_ops *ops = NULL;
13305 struct symtab_and_line sal = ada_exception_sal (ex_kind, &addr_string, &ops);
13306
13307 std::unique_ptr<ada_catchpoint> c (new ada_catchpoint ());
13308 init_ada_exception_breakpoint (c.get (), gdbarch, sal, addr_string.c_str (),
13309 ops, tempflag, disabled, from_tty);
13310 c->excep_string = excep_string;
13311 create_excep_cond_exprs (c.get (), ex_kind);
13312 if (!cond_string.empty ())
13313 set_breakpoint_condition (c.get (), cond_string.c_str (), from_tty);
13314 install_breakpoint (0, std::move (c), 1);
13315 }
13316
13317 /* Implement the "catch exception" command. */
13318
13319 static void
13320 catch_ada_exception_command (const char *arg_entry, int from_tty,
13321 struct cmd_list_element *command)
13322 {
13323 const char *arg = arg_entry;
13324 struct gdbarch *gdbarch = get_current_arch ();
13325 int tempflag;
13326 enum ada_exception_catchpoint_kind ex_kind;
13327 std::string excep_string;
13328 std::string cond_string;
13329
13330 tempflag = get_cmd_context (command) == CATCH_TEMPORARY;
13331
13332 if (!arg)
13333 arg = "";
13334 catch_ada_exception_command_split (arg, false, &ex_kind, &excep_string,
13335 &cond_string);
13336 create_ada_exception_catchpoint (gdbarch, ex_kind,
13337 excep_string, cond_string,
13338 tempflag, 1 /* enabled */,
13339 from_tty);
13340 }
13341
13342 /* Implement the "catch handlers" command. */
13343
13344 static void
13345 catch_ada_handlers_command (const char *arg_entry, int from_tty,
13346 struct cmd_list_element *command)
13347 {
13348 const char *arg = arg_entry;
13349 struct gdbarch *gdbarch = get_current_arch ();
13350 int tempflag;
13351 enum ada_exception_catchpoint_kind ex_kind;
13352 std::string excep_string;
13353 std::string cond_string;
13354
13355 tempflag = get_cmd_context (command) == CATCH_TEMPORARY;
13356
13357 if (!arg)
13358 arg = "";
13359 catch_ada_exception_command_split (arg, true, &ex_kind, &excep_string,
13360 &cond_string);
13361 create_ada_exception_catchpoint (gdbarch, ex_kind,
13362 excep_string, cond_string,
13363 tempflag, 1 /* enabled */,
13364 from_tty);
13365 }
13366
13367 /* Split the arguments specified in a "catch assert" command.
13368
13369 ARGS contains the command's arguments (or the empty string if
13370 no arguments were passed).
13371
13372 If ARGS contains a condition, set COND_STRING to that condition
13373 (the memory needs to be deallocated after use). */
13374
13375 static void
13376 catch_ada_assert_command_split (const char *args, std::string &cond_string)
13377 {
13378 args = skip_spaces (args);
13379
13380 /* Check whether a condition was provided. */
13381 if (startswith (args, "if")
13382 && (isspace (args[2]) || args[2] == '\0'))
13383 {
13384 args += 2;
13385 args = skip_spaces (args);
13386 if (args[0] == '\0')
13387 error (_("condition missing after `if' keyword"));
13388 cond_string.assign (args);
13389 }
13390
13391 /* Otherwise, there should be no other argument at the end of
13392 the command. */
13393 else if (args[0] != '\0')
13394 error (_("Junk at end of arguments."));
13395 }
13396
13397 /* Implement the "catch assert" command. */
13398
13399 static void
13400 catch_assert_command (const char *arg_entry, int from_tty,
13401 struct cmd_list_element *command)
13402 {
13403 const char *arg = arg_entry;
13404 struct gdbarch *gdbarch = get_current_arch ();
13405 int tempflag;
13406 std::string cond_string;
13407
13408 tempflag = get_cmd_context (command) == CATCH_TEMPORARY;
13409
13410 if (!arg)
13411 arg = "";
13412 catch_ada_assert_command_split (arg, cond_string);
13413 create_ada_exception_catchpoint (gdbarch, ada_catch_assert,
13414 "", cond_string,
13415 tempflag, 1 /* enabled */,
13416 from_tty);
13417 }
13418
13419 /* Return non-zero if the symbol SYM is an Ada exception object. */
13420
13421 static int
13422 ada_is_exception_sym (struct symbol *sym)
13423 {
13424 const char *type_name = TYPE_NAME (SYMBOL_TYPE (sym));
13425
13426 return (SYMBOL_CLASS (sym) != LOC_TYPEDEF
13427 && SYMBOL_CLASS (sym) != LOC_BLOCK
13428 && SYMBOL_CLASS (sym) != LOC_CONST
13429 && SYMBOL_CLASS (sym) != LOC_UNRESOLVED
13430 && type_name != NULL && strcmp (type_name, "exception") == 0);
13431 }
13432
13433 /* Given a global symbol SYM, return non-zero iff SYM is a non-standard
13434 Ada exception object. This matches all exceptions except the ones
13435 defined by the Ada language. */
13436
13437 static int
13438 ada_is_non_standard_exception_sym (struct symbol *sym)
13439 {
13440 int i;
13441
13442 if (!ada_is_exception_sym (sym))
13443 return 0;
13444
13445 for (i = 0; i < ARRAY_SIZE (standard_exc); i++)
13446 if (strcmp (SYMBOL_LINKAGE_NAME (sym), standard_exc[i]) == 0)
13447 return 0; /* A standard exception. */
13448
13449 /* Numeric_Error is also a standard exception, so exclude it.
13450 See the STANDARD_EXC description for more details as to why
13451 this exception is not listed in that array. */
13452 if (strcmp (SYMBOL_LINKAGE_NAME (sym), "numeric_error") == 0)
13453 return 0;
13454
13455 return 1;
13456 }
13457
13458 /* A helper function for std::sort, comparing two struct ada_exc_info
13459 objects.
13460
13461 The comparison is determined first by exception name, and then
13462 by exception address. */
13463
13464 bool
13465 ada_exc_info::operator< (const ada_exc_info &other) const
13466 {
13467 int result;
13468
13469 result = strcmp (name, other.name);
13470 if (result < 0)
13471 return true;
13472 if (result == 0 && addr < other.addr)
13473 return true;
13474 return false;
13475 }
13476
13477 bool
13478 ada_exc_info::operator== (const ada_exc_info &other) const
13479 {
13480 return addr == other.addr && strcmp (name, other.name) == 0;
13481 }
13482
13483 /* Sort EXCEPTIONS using compare_ada_exception_info as the comparison
13484 routine, but keeping the first SKIP elements untouched.
13485
13486 All duplicates are also removed. */
13487
13488 static void
13489 sort_remove_dups_ada_exceptions_list (std::vector<ada_exc_info> *exceptions,
13490 int skip)
13491 {
13492 std::sort (exceptions->begin () + skip, exceptions->end ());
13493 exceptions->erase (std::unique (exceptions->begin () + skip, exceptions->end ()),
13494 exceptions->end ());
13495 }
13496
13497 /* Add all exceptions defined by the Ada standard whose name match
13498 a regular expression.
13499
13500 If PREG is not NULL, then this regexp_t object is used to
13501 perform the symbol name matching. Otherwise, no name-based
13502 filtering is performed.
13503
13504 EXCEPTIONS is a vector of exceptions to which matching exceptions
13505 gets pushed. */
13506
13507 static void
13508 ada_add_standard_exceptions (compiled_regex *preg,
13509 std::vector<ada_exc_info> *exceptions)
13510 {
13511 int i;
13512
13513 for (i = 0; i < ARRAY_SIZE (standard_exc); i++)
13514 {
13515 if (preg == NULL
13516 || preg->exec (standard_exc[i], 0, NULL, 0) == 0)
13517 {
13518 struct bound_minimal_symbol msymbol
13519 = ada_lookup_simple_minsym (standard_exc[i]);
13520
13521 if (msymbol.minsym != NULL)
13522 {
13523 struct ada_exc_info info
13524 = {standard_exc[i], BMSYMBOL_VALUE_ADDRESS (msymbol)};
13525
13526 exceptions->push_back (info);
13527 }
13528 }
13529 }
13530 }
13531
13532 /* Add all Ada exceptions defined locally and accessible from the given
13533 FRAME.
13534
13535 If PREG is not NULL, then this regexp_t object is used to
13536 perform the symbol name matching. Otherwise, no name-based
13537 filtering is performed.
13538
13539 EXCEPTIONS is a vector of exceptions to which matching exceptions
13540 gets pushed. */
13541
13542 static void
13543 ada_add_exceptions_from_frame (compiled_regex *preg,
13544 struct frame_info *frame,
13545 std::vector<ada_exc_info> *exceptions)
13546 {
13547 const struct block *block = get_frame_block (frame, 0);
13548
13549 while (block != 0)
13550 {
13551 struct block_iterator iter;
13552 struct symbol *sym;
13553
13554 ALL_BLOCK_SYMBOLS (block, iter, sym)
13555 {
13556 switch (SYMBOL_CLASS (sym))
13557 {
13558 case LOC_TYPEDEF:
13559 case LOC_BLOCK:
13560 case LOC_CONST:
13561 break;
13562 default:
13563 if (ada_is_exception_sym (sym))
13564 {
13565 struct ada_exc_info info = {SYMBOL_PRINT_NAME (sym),
13566 SYMBOL_VALUE_ADDRESS (sym)};
13567
13568 exceptions->push_back (info);
13569 }
13570 }
13571 }
13572 if (BLOCK_FUNCTION (block) != NULL)
13573 break;
13574 block = BLOCK_SUPERBLOCK (block);
13575 }
13576 }
13577
13578 /* Return true if NAME matches PREG or if PREG is NULL. */
13579
13580 static bool
13581 name_matches_regex (const char *name, compiled_regex *preg)
13582 {
13583 return (preg == NULL
13584 || preg->exec (ada_decode (name), 0, NULL, 0) == 0);
13585 }
13586
13587 /* Add all exceptions defined globally whose name name match
13588 a regular expression, excluding standard exceptions.
13589
13590 The reason we exclude standard exceptions is that they need
13591 to be handled separately: Standard exceptions are defined inside
13592 a runtime unit which is normally not compiled with debugging info,
13593 and thus usually do not show up in our symbol search. However,
13594 if the unit was in fact built with debugging info, we need to
13595 exclude them because they would duplicate the entry we found
13596 during the special loop that specifically searches for those
13597 standard exceptions.
13598
13599 If PREG is not NULL, then this regexp_t object is used to
13600 perform the symbol name matching. Otherwise, no name-based
13601 filtering is performed.
13602
13603 EXCEPTIONS is a vector of exceptions to which matching exceptions
13604 gets pushed. */
13605
13606 static void
13607 ada_add_global_exceptions (compiled_regex *preg,
13608 std::vector<ada_exc_info> *exceptions)
13609 {
13610 /* In Ada, the symbol "search name" is a linkage name, whereas the
13611 regular expression used to do the matching refers to the natural
13612 name. So match against the decoded name. */
13613 expand_symtabs_matching (NULL,
13614 lookup_name_info::match_any (),
13615 [&] (const char *search_name)
13616 {
13617 const char *decoded = ada_decode (search_name);
13618 return name_matches_regex (decoded, preg);
13619 },
13620 NULL,
13621 VARIABLES_DOMAIN);
13622
13623 for (objfile *objfile : current_program_space->objfiles ())
13624 {
13625 for (compunit_symtab *s : objfile->compunits ())
13626 {
13627 const struct blockvector *bv = COMPUNIT_BLOCKVECTOR (s);
13628 int i;
13629
13630 for (i = GLOBAL_BLOCK; i <= STATIC_BLOCK; i++)
13631 {
13632 const struct block *b = BLOCKVECTOR_BLOCK (bv, i);
13633 struct block_iterator iter;
13634 struct symbol *sym;
13635
13636 ALL_BLOCK_SYMBOLS (b, iter, sym)
13637 if (ada_is_non_standard_exception_sym (sym)
13638 && name_matches_regex (SYMBOL_NATURAL_NAME (sym), preg))
13639 {
13640 struct ada_exc_info info
13641 = {SYMBOL_PRINT_NAME (sym), SYMBOL_VALUE_ADDRESS (sym)};
13642
13643 exceptions->push_back (info);
13644 }
13645 }
13646 }
13647 }
13648 }
13649
13650 /* Implements ada_exceptions_list with the regular expression passed
13651 as a regex_t, rather than a string.
13652
13653 If not NULL, PREG is used to filter out exceptions whose names
13654 do not match. Otherwise, all exceptions are listed. */
13655
13656 static std::vector<ada_exc_info>
13657 ada_exceptions_list_1 (compiled_regex *preg)
13658 {
13659 std::vector<ada_exc_info> result;
13660 int prev_len;
13661
13662 /* First, list the known standard exceptions. These exceptions
13663 need to be handled separately, as they are usually defined in
13664 runtime units that have been compiled without debugging info. */
13665
13666 ada_add_standard_exceptions (preg, &result);
13667
13668 /* Next, find all exceptions whose scope is local and accessible
13669 from the currently selected frame. */
13670
13671 if (has_stack_frames ())
13672 {
13673 prev_len = result.size ();
13674 ada_add_exceptions_from_frame (preg, get_selected_frame (NULL),
13675 &result);
13676 if (result.size () > prev_len)
13677 sort_remove_dups_ada_exceptions_list (&result, prev_len);
13678 }
13679
13680 /* Add all exceptions whose scope is global. */
13681
13682 prev_len = result.size ();
13683 ada_add_global_exceptions (preg, &result);
13684 if (result.size () > prev_len)
13685 sort_remove_dups_ada_exceptions_list (&result, prev_len);
13686
13687 return result;
13688 }
13689
13690 /* Return a vector of ada_exc_info.
13691
13692 If REGEXP is NULL, all exceptions are included in the result.
13693 Otherwise, it should contain a valid regular expression,
13694 and only the exceptions whose names match that regular expression
13695 are included in the result.
13696
13697 The exceptions are sorted in the following order:
13698 - Standard exceptions (defined by the Ada language), in
13699 alphabetical order;
13700 - Exceptions only visible from the current frame, in
13701 alphabetical order;
13702 - Exceptions whose scope is global, in alphabetical order. */
13703
13704 std::vector<ada_exc_info>
13705 ada_exceptions_list (const char *regexp)
13706 {
13707 if (regexp == NULL)
13708 return ada_exceptions_list_1 (NULL);
13709
13710 compiled_regex reg (regexp, REG_NOSUB, _("invalid regular expression"));
13711 return ada_exceptions_list_1 (&reg);
13712 }
13713
13714 /* Implement the "info exceptions" command. */
13715
13716 static void
13717 info_exceptions_command (const char *regexp, int from_tty)
13718 {
13719 struct gdbarch *gdbarch = get_current_arch ();
13720
13721 std::vector<ada_exc_info> exceptions = ada_exceptions_list (regexp);
13722
13723 if (regexp != NULL)
13724 printf_filtered
13725 (_("All Ada exceptions matching regular expression \"%s\":\n"), regexp);
13726 else
13727 printf_filtered (_("All defined Ada exceptions:\n"));
13728
13729 for (const ada_exc_info &info : exceptions)
13730 printf_filtered ("%s: %s\n", info.name, paddress (gdbarch, info.addr));
13731 }
13732
13733 /* Operators */
13734 /* Information about operators given special treatment in functions
13735 below. */
13736 /* Format: OP_DEFN (<operator>, <operator length>, <# args>, <binop>). */
13737
13738 #define ADA_OPERATORS \
13739 OP_DEFN (OP_VAR_VALUE, 4, 0, 0) \
13740 OP_DEFN (BINOP_IN_BOUNDS, 3, 2, 0) \
13741 OP_DEFN (TERNOP_IN_RANGE, 1, 3, 0) \
13742 OP_DEFN (OP_ATR_FIRST, 1, 2, 0) \
13743 OP_DEFN (OP_ATR_LAST, 1, 2, 0) \
13744 OP_DEFN (OP_ATR_LENGTH, 1, 2, 0) \
13745 OP_DEFN (OP_ATR_IMAGE, 1, 2, 0) \
13746 OP_DEFN (OP_ATR_MAX, 1, 3, 0) \
13747 OP_DEFN (OP_ATR_MIN, 1, 3, 0) \
13748 OP_DEFN (OP_ATR_MODULUS, 1, 1, 0) \
13749 OP_DEFN (OP_ATR_POS, 1, 2, 0) \
13750 OP_DEFN (OP_ATR_SIZE, 1, 1, 0) \
13751 OP_DEFN (OP_ATR_TAG, 1, 1, 0) \
13752 OP_DEFN (OP_ATR_VAL, 1, 2, 0) \
13753 OP_DEFN (UNOP_QUAL, 3, 1, 0) \
13754 OP_DEFN (UNOP_IN_RANGE, 3, 1, 0) \
13755 OP_DEFN (OP_OTHERS, 1, 1, 0) \
13756 OP_DEFN (OP_POSITIONAL, 3, 1, 0) \
13757 OP_DEFN (OP_DISCRETE_RANGE, 1, 2, 0)
13758
13759 static void
13760 ada_operator_length (const struct expression *exp, int pc, int *oplenp,
13761 int *argsp)
13762 {
13763 switch (exp->elts[pc - 1].opcode)
13764 {
13765 default:
13766 operator_length_standard (exp, pc, oplenp, argsp);
13767 break;
13768
13769 #define OP_DEFN(op, len, args, binop) \
13770 case op: *oplenp = len; *argsp = args; break;
13771 ADA_OPERATORS;
13772 #undef OP_DEFN
13773
13774 case OP_AGGREGATE:
13775 *oplenp = 3;
13776 *argsp = longest_to_int (exp->elts[pc - 2].longconst);
13777 break;
13778
13779 case OP_CHOICES:
13780 *oplenp = 3;
13781 *argsp = longest_to_int (exp->elts[pc - 2].longconst) + 1;
13782 break;
13783 }
13784 }
13785
13786 /* Implementation of the exp_descriptor method operator_check. */
13787
13788 static int
13789 ada_operator_check (struct expression *exp, int pos,
13790 int (*objfile_func) (struct objfile *objfile, void *data),
13791 void *data)
13792 {
13793 const union exp_element *const elts = exp->elts;
13794 struct type *type = NULL;
13795
13796 switch (elts[pos].opcode)
13797 {
13798 case UNOP_IN_RANGE:
13799 case UNOP_QUAL:
13800 type = elts[pos + 1].type;
13801 break;
13802
13803 default:
13804 return operator_check_standard (exp, pos, objfile_func, data);
13805 }
13806
13807 /* Invoke callbacks for TYPE and OBJFILE if they were set as non-NULL. */
13808
13809 if (type && TYPE_OBJFILE (type)
13810 && (*objfile_func) (TYPE_OBJFILE (type), data))
13811 return 1;
13812
13813 return 0;
13814 }
13815
13816 static const char *
13817 ada_op_name (enum exp_opcode opcode)
13818 {
13819 switch (opcode)
13820 {
13821 default:
13822 return op_name_standard (opcode);
13823
13824 #define OP_DEFN(op, len, args, binop) case op: return #op;
13825 ADA_OPERATORS;
13826 #undef OP_DEFN
13827
13828 case OP_AGGREGATE:
13829 return "OP_AGGREGATE";
13830 case OP_CHOICES:
13831 return "OP_CHOICES";
13832 case OP_NAME:
13833 return "OP_NAME";
13834 }
13835 }
13836
13837 /* As for operator_length, but assumes PC is pointing at the first
13838 element of the operator, and gives meaningful results only for the
13839 Ada-specific operators, returning 0 for *OPLENP and *ARGSP otherwise. */
13840
13841 static void
13842 ada_forward_operator_length (struct expression *exp, int pc,
13843 int *oplenp, int *argsp)
13844 {
13845 switch (exp->elts[pc].opcode)
13846 {
13847 default:
13848 *oplenp = *argsp = 0;
13849 break;
13850
13851 #define OP_DEFN(op, len, args, binop) \
13852 case op: *oplenp = len; *argsp = args; break;
13853 ADA_OPERATORS;
13854 #undef OP_DEFN
13855
13856 case OP_AGGREGATE:
13857 *oplenp = 3;
13858 *argsp = longest_to_int (exp->elts[pc + 1].longconst);
13859 break;
13860
13861 case OP_CHOICES:
13862 *oplenp = 3;
13863 *argsp = longest_to_int (exp->elts[pc + 1].longconst) + 1;
13864 break;
13865
13866 case OP_STRING:
13867 case OP_NAME:
13868 {
13869 int len = longest_to_int (exp->elts[pc + 1].longconst);
13870
13871 *oplenp = 4 + BYTES_TO_EXP_ELEM (len + 1);
13872 *argsp = 0;
13873 break;
13874 }
13875 }
13876 }
13877
13878 static int
13879 ada_dump_subexp_body (struct expression *exp, struct ui_file *stream, int elt)
13880 {
13881 enum exp_opcode op = exp->elts[elt].opcode;
13882 int oplen, nargs;
13883 int pc = elt;
13884 int i;
13885
13886 ada_forward_operator_length (exp, elt, &oplen, &nargs);
13887
13888 switch (op)
13889 {
13890 /* Ada attributes ('Foo). */
13891 case OP_ATR_FIRST:
13892 case OP_ATR_LAST:
13893 case OP_ATR_LENGTH:
13894 case OP_ATR_IMAGE:
13895 case OP_ATR_MAX:
13896 case OP_ATR_MIN:
13897 case OP_ATR_MODULUS:
13898 case OP_ATR_POS:
13899 case OP_ATR_SIZE:
13900 case OP_ATR_TAG:
13901 case OP_ATR_VAL:
13902 break;
13903
13904 case UNOP_IN_RANGE:
13905 case UNOP_QUAL:
13906 /* XXX: gdb_sprint_host_address, type_sprint */
13907 fprintf_filtered (stream, _("Type @"));
13908 gdb_print_host_address (exp->elts[pc + 1].type, stream);
13909 fprintf_filtered (stream, " (");
13910 type_print (exp->elts[pc + 1].type, NULL, stream, 0);
13911 fprintf_filtered (stream, ")");
13912 break;
13913 case BINOP_IN_BOUNDS:
13914 fprintf_filtered (stream, " (%d)",
13915 longest_to_int (exp->elts[pc + 2].longconst));
13916 break;
13917 case TERNOP_IN_RANGE:
13918 break;
13919
13920 case OP_AGGREGATE:
13921 case OP_OTHERS:
13922 case OP_DISCRETE_RANGE:
13923 case OP_POSITIONAL:
13924 case OP_CHOICES:
13925 break;
13926
13927 case OP_NAME:
13928 case OP_STRING:
13929 {
13930 char *name = &exp->elts[elt + 2].string;
13931 int len = longest_to_int (exp->elts[elt + 1].longconst);
13932
13933 fprintf_filtered (stream, "Text: `%.*s'", len, name);
13934 break;
13935 }
13936
13937 default:
13938 return dump_subexp_body_standard (exp, stream, elt);
13939 }
13940
13941 elt += oplen;
13942 for (i = 0; i < nargs; i += 1)
13943 elt = dump_subexp (exp, stream, elt);
13944
13945 return elt;
13946 }
13947
13948 /* The Ada extension of print_subexp (q.v.). */
13949
13950 static void
13951 ada_print_subexp (struct expression *exp, int *pos,
13952 struct ui_file *stream, enum precedence prec)
13953 {
13954 int oplen, nargs, i;
13955 int pc = *pos;
13956 enum exp_opcode op = exp->elts[pc].opcode;
13957
13958 ada_forward_operator_length (exp, pc, &oplen, &nargs);
13959
13960 *pos += oplen;
13961 switch (op)
13962 {
13963 default:
13964 *pos -= oplen;
13965 print_subexp_standard (exp, pos, stream, prec);
13966 return;
13967
13968 case OP_VAR_VALUE:
13969 fputs_filtered (SYMBOL_NATURAL_NAME (exp->elts[pc + 2].symbol), stream);
13970 return;
13971
13972 case BINOP_IN_BOUNDS:
13973 /* XXX: sprint_subexp */
13974 print_subexp (exp, pos, stream, PREC_SUFFIX);
13975 fputs_filtered (" in ", stream);
13976 print_subexp (exp, pos, stream, PREC_SUFFIX);
13977 fputs_filtered ("'range", stream);
13978 if (exp->elts[pc + 1].longconst > 1)
13979 fprintf_filtered (stream, "(%ld)",
13980 (long) exp->elts[pc + 1].longconst);
13981 return;
13982
13983 case TERNOP_IN_RANGE:
13984 if (prec >= PREC_EQUAL)
13985 fputs_filtered ("(", stream);
13986 /* XXX: sprint_subexp */
13987 print_subexp (exp, pos, stream, PREC_SUFFIX);
13988 fputs_filtered (" in ", stream);
13989 print_subexp (exp, pos, stream, PREC_EQUAL);
13990 fputs_filtered (" .. ", stream);
13991 print_subexp (exp, pos, stream, PREC_EQUAL);
13992 if (prec >= PREC_EQUAL)
13993 fputs_filtered (")", stream);
13994 return;
13995
13996 case OP_ATR_FIRST:
13997 case OP_ATR_LAST:
13998 case OP_ATR_LENGTH:
13999 case OP_ATR_IMAGE:
14000 case OP_ATR_MAX:
14001 case OP_ATR_MIN:
14002 case OP_ATR_MODULUS:
14003 case OP_ATR_POS:
14004 case OP_ATR_SIZE:
14005 case OP_ATR_TAG:
14006 case OP_ATR_VAL:
14007 if (exp->elts[*pos].opcode == OP_TYPE)
14008 {
14009 if (TYPE_CODE (exp->elts[*pos + 1].type) != TYPE_CODE_VOID)
14010 LA_PRINT_TYPE (exp->elts[*pos + 1].type, "", stream, 0, 0,
14011 &type_print_raw_options);
14012 *pos += 3;
14013 }
14014 else
14015 print_subexp (exp, pos, stream, PREC_SUFFIX);
14016 fprintf_filtered (stream, "'%s", ada_attribute_name (op));
14017 if (nargs > 1)
14018 {
14019 int tem;
14020
14021 for (tem = 1; tem < nargs; tem += 1)
14022 {
14023 fputs_filtered ((tem == 1) ? " (" : ", ", stream);
14024 print_subexp (exp, pos, stream, PREC_ABOVE_COMMA);
14025 }
14026 fputs_filtered (")", stream);
14027 }
14028 return;
14029
14030 case UNOP_QUAL:
14031 type_print (exp->elts[pc + 1].type, "", stream, 0);
14032 fputs_filtered ("'(", stream);
14033 print_subexp (exp, pos, stream, PREC_PREFIX);
14034 fputs_filtered (")", stream);
14035 return;
14036
14037 case UNOP_IN_RANGE:
14038 /* XXX: sprint_subexp */
14039 print_subexp (exp, pos, stream, PREC_SUFFIX);
14040 fputs_filtered (" in ", stream);
14041 LA_PRINT_TYPE (exp->elts[pc + 1].type, "", stream, 1, 0,
14042 &type_print_raw_options);
14043 return;
14044
14045 case OP_DISCRETE_RANGE:
14046 print_subexp (exp, pos, stream, PREC_SUFFIX);
14047 fputs_filtered ("..", stream);
14048 print_subexp (exp, pos, stream, PREC_SUFFIX);
14049 return;
14050
14051 case OP_OTHERS:
14052 fputs_filtered ("others => ", stream);
14053 print_subexp (exp, pos, stream, PREC_SUFFIX);
14054 return;
14055
14056 case OP_CHOICES:
14057 for (i = 0; i < nargs-1; i += 1)
14058 {
14059 if (i > 0)
14060 fputs_filtered ("|", stream);
14061 print_subexp (exp, pos, stream, PREC_SUFFIX);
14062 }
14063 fputs_filtered (" => ", stream);
14064 print_subexp (exp, pos, stream, PREC_SUFFIX);
14065 return;
14066
14067 case OP_POSITIONAL:
14068 print_subexp (exp, pos, stream, PREC_SUFFIX);
14069 return;
14070
14071 case OP_AGGREGATE:
14072 fputs_filtered ("(", stream);
14073 for (i = 0; i < nargs; i += 1)
14074 {
14075 if (i > 0)
14076 fputs_filtered (", ", stream);
14077 print_subexp (exp, pos, stream, PREC_SUFFIX);
14078 }
14079 fputs_filtered (")", stream);
14080 return;
14081 }
14082 }
14083
14084 /* Table mapping opcodes into strings for printing operators
14085 and precedences of the operators. */
14086
14087 static const struct op_print ada_op_print_tab[] = {
14088 {":=", BINOP_ASSIGN, PREC_ASSIGN, 1},
14089 {"or else", BINOP_LOGICAL_OR, PREC_LOGICAL_OR, 0},
14090 {"and then", BINOP_LOGICAL_AND, PREC_LOGICAL_AND, 0},
14091 {"or", BINOP_BITWISE_IOR, PREC_BITWISE_IOR, 0},
14092 {"xor", BINOP_BITWISE_XOR, PREC_BITWISE_XOR, 0},
14093 {"and", BINOP_BITWISE_AND, PREC_BITWISE_AND, 0},
14094 {"=", BINOP_EQUAL, PREC_EQUAL, 0},
14095 {"/=", BINOP_NOTEQUAL, PREC_EQUAL, 0},
14096 {"<=", BINOP_LEQ, PREC_ORDER, 0},
14097 {">=", BINOP_GEQ, PREC_ORDER, 0},
14098 {">", BINOP_GTR, PREC_ORDER, 0},
14099 {"<", BINOP_LESS, PREC_ORDER, 0},
14100 {">>", BINOP_RSH, PREC_SHIFT, 0},
14101 {"<<", BINOP_LSH, PREC_SHIFT, 0},
14102 {"+", BINOP_ADD, PREC_ADD, 0},
14103 {"-", BINOP_SUB, PREC_ADD, 0},
14104 {"&", BINOP_CONCAT, PREC_ADD, 0},
14105 {"*", BINOP_MUL, PREC_MUL, 0},
14106 {"/", BINOP_DIV, PREC_MUL, 0},
14107 {"rem", BINOP_REM, PREC_MUL, 0},
14108 {"mod", BINOP_MOD, PREC_MUL, 0},
14109 {"**", BINOP_EXP, PREC_REPEAT, 0},
14110 {"@", BINOP_REPEAT, PREC_REPEAT, 0},
14111 {"-", UNOP_NEG, PREC_PREFIX, 0},
14112 {"+", UNOP_PLUS, PREC_PREFIX, 0},
14113 {"not ", UNOP_LOGICAL_NOT, PREC_PREFIX, 0},
14114 {"not ", UNOP_COMPLEMENT, PREC_PREFIX, 0},
14115 {"abs ", UNOP_ABS, PREC_PREFIX, 0},
14116 {".all", UNOP_IND, PREC_SUFFIX, 1},
14117 {"'access", UNOP_ADDR, PREC_SUFFIX, 1},
14118 {"'size", OP_ATR_SIZE, PREC_SUFFIX, 1},
14119 {NULL, OP_NULL, PREC_SUFFIX, 0}
14120 };
14121 \f
14122 enum ada_primitive_types {
14123 ada_primitive_type_int,
14124 ada_primitive_type_long,
14125 ada_primitive_type_short,
14126 ada_primitive_type_char,
14127 ada_primitive_type_float,
14128 ada_primitive_type_double,
14129 ada_primitive_type_void,
14130 ada_primitive_type_long_long,
14131 ada_primitive_type_long_double,
14132 ada_primitive_type_natural,
14133 ada_primitive_type_positive,
14134 ada_primitive_type_system_address,
14135 ada_primitive_type_storage_offset,
14136 nr_ada_primitive_types
14137 };
14138
14139 static void
14140 ada_language_arch_info (struct gdbarch *gdbarch,
14141 struct language_arch_info *lai)
14142 {
14143 const struct builtin_type *builtin = builtin_type (gdbarch);
14144
14145 lai->primitive_type_vector
14146 = GDBARCH_OBSTACK_CALLOC (gdbarch, nr_ada_primitive_types + 1,
14147 struct type *);
14148
14149 lai->primitive_type_vector [ada_primitive_type_int]
14150 = arch_integer_type (gdbarch, gdbarch_int_bit (gdbarch),
14151 0, "integer");
14152 lai->primitive_type_vector [ada_primitive_type_long]
14153 = arch_integer_type (gdbarch, gdbarch_long_bit (gdbarch),
14154 0, "long_integer");
14155 lai->primitive_type_vector [ada_primitive_type_short]
14156 = arch_integer_type (gdbarch, gdbarch_short_bit (gdbarch),
14157 0, "short_integer");
14158 lai->string_char_type
14159 = lai->primitive_type_vector [ada_primitive_type_char]
14160 = arch_character_type (gdbarch, TARGET_CHAR_BIT, 0, "character");
14161 lai->primitive_type_vector [ada_primitive_type_float]
14162 = arch_float_type (gdbarch, gdbarch_float_bit (gdbarch),
14163 "float", gdbarch_float_format (gdbarch));
14164 lai->primitive_type_vector [ada_primitive_type_double]
14165 = arch_float_type (gdbarch, gdbarch_double_bit (gdbarch),
14166 "long_float", gdbarch_double_format (gdbarch));
14167 lai->primitive_type_vector [ada_primitive_type_long_long]
14168 = arch_integer_type (gdbarch, gdbarch_long_long_bit (gdbarch),
14169 0, "long_long_integer");
14170 lai->primitive_type_vector [ada_primitive_type_long_double]
14171 = arch_float_type (gdbarch, gdbarch_long_double_bit (gdbarch),
14172 "long_long_float", gdbarch_long_double_format (gdbarch));
14173 lai->primitive_type_vector [ada_primitive_type_natural]
14174 = arch_integer_type (gdbarch, gdbarch_int_bit (gdbarch),
14175 0, "natural");
14176 lai->primitive_type_vector [ada_primitive_type_positive]
14177 = arch_integer_type (gdbarch, gdbarch_int_bit (gdbarch),
14178 0, "positive");
14179 lai->primitive_type_vector [ada_primitive_type_void]
14180 = builtin->builtin_void;
14181
14182 lai->primitive_type_vector [ada_primitive_type_system_address]
14183 = lookup_pointer_type (arch_type (gdbarch, TYPE_CODE_VOID, TARGET_CHAR_BIT,
14184 "void"));
14185 TYPE_NAME (lai->primitive_type_vector [ada_primitive_type_system_address])
14186 = "system__address";
14187
14188 /* Create the equivalent of the System.Storage_Elements.Storage_Offset
14189 type. This is a signed integral type whose size is the same as
14190 the size of addresses. */
14191 {
14192 unsigned int addr_length = TYPE_LENGTH
14193 (lai->primitive_type_vector [ada_primitive_type_system_address]);
14194
14195 lai->primitive_type_vector [ada_primitive_type_storage_offset]
14196 = arch_integer_type (gdbarch, addr_length * HOST_CHAR_BIT, 0,
14197 "storage_offset");
14198 }
14199
14200 lai->bool_type_symbol = NULL;
14201 lai->bool_type_default = builtin->builtin_bool;
14202 }
14203 \f
14204 /* Language vector */
14205
14206 /* Not really used, but needed in the ada_language_defn. */
14207
14208 static void
14209 emit_char (int c, struct type *type, struct ui_file *stream, int quoter)
14210 {
14211 ada_emit_char (c, type, stream, quoter, 1);
14212 }
14213
14214 static int
14215 parse (struct parser_state *ps)
14216 {
14217 warnings_issued = 0;
14218 return ada_parse (ps);
14219 }
14220
14221 static const struct exp_descriptor ada_exp_descriptor = {
14222 ada_print_subexp,
14223 ada_operator_length,
14224 ada_operator_check,
14225 ada_op_name,
14226 ada_dump_subexp_body,
14227 ada_evaluate_subexp
14228 };
14229
14230 /* symbol_name_matcher_ftype adapter for wild_match. */
14231
14232 static bool
14233 do_wild_match (const char *symbol_search_name,
14234 const lookup_name_info &lookup_name,
14235 completion_match_result *comp_match_res)
14236 {
14237 return wild_match (symbol_search_name, ada_lookup_name (lookup_name));
14238 }
14239
14240 /* symbol_name_matcher_ftype adapter for full_match. */
14241
14242 static bool
14243 do_full_match (const char *symbol_search_name,
14244 const lookup_name_info &lookup_name,
14245 completion_match_result *comp_match_res)
14246 {
14247 return full_match (symbol_search_name, ada_lookup_name (lookup_name));
14248 }
14249
14250 /* symbol_name_matcher_ftype for exact (verbatim) matches. */
14251
14252 static bool
14253 do_exact_match (const char *symbol_search_name,
14254 const lookup_name_info &lookup_name,
14255 completion_match_result *comp_match_res)
14256 {
14257 return strcmp (symbol_search_name, ada_lookup_name (lookup_name)) == 0;
14258 }
14259
14260 /* Build the Ada lookup name for LOOKUP_NAME. */
14261
14262 ada_lookup_name_info::ada_lookup_name_info (const lookup_name_info &lookup_name)
14263 {
14264 const std::string &user_name = lookup_name.name ();
14265
14266 if (user_name[0] == '<')
14267 {
14268 if (user_name.back () == '>')
14269 m_encoded_name = user_name.substr (1, user_name.size () - 2);
14270 else
14271 m_encoded_name = user_name.substr (1, user_name.size () - 1);
14272 m_encoded_p = true;
14273 m_verbatim_p = true;
14274 m_wild_match_p = false;
14275 m_standard_p = false;
14276 }
14277 else
14278 {
14279 m_verbatim_p = false;
14280
14281 m_encoded_p = user_name.find ("__") != std::string::npos;
14282
14283 if (!m_encoded_p)
14284 {
14285 const char *folded = ada_fold_name (user_name.c_str ());
14286 const char *encoded = ada_encode_1 (folded, false);
14287 if (encoded != NULL)
14288 m_encoded_name = encoded;
14289 else
14290 m_encoded_name = user_name;
14291 }
14292 else
14293 m_encoded_name = user_name;
14294
14295 /* Handle the 'package Standard' special case. See description
14296 of m_standard_p. */
14297 if (startswith (m_encoded_name.c_str (), "standard__"))
14298 {
14299 m_encoded_name = m_encoded_name.substr (sizeof ("standard__") - 1);
14300 m_standard_p = true;
14301 }
14302 else
14303 m_standard_p = false;
14304
14305 /* If the name contains a ".", then the user is entering a fully
14306 qualified entity name, and the match must not be done in wild
14307 mode. Similarly, if the user wants to complete what looks
14308 like an encoded name, the match must not be done in wild
14309 mode. Also, in the standard__ special case always do
14310 non-wild matching. */
14311 m_wild_match_p
14312 = (lookup_name.match_type () != symbol_name_match_type::FULL
14313 && !m_encoded_p
14314 && !m_standard_p
14315 && user_name.find ('.') == std::string::npos);
14316 }
14317 }
14318
14319 /* symbol_name_matcher_ftype method for Ada. This only handles
14320 completion mode. */
14321
14322 static bool
14323 ada_symbol_name_matches (const char *symbol_search_name,
14324 const lookup_name_info &lookup_name,
14325 completion_match_result *comp_match_res)
14326 {
14327 return lookup_name.ada ().matches (symbol_search_name,
14328 lookup_name.match_type (),
14329 comp_match_res);
14330 }
14331
14332 /* A name matcher that matches the symbol name exactly, with
14333 strcmp. */
14334
14335 static bool
14336 literal_symbol_name_matcher (const char *symbol_search_name,
14337 const lookup_name_info &lookup_name,
14338 completion_match_result *comp_match_res)
14339 {
14340 const std::string &name = lookup_name.name ();
14341
14342 int cmp = (lookup_name.completion_mode ()
14343 ? strncmp (symbol_search_name, name.c_str (), name.size ())
14344 : strcmp (symbol_search_name, name.c_str ()));
14345 if (cmp == 0)
14346 {
14347 if (comp_match_res != NULL)
14348 comp_match_res->set_match (symbol_search_name);
14349 return true;
14350 }
14351 else
14352 return false;
14353 }
14354
14355 /* Implement the "la_get_symbol_name_matcher" language_defn method for
14356 Ada. */
14357
14358 static symbol_name_matcher_ftype *
14359 ada_get_symbol_name_matcher (const lookup_name_info &lookup_name)
14360 {
14361 if (lookup_name.match_type () == symbol_name_match_type::SEARCH_NAME)
14362 return literal_symbol_name_matcher;
14363
14364 if (lookup_name.completion_mode ())
14365 return ada_symbol_name_matches;
14366 else
14367 {
14368 if (lookup_name.ada ().wild_match_p ())
14369 return do_wild_match;
14370 else if (lookup_name.ada ().verbatim_p ())
14371 return do_exact_match;
14372 else
14373 return do_full_match;
14374 }
14375 }
14376
14377 /* Implement the "la_read_var_value" language_defn method for Ada. */
14378
14379 static struct value *
14380 ada_read_var_value (struct symbol *var, const struct block *var_block,
14381 struct frame_info *frame)
14382 {
14383 const struct block *frame_block = NULL;
14384 struct symbol *renaming_sym = NULL;
14385
14386 /* The only case where default_read_var_value is not sufficient
14387 is when VAR is a renaming... */
14388 if (frame)
14389 frame_block = get_frame_block (frame, NULL);
14390 if (frame_block)
14391 renaming_sym = ada_find_renaming_symbol (var, frame_block);
14392 if (renaming_sym != NULL)
14393 return ada_read_renaming_var_value (renaming_sym, frame_block);
14394
14395 /* This is a typical case where we expect the default_read_var_value
14396 function to work. */
14397 return default_read_var_value (var, var_block, frame);
14398 }
14399
14400 static const char *ada_extensions[] =
14401 {
14402 ".adb", ".ads", ".a", ".ada", ".dg", NULL
14403 };
14404
14405 extern const struct language_defn ada_language_defn = {
14406 "ada", /* Language name */
14407 "Ada",
14408 language_ada,
14409 range_check_off,
14410 case_sensitive_on, /* Yes, Ada is case-insensitive, but
14411 that's not quite what this means. */
14412 array_row_major,
14413 macro_expansion_no,
14414 ada_extensions,
14415 &ada_exp_descriptor,
14416 parse,
14417 resolve,
14418 ada_printchar, /* Print a character constant */
14419 ada_printstr, /* Function to print string constant */
14420 emit_char, /* Function to print single char (not used) */
14421 ada_print_type, /* Print a type using appropriate syntax */
14422 ada_print_typedef, /* Print a typedef using appropriate syntax */
14423 ada_val_print, /* Print a value using appropriate syntax */
14424 ada_value_print, /* Print a top-level value */
14425 ada_read_var_value, /* la_read_var_value */
14426 NULL, /* Language specific skip_trampoline */
14427 NULL, /* name_of_this */
14428 true, /* la_store_sym_names_in_linkage_form_p */
14429 ada_lookup_symbol_nonlocal, /* Looking up non-local symbols. */
14430 basic_lookup_transparent_type, /* lookup_transparent_type */
14431 ada_la_decode, /* Language specific symbol demangler */
14432 ada_sniff_from_mangled_name,
14433 NULL, /* Language specific
14434 class_name_from_physname */
14435 ada_op_print_tab, /* expression operators for printing */
14436 0, /* c-style arrays */
14437 1, /* String lower bound */
14438 ada_get_gdb_completer_word_break_characters,
14439 ada_collect_symbol_completion_matches,
14440 ada_language_arch_info,
14441 ada_print_array_index,
14442 default_pass_by_reference,
14443 c_get_string,
14444 ada_watch_location_expression,
14445 ada_get_symbol_name_matcher, /* la_get_symbol_name_matcher */
14446 ada_iterate_over_symbols,
14447 default_search_name_hash,
14448 &ada_varobj_ops,
14449 NULL,
14450 NULL,
14451 ada_is_string_type,
14452 "(...)" /* la_struct_too_deep_ellipsis */
14453 };
14454
14455 /* Command-list for the "set/show ada" prefix command. */
14456 static struct cmd_list_element *set_ada_list;
14457 static struct cmd_list_element *show_ada_list;
14458
14459 /* Implement the "set ada" prefix command. */
14460
14461 static void
14462 set_ada_command (const char *arg, int from_tty)
14463 {
14464 printf_unfiltered (_(\
14465 "\"set ada\" must be followed by the name of a setting.\n"));
14466 help_list (set_ada_list, "set ada ", all_commands, gdb_stdout);
14467 }
14468
14469 /* Implement the "show ada" prefix command. */
14470
14471 static void
14472 show_ada_command (const char *args, int from_tty)
14473 {
14474 cmd_show_list (show_ada_list, from_tty, "");
14475 }
14476
14477 static void
14478 initialize_ada_catchpoint_ops (void)
14479 {
14480 struct breakpoint_ops *ops;
14481
14482 initialize_breakpoint_ops ();
14483
14484 ops = &catch_exception_breakpoint_ops;
14485 *ops = bkpt_breakpoint_ops;
14486 ops->allocate_location = allocate_location_catch_exception;
14487 ops->re_set = re_set_catch_exception;
14488 ops->check_status = check_status_catch_exception;
14489 ops->print_it = print_it_catch_exception;
14490 ops->print_one = print_one_catch_exception;
14491 ops->print_mention = print_mention_catch_exception;
14492 ops->print_recreate = print_recreate_catch_exception;
14493
14494 ops = &catch_exception_unhandled_breakpoint_ops;
14495 *ops = bkpt_breakpoint_ops;
14496 ops->allocate_location = allocate_location_catch_exception_unhandled;
14497 ops->re_set = re_set_catch_exception_unhandled;
14498 ops->check_status = check_status_catch_exception_unhandled;
14499 ops->print_it = print_it_catch_exception_unhandled;
14500 ops->print_one = print_one_catch_exception_unhandled;
14501 ops->print_mention = print_mention_catch_exception_unhandled;
14502 ops->print_recreate = print_recreate_catch_exception_unhandled;
14503
14504 ops = &catch_assert_breakpoint_ops;
14505 *ops = bkpt_breakpoint_ops;
14506 ops->allocate_location = allocate_location_catch_assert;
14507 ops->re_set = re_set_catch_assert;
14508 ops->check_status = check_status_catch_assert;
14509 ops->print_it = print_it_catch_assert;
14510 ops->print_one = print_one_catch_assert;
14511 ops->print_mention = print_mention_catch_assert;
14512 ops->print_recreate = print_recreate_catch_assert;
14513
14514 ops = &catch_handlers_breakpoint_ops;
14515 *ops = bkpt_breakpoint_ops;
14516 ops->allocate_location = allocate_location_catch_handlers;
14517 ops->re_set = re_set_catch_handlers;
14518 ops->check_status = check_status_catch_handlers;
14519 ops->print_it = print_it_catch_handlers;
14520 ops->print_one = print_one_catch_handlers;
14521 ops->print_mention = print_mention_catch_handlers;
14522 ops->print_recreate = print_recreate_catch_handlers;
14523 }
14524
14525 /* This module's 'new_objfile' observer. */
14526
14527 static void
14528 ada_new_objfile_observer (struct objfile *objfile)
14529 {
14530 ada_clear_symbol_cache ();
14531 }
14532
14533 /* This module's 'free_objfile' observer. */
14534
14535 static void
14536 ada_free_objfile_observer (struct objfile *objfile)
14537 {
14538 ada_clear_symbol_cache ();
14539 }
14540
14541 void
14542 _initialize_ada_language (void)
14543 {
14544 initialize_ada_catchpoint_ops ();
14545
14546 add_prefix_cmd ("ada", no_class, set_ada_command,
14547 _("Prefix command for changing Ada-specific settings"),
14548 &set_ada_list, "set ada ", 0, &setlist);
14549
14550 add_prefix_cmd ("ada", no_class, show_ada_command,
14551 _("Generic command for showing Ada-specific settings."),
14552 &show_ada_list, "show ada ", 0, &showlist);
14553
14554 add_setshow_boolean_cmd ("trust-PAD-over-XVS", class_obscure,
14555 &trust_pad_over_xvs, _("\
14556 Enable or disable an optimization trusting PAD types over XVS types"), _("\
14557 Show whether an optimization trusting PAD types over XVS types is activated"),
14558 _("\
14559 This is related to the encoding used by the GNAT compiler. The debugger\n\
14560 should normally trust the contents of PAD types, but certain older versions\n\
14561 of GNAT have a bug that sometimes causes the information in the PAD type\n\
14562 to be incorrect. Turning this setting \"off\" allows the debugger to\n\
14563 work around this bug. It is always safe to turn this option \"off\", but\n\
14564 this incurs a slight performance penalty, so it is recommended to NOT change\n\
14565 this option to \"off\" unless necessary."),
14566 NULL, NULL, &set_ada_list, &show_ada_list);
14567
14568 add_setshow_boolean_cmd ("print-signatures", class_vars,
14569 &print_signatures, _("\
14570 Enable or disable the output of formal and return types for functions in the \
14571 overloads selection menu"), _("\
14572 Show whether the output of formal and return types for functions in the \
14573 overloads selection menu is activated"),
14574 NULL, NULL, NULL, &set_ada_list, &show_ada_list);
14575
14576 add_catch_command ("exception", _("\
14577 Catch Ada exceptions, when raised.\n\
14578 Usage: catch exception [ ARG ]\n\
14579 \n\
14580 Without any argument, stop when any Ada exception is raised.\n\
14581 If ARG is \"unhandled\" (without the quotes), only stop when the exception\n\
14582 being raised does not have a handler (and will therefore lead to the task's\n\
14583 termination).\n\
14584 Otherwise, the catchpoint only stops when the name of the exception being\n\
14585 raised is the same as ARG."),
14586 catch_ada_exception_command,
14587 NULL,
14588 CATCH_PERMANENT,
14589 CATCH_TEMPORARY);
14590
14591 add_catch_command ("handlers", _("\
14592 Catch Ada exceptions, when handled.\n\
14593 With an argument, catch only exceptions with the given name."),
14594 catch_ada_handlers_command,
14595 NULL,
14596 CATCH_PERMANENT,
14597 CATCH_TEMPORARY);
14598 add_catch_command ("assert", _("\
14599 Catch failed Ada assertions, when raised.\n\
14600 With an argument, catch only exceptions with the given name."),
14601 catch_assert_command,
14602 NULL,
14603 CATCH_PERMANENT,
14604 CATCH_TEMPORARY);
14605
14606 varsize_limit = 65536;
14607 add_setshow_uinteger_cmd ("varsize-limit", class_support,
14608 &varsize_limit, _("\
14609 Set the maximum number of bytes allowed in a variable-size object."), _("\
14610 Show the maximum number of bytes allowed in a variable-size object."), _("\
14611 Attempts to access an object whose size is not a compile-time constant\n\
14612 and exceeds this limit will cause an error."),
14613 NULL, NULL, &setlist, &showlist);
14614
14615 add_info ("exceptions", info_exceptions_command,
14616 _("\
14617 List all Ada exception names.\n\
14618 If a regular expression is passed as an argument, only those matching\n\
14619 the regular expression are listed."));
14620
14621 add_prefix_cmd ("ada", class_maintenance, maint_set_ada_cmd,
14622 _("Set Ada maintenance-related variables."),
14623 &maint_set_ada_cmdlist, "maintenance set ada ",
14624 0/*allow-unknown*/, &maintenance_set_cmdlist);
14625
14626 add_prefix_cmd ("ada", class_maintenance, maint_show_ada_cmd,
14627 _("Show Ada maintenance-related variables"),
14628 &maint_show_ada_cmdlist, "maintenance show ada ",
14629 0/*allow-unknown*/, &maintenance_show_cmdlist);
14630
14631 add_setshow_boolean_cmd
14632 ("ignore-descriptive-types", class_maintenance,
14633 &ada_ignore_descriptive_types_p,
14634 _("Set whether descriptive types generated by GNAT should be ignored."),
14635 _("Show whether descriptive types generated by GNAT should be ignored."),
14636 _("\
14637 When enabled, the debugger will stop using the DW_AT_GNAT_descriptive_type\n\
14638 DWARF attribute."),
14639 NULL, NULL, &maint_set_ada_cmdlist, &maint_show_ada_cmdlist);
14640
14641 decoded_names_store = htab_create_alloc (256, htab_hash_string, streq_hash,
14642 NULL, xcalloc, xfree);
14643
14644 /* The ada-lang observers. */
14645 gdb::observers::new_objfile.attach (ada_new_objfile_observer);
14646 gdb::observers::free_objfile.attach (ada_free_objfile_observer);
14647 gdb::observers::inferior_exit.attach (ada_inferior_exit);
14648
14649 /* Setup various context-specific data. */
14650 ada_inferior_data
14651 = register_inferior_data_with_cleanup (NULL, ada_inferior_data_cleanup);
14652 ada_pspace_data_handle
14653 = register_program_space_data_with_cleanup (NULL, ada_pspace_data_cleanup);
14654 }
This page took 0.302895 seconds and 3 git commands to generate.