1 /* Ada language support routines for GDB, the GNU debugger. 2 3 Copyright (C) 1992-2015 Free Software Foundation, Inc. 4 5 This file is part of GDB. 6 7 This program is free software; you can redistribute it and/or modify 8 it under the terms of the GNU General Public License as published by 9 the Free Software Foundation; either version 3 of the License, or 10 (at your option) any later version. 11 12 This program is distributed in the hope that it will be useful, 13 but WITHOUT ANY WARRANTY; without even the implied warranty of 14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 GNU General Public License for more details. 16 17 You should have received a copy of the GNU General Public License 18 along with this program. If not, see <http://www.gnu.org/licenses/>. */ 19 20 21 #include "defs.h" 22 #include <ctype.h> 23 #include "demangle.h" 24 #include "gdb_regex.h" 25 #include "frame.h" 26 #include "symtab.h" 27 #include "gdbtypes.h" 28 #include "gdbcmd.h" 29 #include "expression.h" 30 #include "parser-defs.h" 31 #include "language.h" 32 #include "varobj.h" 33 #include "c-lang.h" 34 #include "inferior.h" 35 #include "symfile.h" 36 #include "objfiles.h" 37 #include "breakpoint.h" 38 #include "gdbcore.h" 39 #include "hashtab.h" 40 #include "gdb_obstack.h" 41 #include "ada-lang.h" 42 #include "completer.h" 43 #include <sys/stat.h> 44 #include "ui-out.h" 45 #include "block.h" 46 #include "infcall.h" 47 #include "dictionary.h" 48 #include "annotate.h" 49 #include "valprint.h" 50 #include "source.h" 51 #include "observer.h" 52 #include "vec.h" 53 #include "stack.h" 54 #include "gdb_vecs.h" 55 #include "typeprint.h" 56 57 #include "psymtab.h" 58 #include "value.h" 59 #include "mi/mi-common.h" 60 #include "arch-utils.h" 61 #include "cli/cli-utils.h" 62 63 /* Define whether or not the C operator '/' truncates towards zero for 64 differently signed operands (truncation direction is undefined in C). 65 Copied from valarith.c. */ 66 67 #ifndef TRUNCATION_TOWARDS_ZERO 68 #define TRUNCATION_TOWARDS_ZERO ((-5 / 2) == -2) 69 #endif 70 71 static struct type *desc_base_type (struct type *); 72 73 static struct type *desc_bounds_type (struct type *); 74 75 static struct value *desc_bounds (struct value *); 76 77 static int fat_pntr_bounds_bitpos (struct type *); 78 79 static int fat_pntr_bounds_bitsize (struct type *); 80 81 static struct type *desc_data_target_type (struct type *); 82 83 static struct value *desc_data (struct value *); 84 85 static int fat_pntr_data_bitpos (struct type *); 86 87 static int fat_pntr_data_bitsize (struct type *); 88 89 static struct value *desc_one_bound (struct value *, int, int); 90 91 static int desc_bound_bitpos (struct type *, int, int); 92 93 static int desc_bound_bitsize (struct type *, int, int); 94 95 static struct type *desc_index_type (struct type *, int); 96 97 static int desc_arity (struct type *); 98 99 static int ada_type_match (struct type *, struct type *, int); 100 101 static int ada_args_match (struct symbol *, struct value **, int); 102 103 static int full_match (const char *, const char *); 104 105 static struct value *make_array_descriptor (struct type *, struct value *); 106 107 static void ada_add_block_symbols (struct obstack *, 108 const struct block *, const char *, 109 domain_enum, struct objfile *, int); 110 111 static int is_nonfunction (struct ada_symbol_info *, int); 112 113 static void add_defn_to_vec (struct obstack *, struct symbol *, 114 const struct block *); 115 116 static int num_defns_collected (struct obstack *); 117 118 static struct ada_symbol_info *defns_collected (struct obstack *, int); 119 120 static struct value *resolve_subexp (struct expression **, int *, int, 121 struct type *); 122 123 static void replace_operator_with_call (struct expression **, int, int, int, 124 struct symbol *, const struct block *); 125 126 static int possible_user_operator_p (enum exp_opcode, struct value **); 127 128 static char *ada_op_name (enum exp_opcode); 129 130 static const char *ada_decoded_op_name (enum exp_opcode); 131 132 static int numeric_type_p (struct type *); 133 134 static int integer_type_p (struct type *); 135 136 static int scalar_type_p (struct type *); 137 138 static int discrete_type_p (struct type *); 139 140 static enum ada_renaming_category parse_old_style_renaming (struct type *, 141 const char **, 142 int *, 143 const char **); 144 145 static struct symbol *find_old_style_renaming_symbol (const char *, 146 const struct block *); 147 148 static struct type *ada_lookup_struct_elt_type (struct type *, char *, 149 int, int, int *); 150 151 static struct value *evaluate_subexp_type (struct expression *, int *); 152 153 static struct type *ada_find_parallel_type_with_name (struct type *, 154 const char *); 155 156 static int is_dynamic_field (struct type *, int); 157 158 static struct type *to_fixed_variant_branch_type (struct type *, 159 const gdb_byte *, 160 CORE_ADDR, struct value *); 161 162 static struct type *to_fixed_array_type (struct type *, struct value *, int); 163 164 static struct type *to_fixed_range_type (struct type *, struct value *); 165 166 static struct type *to_static_fixed_type (struct type *); 167 static struct type *static_unwrap_type (struct type *type); 168 169 static struct value *unwrap_value (struct value *); 170 171 static struct type *constrained_packed_array_type (struct type *, long *); 172 173 static struct type *decode_constrained_packed_array_type (struct type *); 174 175 static long decode_packed_array_bitsize (struct type *); 176 177 static struct value *decode_constrained_packed_array (struct value *); 178 179 static int ada_is_packed_array_type (struct type *); 180 181 static int ada_is_unconstrained_packed_array_type (struct type *); 182 183 static struct value *value_subscript_packed (struct value *, int, 184 struct value **); 185 186 static void move_bits (gdb_byte *, int, const gdb_byte *, int, int, int); 187 188 static struct value *coerce_unspec_val_to_type (struct value *, 189 struct type *); 190 191 static struct value *get_var_value (char *, char *); 192 193 static int lesseq_defined_than (struct symbol *, struct symbol *); 194 195 static int equiv_types (struct type *, struct type *); 196 197 static int is_name_suffix (const char *); 198 199 static int advance_wild_match (const char **, const char *, int); 200 201 static int wild_match (const char *, const char *); 202 203 static struct value *ada_coerce_ref (struct value *); 204 205 static LONGEST pos_atr (struct value *); 206 207 static struct value *value_pos_atr (struct type *, struct value *); 208 209 static struct value *value_val_atr (struct type *, struct value *); 210 211 static struct symbol *standard_lookup (const char *, const struct block *, 212 domain_enum); 213 214 static struct value *ada_search_struct_field (char *, struct value *, int, 215 struct type *); 216 217 static struct value *ada_value_primitive_field (struct value *, int, int, 218 struct type *); 219 220 static int find_struct_field (const char *, struct type *, int, 221 struct type **, int *, int *, int *, int *); 222 223 static struct value *ada_to_fixed_value_create (struct type *, CORE_ADDR, 224 struct value *); 225 226 static int ada_resolve_function (struct ada_symbol_info *, int, 227 struct value **, int, const char *, 228 struct type *); 229 230 static int ada_is_direct_array_type (struct type *); 231 232 static void ada_language_arch_info (struct gdbarch *, 233 struct language_arch_info *); 234 235 static struct value *ada_index_struct_field (int, struct value *, int, 236 struct type *); 237 238 static struct value *assign_aggregate (struct value *, struct value *, 239 struct expression *, 240 int *, enum noside); 241 242 static void aggregate_assign_from_choices (struct value *, struct value *, 243 struct expression *, 244 int *, LONGEST *, int *, 245 int, LONGEST, LONGEST); 246 247 static void aggregate_assign_positional (struct value *, struct value *, 248 struct expression *, 249 int *, LONGEST *, int *, int, 250 LONGEST, LONGEST); 251 252 253 static void aggregate_assign_others (struct value *, struct value *, 254 struct expression *, 255 int *, LONGEST *, int, LONGEST, LONGEST); 256 257 258 static void add_component_interval (LONGEST, LONGEST, LONGEST *, int *, int); 259 260 261 static struct value *ada_evaluate_subexp (struct type *, struct expression *, 262 int *, enum noside); 263 264 static void ada_forward_operator_length (struct expression *, int, int *, 265 int *); 266 267 static struct type *ada_find_any_type (const char *name); 268 269 270 /* The result of a symbol lookup to be stored in our symbol cache. */ 271 272 struct cache_entry 273 { 274 /* The name used to perform the lookup. */ 275 const char *name; 276 /* The namespace used during the lookup. */ 277 domain_enum namespace; 278 /* The symbol returned by the lookup, or NULL if no matching symbol 279 was found. */ 280 struct symbol *sym; 281 /* The block where the symbol was found, or NULL if no matching 282 symbol was found. */ 283 const struct block *block; 284 /* A pointer to the next entry with the same hash. */ 285 struct cache_entry *next; 286 }; 287 288 /* The Ada symbol cache, used to store the result of Ada-mode symbol 289 lookups in the course of executing the user's commands. 290 291 The cache is implemented using a simple, fixed-sized hash. 292 The size is fixed on the grounds that there are not likely to be 293 all that many symbols looked up during any given session, regardless 294 of the size of the symbol table. If we decide to go to a resizable 295 table, let's just use the stuff from libiberty instead. */ 296 297 #define HASH_SIZE 1009 298 299 struct ada_symbol_cache 300 { 301 /* An obstack used to store the entries in our cache. */ 302 struct obstack cache_space; 303 304 /* The root of the hash table used to implement our symbol cache. */ 305 struct cache_entry *root[HASH_SIZE]; 306 }; 307 308 static void ada_free_symbol_cache (struct ada_symbol_cache *sym_cache); 309 310 /* Maximum-sized dynamic type. */ 311 static unsigned int varsize_limit; 312 313 /* FIXME: brobecker/2003-09-17: No longer a const because it is 314 returned by a function that does not return a const char *. */ 315 static char *ada_completer_word_break_characters = 316 #ifdef VMS 317 " \t\n!@#%^&*()+=|~`}{[]\";:?/,-"; 318 #else 319 " \t\n!@#$%^&*()+=|~`}{[]\";:?/,-"; 320 #endif 321 322 /* The name of the symbol to use to get the name of the main subprogram. */ 323 static const char ADA_MAIN_PROGRAM_SYMBOL_NAME[] 324 = "__gnat_ada_main_program_name"; 325 326 /* Limit on the number of warnings to raise per expression evaluation. */ 327 static int warning_limit = 2; 328 329 /* Number of warning messages issued; reset to 0 by cleanups after 330 expression evaluation. */ 331 static int warnings_issued = 0; 332 333 static const char *known_runtime_file_name_patterns[] = { 334 ADA_KNOWN_RUNTIME_FILE_NAME_PATTERNS NULL 335 }; 336 337 static const char *known_auxiliary_function_name_patterns[] = { 338 ADA_KNOWN_AUXILIARY_FUNCTION_NAME_PATTERNS NULL 339 }; 340 341 /* Space for allocating results of ada_lookup_symbol_list. */ 342 static struct obstack symbol_list_obstack; 343 344 /* Maintenance-related settings for this module. */ 345 346 static struct cmd_list_element *maint_set_ada_cmdlist; 347 static struct cmd_list_element *maint_show_ada_cmdlist; 348 349 /* Implement the "maintenance set ada" (prefix) command. */ 350 351 static void 352 maint_set_ada_cmd (char *args, int from_tty) 353 { 354 help_list (maint_set_ada_cmdlist, "maintenance set ada ", all_commands, 355 gdb_stdout); 356 } 357 358 /* Implement the "maintenance show ada" (prefix) command. */ 359 360 static void 361 maint_show_ada_cmd (char *args, int from_tty) 362 { 363 cmd_show_list (maint_show_ada_cmdlist, from_tty, ""); 364 } 365 366 /* The "maintenance ada set/show ignore-descriptive-type" value. */ 367 368 static int ada_ignore_descriptive_types_p = 0; 369 370 /* Inferior-specific data. */ 371 372 /* Per-inferior data for this module. */ 373 374 struct ada_inferior_data 375 { 376 /* The ada__tags__type_specific_data type, which is used when decoding 377 tagged types. With older versions of GNAT, this type was directly 378 accessible through a component ("tsd") in the object tag. But this 379 is no longer the case, so we cache it for each inferior. */ 380 struct type *tsd_type; 381 382 /* The exception_support_info data. This data is used to determine 383 how to implement support for Ada exception catchpoints in a given 384 inferior. */ 385 const struct exception_support_info *exception_info; 386 }; 387 388 /* Our key to this module's inferior data. */ 389 static const struct inferior_data *ada_inferior_data; 390 391 /* A cleanup routine for our inferior data. */ 392 static void 393 ada_inferior_data_cleanup (struct inferior *inf, void *arg) 394 { 395 struct ada_inferior_data *data; 396 397 data = inferior_data (inf, ada_inferior_data); 398 if (data != NULL) 399 xfree (data); 400 } 401 402 /* Return our inferior data for the given inferior (INF). 403 404 This function always returns a valid pointer to an allocated 405 ada_inferior_data structure. If INF's inferior data has not 406 been previously set, this functions creates a new one with all 407 fields set to zero, sets INF's inferior to it, and then returns 408 a pointer to that newly allocated ada_inferior_data. */ 409 410 static struct ada_inferior_data * 411 get_ada_inferior_data (struct inferior *inf) 412 { 413 struct ada_inferior_data *data; 414 415 data = inferior_data (inf, ada_inferior_data); 416 if (data == NULL) 417 { 418 data = XCNEW (struct ada_inferior_data); 419 set_inferior_data (inf, ada_inferior_data, data); 420 } 421 422 return data; 423 } 424 425 /* Perform all necessary cleanups regarding our module's inferior data 426 that is required after the inferior INF just exited. */ 427 428 static void 429 ada_inferior_exit (struct inferior *inf) 430 { 431 ada_inferior_data_cleanup (inf, NULL); 432 set_inferior_data (inf, ada_inferior_data, NULL); 433 } 434 435 436 /* program-space-specific data. */ 437 438 /* This module's per-program-space data. */ 439 struct ada_pspace_data 440 { 441 /* The Ada symbol cache. */ 442 struct ada_symbol_cache *sym_cache; 443 }; 444 445 /* Key to our per-program-space data. */ 446 static const struct program_space_data *ada_pspace_data_handle; 447 448 /* Return this module's data for the given program space (PSPACE). 449 If not is found, add a zero'ed one now. 450 451 This function always returns a valid object. */ 452 453 static struct ada_pspace_data * 454 get_ada_pspace_data (struct program_space *pspace) 455 { 456 struct ada_pspace_data *data; 457 458 data = program_space_data (pspace, ada_pspace_data_handle); 459 if (data == NULL) 460 { 461 data = XCNEW (struct ada_pspace_data); 462 set_program_space_data (pspace, ada_pspace_data_handle, data); 463 } 464 465 return data; 466 } 467 468 /* The cleanup callback for this module's per-program-space data. */ 469 470 static void 471 ada_pspace_data_cleanup (struct program_space *pspace, void *data) 472 { 473 struct ada_pspace_data *pspace_data = data; 474 475 if (pspace_data->sym_cache != NULL) 476 ada_free_symbol_cache (pspace_data->sym_cache); 477 xfree (pspace_data); 478 } 479 480 /* Utilities */ 481 482 /* If TYPE is a TYPE_CODE_TYPEDEF type, return the target type after 483 all typedef layers have been peeled. Otherwise, return TYPE. 484 485 Normally, we really expect a typedef type to only have 1 typedef layer. 486 In other words, we really expect the target type of a typedef type to be 487 a non-typedef type. This is particularly true for Ada units, because 488 the language does not have a typedef vs not-typedef distinction. 489 In that respect, the Ada compiler has been trying to eliminate as many 490 typedef definitions in the debugging information, since they generally 491 do not bring any extra information (we still use typedef under certain 492 circumstances related mostly to the GNAT encoding). 493 494 Unfortunately, we have seen situations where the debugging information 495 generated by the compiler leads to such multiple typedef layers. For 496 instance, consider the following example with stabs: 497 498 .stabs "pck__float_array___XUP:Tt(0,46)=s16P_ARRAY:(0,47)=[...]"[...] 499 .stabs "pck__float_array___XUP:t(0,36)=(0,46)",128,0,6,0 500 501 This is an error in the debugging information which causes type 502 pck__float_array___XUP to be defined twice, and the second time, 503 it is defined as a typedef of a typedef. 504 505 This is on the fringe of legality as far as debugging information is 506 concerned, and certainly unexpected. But it is easy to handle these 507 situations correctly, so we can afford to be lenient in this case. */ 508 509 static struct type * 510 ada_typedef_target_type (struct type *type) 511 { 512 while (TYPE_CODE (type) == TYPE_CODE_TYPEDEF) 513 type = TYPE_TARGET_TYPE (type); 514 return type; 515 } 516 517 /* Given DECODED_NAME a string holding a symbol name in its 518 decoded form (ie using the Ada dotted notation), returns 519 its unqualified name. */ 520 521 static const char * 522 ada_unqualified_name (const char *decoded_name) 523 { 524 const char *result; 525 526 /* If the decoded name starts with '<', it means that the encoded 527 name does not follow standard naming conventions, and thus that 528 it is not your typical Ada symbol name. Trying to unqualify it 529 is therefore pointless and possibly erroneous. */ 530 if (decoded_name[0] == '<') 531 return decoded_name; 532 533 result = strrchr (decoded_name, '.'); 534 if (result != NULL) 535 result++; /* Skip the dot... */ 536 else 537 result = decoded_name; 538 539 return result; 540 } 541 542 /* Return a string starting with '<', followed by STR, and '>'. 543 The result is good until the next call. */ 544 545 static char * 546 add_angle_brackets (const char *str) 547 { 548 static char *result = NULL; 549 550 xfree (result); 551 result = xstrprintf ("<%s>", str); 552 return result; 553 } 554 555 static char * 556 ada_get_gdb_completer_word_break_characters (void) 557 { 558 return ada_completer_word_break_characters; 559 } 560 561 /* Print an array element index using the Ada syntax. */ 562 563 static void 564 ada_print_array_index (struct value *index_value, struct ui_file *stream, 565 const struct value_print_options *options) 566 { 567 LA_VALUE_PRINT (index_value, stream, options); 568 fprintf_filtered (stream, " => "); 569 } 570 571 /* Assuming VECT points to an array of *SIZE objects of size 572 ELEMENT_SIZE, grow it to contain at least MIN_SIZE objects, 573 updating *SIZE as necessary and returning the (new) array. */ 574 575 void * 576 grow_vect (void *vect, size_t *size, size_t min_size, int element_size) 577 { 578 if (*size < min_size) 579 { 580 *size *= 2; 581 if (*size < min_size) 582 *size = min_size; 583 vect = xrealloc (vect, *size * element_size); 584 } 585 return vect; 586 } 587 588 /* True (non-zero) iff TARGET matches FIELD_NAME up to any trailing 589 suffix of FIELD_NAME beginning "___". */ 590 591 static int 592 field_name_match (const char *field_name, const char *target) 593 { 594 int len = strlen (target); 595 596 return 597 (strncmp (field_name, target, len) == 0 598 && (field_name[len] == '\0' 599 || (strncmp (field_name + len, "___", 3) == 0 600 && strcmp (field_name + strlen (field_name) - 6, 601 "___XVN") != 0))); 602 } 603 604 605 /* Assuming TYPE is a TYPE_CODE_STRUCT or a TYPE_CODE_TYPDEF to 606 a TYPE_CODE_STRUCT, find the field whose name matches FIELD_NAME, 607 and return its index. This function also handles fields whose name 608 have ___ suffixes because the compiler sometimes alters their name 609 by adding such a suffix to represent fields with certain constraints. 610 If the field could not be found, return a negative number if 611 MAYBE_MISSING is set. Otherwise raise an error. */ 612 613 int 614 ada_get_field_index (const struct type *type, const char *field_name, 615 int maybe_missing) 616 { 617 int fieldno; 618 struct type *struct_type = check_typedef ((struct type *) type); 619 620 for (fieldno = 0; fieldno < TYPE_NFIELDS (struct_type); fieldno++) 621 if (field_name_match (TYPE_FIELD_NAME (struct_type, fieldno), field_name)) 622 return fieldno; 623 624 if (!maybe_missing) 625 error (_("Unable to find field %s in struct %s. Aborting"), 626 field_name, TYPE_NAME (struct_type)); 627 628 return -1; 629 } 630 631 /* The length of the prefix of NAME prior to any "___" suffix. */ 632 633 int 634 ada_name_prefix_len (const char *name) 635 { 636 if (name == NULL) 637 return 0; 638 else 639 { 640 const char *p = strstr (name, "___"); 641 642 if (p == NULL) 643 return strlen (name); 644 else 645 return p - name; 646 } 647 } 648 649 /* Return non-zero if SUFFIX is a suffix of STR. 650 Return zero if STR is null. */ 651 652 static int 653 is_suffix (const char *str, const char *suffix) 654 { 655 int len1, len2; 656 657 if (str == NULL) 658 return 0; 659 len1 = strlen (str); 660 len2 = strlen (suffix); 661 return (len1 >= len2 && strcmp (str + len1 - len2, suffix) == 0); 662 } 663 664 /* The contents of value VAL, treated as a value of type TYPE. The 665 result is an lval in memory if VAL is. */ 666 667 static struct value * 668 coerce_unspec_val_to_type (struct value *val, struct type *type) 669 { 670 type = ada_check_typedef (type); 671 if (value_type (val) == type) 672 return val; 673 else 674 { 675 struct value *result; 676 677 /* Make sure that the object size is not unreasonable before 678 trying to allocate some memory for it. */ 679 ada_ensure_varsize_limit (type); 680 681 if (value_lazy (val) 682 || TYPE_LENGTH (type) > TYPE_LENGTH (value_type (val))) 683 result = allocate_value_lazy (type); 684 else 685 { 686 result = allocate_value (type); 687 value_contents_copy_raw (result, 0, val, 0, TYPE_LENGTH (type)); 688 } 689 set_value_component_location (result, val); 690 set_value_bitsize (result, value_bitsize (val)); 691 set_value_bitpos (result, value_bitpos (val)); 692 set_value_address (result, value_address (val)); 693 return result; 694 } 695 } 696 697 static const gdb_byte * 698 cond_offset_host (const gdb_byte *valaddr, long offset) 699 { 700 if (valaddr == NULL) 701 return NULL; 702 else 703 return valaddr + offset; 704 } 705 706 static CORE_ADDR 707 cond_offset_target (CORE_ADDR address, long offset) 708 { 709 if (address == 0) 710 return 0; 711 else 712 return address + offset; 713 } 714 715 /* Issue a warning (as for the definition of warning in utils.c, but 716 with exactly one argument rather than ...), unless the limit on the 717 number of warnings has passed during the evaluation of the current 718 expression. */ 719 720 /* FIXME: cagney/2004-10-10: This function is mimicking the behavior 721 provided by "complaint". */ 722 static void lim_warning (const char *format, ...) ATTRIBUTE_PRINTF (1, 2); 723 724 static void 725 lim_warning (const char *format, ...) 726 { 727 va_list args; 728 729 va_start (args, format); 730 warnings_issued += 1; 731 if (warnings_issued <= warning_limit) 732 vwarning (format, args); 733 734 va_end (args); 735 } 736 737 /* Issue an error if the size of an object of type T is unreasonable, 738 i.e. if it would be a bad idea to allocate a value of this type in 739 GDB. */ 740 741 void 742 ada_ensure_varsize_limit (const struct type *type) 743 { 744 if (TYPE_LENGTH (type) > varsize_limit) 745 error (_("object size is larger than varsize-limit")); 746 } 747 748 /* Maximum value of a SIZE-byte signed integer type. */ 749 static LONGEST 750 max_of_size (int size) 751 { 752 LONGEST top_bit = (LONGEST) 1 << (size * 8 - 2); 753 754 return top_bit | (top_bit - 1); 755 } 756 757 /* Minimum value of a SIZE-byte signed integer type. */ 758 static LONGEST 759 min_of_size (int size) 760 { 761 return -max_of_size (size) - 1; 762 } 763 764 /* Maximum value of a SIZE-byte unsigned integer type. */ 765 static ULONGEST 766 umax_of_size (int size) 767 { 768 ULONGEST top_bit = (ULONGEST) 1 << (size * 8 - 1); 769 770 return top_bit | (top_bit - 1); 771 } 772 773 /* Maximum value of integral type T, as a signed quantity. */ 774 static LONGEST 775 max_of_type (struct type *t) 776 { 777 if (TYPE_UNSIGNED (t)) 778 return (LONGEST) umax_of_size (TYPE_LENGTH (t)); 779 else 780 return max_of_size (TYPE_LENGTH (t)); 781 } 782 783 /* Minimum value of integral type T, as a signed quantity. */ 784 static LONGEST 785 min_of_type (struct type *t) 786 { 787 if (TYPE_UNSIGNED (t)) 788 return 0; 789 else 790 return min_of_size (TYPE_LENGTH (t)); 791 } 792 793 /* The largest value in the domain of TYPE, a discrete type, as an integer. */ 794 LONGEST 795 ada_discrete_type_high_bound (struct type *type) 796 { 797 type = resolve_dynamic_type (type, 0); 798 switch (TYPE_CODE (type)) 799 { 800 case TYPE_CODE_RANGE: 801 return TYPE_HIGH_BOUND (type); 802 case TYPE_CODE_ENUM: 803 return TYPE_FIELD_ENUMVAL (type, TYPE_NFIELDS (type) - 1); 804 case TYPE_CODE_BOOL: 805 return 1; 806 case TYPE_CODE_CHAR: 807 case TYPE_CODE_INT: 808 return max_of_type (type); 809 default: 810 error (_("Unexpected type in ada_discrete_type_high_bound.")); 811 } 812 } 813 814 /* The smallest value in the domain of TYPE, a discrete type, as an integer. */ 815 LONGEST 816 ada_discrete_type_low_bound (struct type *type) 817 { 818 type = resolve_dynamic_type (type, 0); 819 switch (TYPE_CODE (type)) 820 { 821 case TYPE_CODE_RANGE: 822 return TYPE_LOW_BOUND (type); 823 case TYPE_CODE_ENUM: 824 return TYPE_FIELD_ENUMVAL (type, 0); 825 case TYPE_CODE_BOOL: 826 return 0; 827 case TYPE_CODE_CHAR: 828 case TYPE_CODE_INT: 829 return min_of_type (type); 830 default: 831 error (_("Unexpected type in ada_discrete_type_low_bound.")); 832 } 833 } 834 835 /* The identity on non-range types. For range types, the underlying 836 non-range scalar type. */ 837 838 static struct type * 839 get_base_type (struct type *type) 840 { 841 while (type != NULL && TYPE_CODE (type) == TYPE_CODE_RANGE) 842 { 843 if (type == TYPE_TARGET_TYPE (type) || TYPE_TARGET_TYPE (type) == NULL) 844 return type; 845 type = TYPE_TARGET_TYPE (type); 846 } 847 return type; 848 } 849 850 /* Return a decoded version of the given VALUE. This means returning 851 a value whose type is obtained by applying all the GNAT-specific 852 encondings, making the resulting type a static but standard description 853 of the initial type. */ 854 855 struct value * 856 ada_get_decoded_value (struct value *value) 857 { 858 struct type *type = ada_check_typedef (value_type (value)); 859 860 if (ada_is_array_descriptor_type (type) 861 || (ada_is_constrained_packed_array_type (type) 862 && TYPE_CODE (type) != TYPE_CODE_PTR)) 863 { 864 if (TYPE_CODE (type) == TYPE_CODE_TYPEDEF) /* array access type. */ 865 value = ada_coerce_to_simple_array_ptr (value); 866 else 867 value = ada_coerce_to_simple_array (value); 868 } 869 else 870 value = ada_to_fixed_value (value); 871 872 return value; 873 } 874 875 /* Same as ada_get_decoded_value, but with the given TYPE. 876 Because there is no associated actual value for this type, 877 the resulting type might be a best-effort approximation in 878 the case of dynamic types. */ 879 880 struct type * 881 ada_get_decoded_type (struct type *type) 882 { 883 type = to_static_fixed_type (type); 884 if (ada_is_constrained_packed_array_type (type)) 885 type = ada_coerce_to_simple_array_type (type); 886 return type; 887 } 888 889 890 891 /* Language Selection */ 892 893 /* If the main program is in Ada, return language_ada, otherwise return LANG 894 (the main program is in Ada iif the adainit symbol is found). */ 895 896 enum language 897 ada_update_initial_language (enum language lang) 898 { 899 if (lookup_minimal_symbol ("adainit", (const char *) NULL, 900 (struct objfile *) NULL).minsym != NULL) 901 return language_ada; 902 903 return lang; 904 } 905 906 /* If the main procedure is written in Ada, then return its name. 907 The result is good until the next call. Return NULL if the main 908 procedure doesn't appear to be in Ada. */ 909 910 char * 911 ada_main_name (void) 912 { 913 struct bound_minimal_symbol msym; 914 static char *main_program_name = NULL; 915 916 /* For Ada, the name of the main procedure is stored in a specific 917 string constant, generated by the binder. Look for that symbol, 918 extract its address, and then read that string. If we didn't find 919 that string, then most probably the main procedure is not written 920 in Ada. */ 921 msym = lookup_minimal_symbol (ADA_MAIN_PROGRAM_SYMBOL_NAME, NULL, NULL); 922 923 if (msym.minsym != NULL) 924 { 925 CORE_ADDR main_program_name_addr; 926 int err_code; 927 928 main_program_name_addr = BMSYMBOL_VALUE_ADDRESS (msym); 929 if (main_program_name_addr == 0) 930 error (_("Invalid address for Ada main program name.")); 931 932 xfree (main_program_name); 933 target_read_string (main_program_name_addr, &main_program_name, 934 1024, &err_code); 935 936 if (err_code != 0) 937 return NULL; 938 return main_program_name; 939 } 940 941 /* The main procedure doesn't seem to be in Ada. */ 942 return NULL; 943 } 944 945 /* Symbols */ 946 947 /* Table of Ada operators and their GNAT-encoded names. Last entry is pair 948 of NULLs. */ 949 950 const struct ada_opname_map ada_opname_table[] = { 951 {"Oadd", "\"+\"", BINOP_ADD}, 952 {"Osubtract", "\"-\"", BINOP_SUB}, 953 {"Omultiply", "\"*\"", BINOP_MUL}, 954 {"Odivide", "\"/\"", BINOP_DIV}, 955 {"Omod", "\"mod\"", BINOP_MOD}, 956 {"Orem", "\"rem\"", BINOP_REM}, 957 {"Oexpon", "\"**\"", BINOP_EXP}, 958 {"Olt", "\"<\"", BINOP_LESS}, 959 {"Ole", "\"<=\"", BINOP_LEQ}, 960 {"Ogt", "\">\"", BINOP_GTR}, 961 {"Oge", "\">=\"", BINOP_GEQ}, 962 {"Oeq", "\"=\"", BINOP_EQUAL}, 963 {"One", "\"/=\"", BINOP_NOTEQUAL}, 964 {"Oand", "\"and\"", BINOP_BITWISE_AND}, 965 {"Oor", "\"or\"", BINOP_BITWISE_IOR}, 966 {"Oxor", "\"xor\"", BINOP_BITWISE_XOR}, 967 {"Oconcat", "\"&\"", BINOP_CONCAT}, 968 {"Oabs", "\"abs\"", UNOP_ABS}, 969 {"Onot", "\"not\"", UNOP_LOGICAL_NOT}, 970 {"Oadd", "\"+\"", UNOP_PLUS}, 971 {"Osubtract", "\"-\"", UNOP_NEG}, 972 {NULL, NULL} 973 }; 974 975 /* The "encoded" form of DECODED, according to GNAT conventions. 976 The result is valid until the next call to ada_encode. */ 977 978 char * 979 ada_encode (const char *decoded) 980 { 981 static char *encoding_buffer = NULL; 982 static size_t encoding_buffer_size = 0; 983 const char *p; 984 int k; 985 986 if (decoded == NULL) 987 return NULL; 988 989 GROW_VECT (encoding_buffer, encoding_buffer_size, 990 2 * strlen (decoded) + 10); 991 992 k = 0; 993 for (p = decoded; *p != '\0'; p += 1) 994 { 995 if (*p == '.') 996 { 997 encoding_buffer[k] = encoding_buffer[k + 1] = '_'; 998 k += 2; 999 } 1000 else if (*p == '"') 1001 { 1002 const struct ada_opname_map *mapping; 1003 1004 for (mapping = ada_opname_table; 1005 mapping->encoded != NULL 1006 && strncmp (mapping->decoded, p, 1007 strlen (mapping->decoded)) != 0; mapping += 1) 1008 ; 1009 if (mapping->encoded == NULL) 1010 error (_("invalid Ada operator name: %s"), p); 1011 strcpy (encoding_buffer + k, mapping->encoded); 1012 k += strlen (mapping->encoded); 1013 break; 1014 } 1015 else 1016 { 1017 encoding_buffer[k] = *p; 1018 k += 1; 1019 } 1020 } 1021 1022 encoding_buffer[k] = '\0'; 1023 return encoding_buffer; 1024 } 1025 1026 /* Return NAME folded to lower case, or, if surrounded by single 1027 quotes, unfolded, but with the quotes stripped away. Result good 1028 to next call. */ 1029 1030 char * 1031 ada_fold_name (const char *name) 1032 { 1033 static char *fold_buffer = NULL; 1034 static size_t fold_buffer_size = 0; 1035 1036 int len = strlen (name); 1037 GROW_VECT (fold_buffer, fold_buffer_size, len + 1); 1038 1039 if (name[0] == '\'') 1040 { 1041 strncpy (fold_buffer, name + 1, len - 2); 1042 fold_buffer[len - 2] = '\000'; 1043 } 1044 else 1045 { 1046 int i; 1047 1048 for (i = 0; i <= len; i += 1) 1049 fold_buffer[i] = tolower (name[i]); 1050 } 1051 1052 return fold_buffer; 1053 } 1054 1055 /* Return nonzero if C is either a digit or a lowercase alphabet character. */ 1056 1057 static int 1058 is_lower_alphanum (const char c) 1059 { 1060 return (isdigit (c) || (isalpha (c) && islower (c))); 1061 } 1062 1063 /* ENCODED is the linkage name of a symbol and LEN contains its length. 1064 This function saves in LEN the length of that same symbol name but 1065 without either of these suffixes: 1066 . .{DIGIT}+ 1067 . ${DIGIT}+ 1068 . ___{DIGIT}+ 1069 . __{DIGIT}+. 1070 1071 These are suffixes introduced by the compiler for entities such as 1072 nested subprogram for instance, in order to avoid name clashes. 1073 They do not serve any purpose for the debugger. */ 1074 1075 static void 1076 ada_remove_trailing_digits (const char *encoded, int *len) 1077 { 1078 if (*len > 1 && isdigit (encoded[*len - 1])) 1079 { 1080 int i = *len - 2; 1081 1082 while (i > 0 && isdigit (encoded[i])) 1083 i--; 1084 if (i >= 0 && encoded[i] == '.') 1085 *len = i; 1086 else if (i >= 0 && encoded[i] == '$') 1087 *len = i; 1088 else if (i >= 2 && strncmp (encoded + i - 2, "___", 3) == 0) 1089 *len = i - 2; 1090 else if (i >= 1 && strncmp (encoded + i - 1, "__", 2) == 0) 1091 *len = i - 1; 1092 } 1093 } 1094 1095 /* Remove the suffix introduced by the compiler for protected object 1096 subprograms. */ 1097 1098 static void 1099 ada_remove_po_subprogram_suffix (const char *encoded, int *len) 1100 { 1101 /* Remove trailing N. */ 1102 1103 /* Protected entry subprograms are broken into two 1104 separate subprograms: The first one is unprotected, and has 1105 a 'N' suffix; the second is the protected version, and has 1106 the 'P' suffix. The second calls the first one after handling 1107 the protection. Since the P subprograms are internally generated, 1108 we leave these names undecoded, giving the user a clue that this 1109 entity is internal. */ 1110 1111 if (*len > 1 1112 && encoded[*len - 1] == 'N' 1113 && (isdigit (encoded[*len - 2]) || islower (encoded[*len - 2]))) 1114 *len = *len - 1; 1115 } 1116 1117 /* Remove trailing X[bn]* suffixes (indicating names in package bodies). */ 1118 1119 static void 1120 ada_remove_Xbn_suffix (const char *encoded, int *len) 1121 { 1122 int i = *len - 1; 1123 1124 while (i > 0 && (encoded[i] == 'b' || encoded[i] == 'n')) 1125 i--; 1126 1127 if (encoded[i] != 'X') 1128 return; 1129 1130 if (i == 0) 1131 return; 1132 1133 if (isalnum (encoded[i-1])) 1134 *len = i; 1135 } 1136 1137 /* If ENCODED follows the GNAT entity encoding conventions, then return 1138 the decoded form of ENCODED. Otherwise, return "<%s>" where "%s" is 1139 replaced by ENCODED. 1140 1141 The resulting string is valid until the next call of ada_decode. 1142 If the string is unchanged by decoding, the original string pointer 1143 is returned. */ 1144 1145 const char * 1146 ada_decode (const char *encoded) 1147 { 1148 int i, j; 1149 int len0; 1150 const char *p; 1151 char *decoded; 1152 int at_start_name; 1153 static char *decoding_buffer = NULL; 1154 static size_t decoding_buffer_size = 0; 1155 1156 /* The name of the Ada main procedure starts with "_ada_". 1157 This prefix is not part of the decoded name, so skip this part 1158 if we see this prefix. */ 1159 if (strncmp (encoded, "_ada_", 5) == 0) 1160 encoded += 5; 1161 1162 /* If the name starts with '_', then it is not a properly encoded 1163 name, so do not attempt to decode it. Similarly, if the name 1164 starts with '<', the name should not be decoded. */ 1165 if (encoded[0] == '_' || encoded[0] == '<') 1166 goto Suppress; 1167 1168 len0 = strlen (encoded); 1169 1170 ada_remove_trailing_digits (encoded, &len0); 1171 ada_remove_po_subprogram_suffix (encoded, &len0); 1172 1173 /* Remove the ___X.* suffix if present. Do not forget to verify that 1174 the suffix is located before the current "end" of ENCODED. We want 1175 to avoid re-matching parts of ENCODED that have previously been 1176 marked as discarded (by decrementing LEN0). */ 1177 p = strstr (encoded, "___"); 1178 if (p != NULL && p - encoded < len0 - 3) 1179 { 1180 if (p[3] == 'X') 1181 len0 = p - encoded; 1182 else 1183 goto Suppress; 1184 } 1185 1186 /* Remove any trailing TKB suffix. It tells us that this symbol 1187 is for the body of a task, but that information does not actually 1188 appear in the decoded name. */ 1189 1190 if (len0 > 3 && strncmp (encoded + len0 - 3, "TKB", 3) == 0) 1191 len0 -= 3; 1192 1193 /* Remove any trailing TB suffix. The TB suffix is slightly different 1194 from the TKB suffix because it is used for non-anonymous task 1195 bodies. */ 1196 1197 if (len0 > 2 && strncmp (encoded + len0 - 2, "TB", 2) == 0) 1198 len0 -= 2; 1199 1200 /* Remove trailing "B" suffixes. */ 1201 /* FIXME: brobecker/2006-04-19: Not sure what this are used for... */ 1202 1203 if (len0 > 1 && strncmp (encoded + len0 - 1, "B", 1) == 0) 1204 len0 -= 1; 1205 1206 /* Make decoded big enough for possible expansion by operator name. */ 1207 1208 GROW_VECT (decoding_buffer, decoding_buffer_size, 2 * len0 + 1); 1209 decoded = decoding_buffer; 1210 1211 /* Remove trailing __{digit}+ or trailing ${digit}+. */ 1212 1213 if (len0 > 1 && isdigit (encoded[len0 - 1])) 1214 { 1215 i = len0 - 2; 1216 while ((i >= 0 && isdigit (encoded[i])) 1217 || (i >= 1 && encoded[i] == '_' && isdigit (encoded[i - 1]))) 1218 i -= 1; 1219 if (i > 1 && encoded[i] == '_' && encoded[i - 1] == '_') 1220 len0 = i - 1; 1221 else if (encoded[i] == '$') 1222 len0 = i; 1223 } 1224 1225 /* The first few characters that are not alphabetic are not part 1226 of any encoding we use, so we can copy them over verbatim. */ 1227 1228 for (i = 0, j = 0; i < len0 && !isalpha (encoded[i]); i += 1, j += 1) 1229 decoded[j] = encoded[i]; 1230 1231 at_start_name = 1; 1232 while (i < len0) 1233 { 1234 /* Is this a symbol function? */ 1235 if (at_start_name && encoded[i] == 'O') 1236 { 1237 int k; 1238 1239 for (k = 0; ada_opname_table[k].encoded != NULL; k += 1) 1240 { 1241 int op_len = strlen (ada_opname_table[k].encoded); 1242 if ((strncmp (ada_opname_table[k].encoded + 1, encoded + i + 1, 1243 op_len - 1) == 0) 1244 && !isalnum (encoded[i + op_len])) 1245 { 1246 strcpy (decoded + j, ada_opname_table[k].decoded); 1247 at_start_name = 0; 1248 i += op_len; 1249 j += strlen (ada_opname_table[k].decoded); 1250 break; 1251 } 1252 } 1253 if (ada_opname_table[k].encoded != NULL) 1254 continue; 1255 } 1256 at_start_name = 0; 1257 1258 /* Replace "TK__" with "__", which will eventually be translated 1259 into "." (just below). */ 1260 1261 if (i < len0 - 4 && strncmp (encoded + i, "TK__", 4) == 0) 1262 i += 2; 1263 1264 /* Replace "__B_{DIGITS}+__" sequences by "__", which will eventually 1265 be translated into "." (just below). These are internal names 1266 generated for anonymous blocks inside which our symbol is nested. */ 1267 1268 if (len0 - i > 5 && encoded [i] == '_' && encoded [i+1] == '_' 1269 && encoded [i+2] == 'B' && encoded [i+3] == '_' 1270 && isdigit (encoded [i+4])) 1271 { 1272 int k = i + 5; 1273 1274 while (k < len0 && isdigit (encoded[k])) 1275 k++; /* Skip any extra digit. */ 1276 1277 /* Double-check that the "__B_{DIGITS}+" sequence we found 1278 is indeed followed by "__". */ 1279 if (len0 - k > 2 && encoded [k] == '_' && encoded [k+1] == '_') 1280 i = k; 1281 } 1282 1283 /* Remove _E{DIGITS}+[sb] */ 1284 1285 /* Just as for protected object subprograms, there are 2 categories 1286 of subprograms created by the compiler for each entry. The first 1287 one implements the actual entry code, and has a suffix following 1288 the convention above; the second one implements the barrier and 1289 uses the same convention as above, except that the 'E' is replaced 1290 by a 'B'. 1291 1292 Just as above, we do not decode the name of barrier functions 1293 to give the user a clue that the code he is debugging has been 1294 internally generated. */ 1295 1296 if (len0 - i > 3 && encoded [i] == '_' && encoded[i+1] == 'E' 1297 && isdigit (encoded[i+2])) 1298 { 1299 int k = i + 3; 1300 1301 while (k < len0 && isdigit (encoded[k])) 1302 k++; 1303 1304 if (k < len0 1305 && (encoded[k] == 'b' || encoded[k] == 's')) 1306 { 1307 k++; 1308 /* Just as an extra precaution, make sure that if this 1309 suffix is followed by anything else, it is a '_'. 1310 Otherwise, we matched this sequence by accident. */ 1311 if (k == len0 1312 || (k < len0 && encoded[k] == '_')) 1313 i = k; 1314 } 1315 } 1316 1317 /* Remove trailing "N" in [a-z0-9]+N__. The N is added by 1318 the GNAT front-end in protected object subprograms. */ 1319 1320 if (i < len0 + 3 1321 && encoded[i] == 'N' && encoded[i+1] == '_' && encoded[i+2] == '_') 1322 { 1323 /* Backtrack a bit up until we reach either the begining of 1324 the encoded name, or "__". Make sure that we only find 1325 digits or lowercase characters. */ 1326 const char *ptr = encoded + i - 1; 1327 1328 while (ptr >= encoded && is_lower_alphanum (ptr[0])) 1329 ptr--; 1330 if (ptr < encoded 1331 || (ptr > encoded && ptr[0] == '_' && ptr[-1] == '_')) 1332 i++; 1333 } 1334 1335 if (encoded[i] == 'X' && i != 0 && isalnum (encoded[i - 1])) 1336 { 1337 /* This is a X[bn]* sequence not separated from the previous 1338 part of the name with a non-alpha-numeric character (in other 1339 words, immediately following an alpha-numeric character), then 1340 verify that it is placed at the end of the encoded name. If 1341 not, then the encoding is not valid and we should abort the 1342 decoding. Otherwise, just skip it, it is used in body-nested 1343 package names. */ 1344 do 1345 i += 1; 1346 while (i < len0 && (encoded[i] == 'b' || encoded[i] == 'n')); 1347 if (i < len0) 1348 goto Suppress; 1349 } 1350 else if (i < len0 - 2 && encoded[i] == '_' && encoded[i + 1] == '_') 1351 { 1352 /* Replace '__' by '.'. */ 1353 decoded[j] = '.'; 1354 at_start_name = 1; 1355 i += 2; 1356 j += 1; 1357 } 1358 else 1359 { 1360 /* It's a character part of the decoded name, so just copy it 1361 over. */ 1362 decoded[j] = encoded[i]; 1363 i += 1; 1364 j += 1; 1365 } 1366 } 1367 decoded[j] = '\000'; 1368 1369 /* Decoded names should never contain any uppercase character. 1370 Double-check this, and abort the decoding if we find one. */ 1371 1372 for (i = 0; decoded[i] != '\0'; i += 1) 1373 if (isupper (decoded[i]) || decoded[i] == ' ') 1374 goto Suppress; 1375 1376 if (strcmp (decoded, encoded) == 0) 1377 return encoded; 1378 else 1379 return decoded; 1380 1381 Suppress: 1382 GROW_VECT (decoding_buffer, decoding_buffer_size, strlen (encoded) + 3); 1383 decoded = decoding_buffer; 1384 if (encoded[0] == '<') 1385 strcpy (decoded, encoded); 1386 else 1387 xsnprintf (decoded, decoding_buffer_size, "<%s>", encoded); 1388 return decoded; 1389 1390 } 1391 1392 /* Table for keeping permanent unique copies of decoded names. Once 1393 allocated, names in this table are never released. While this is a 1394 storage leak, it should not be significant unless there are massive 1395 changes in the set of decoded names in successive versions of a 1396 symbol table loaded during a single session. */ 1397 static struct htab *decoded_names_store; 1398 1399 /* Returns the decoded name of GSYMBOL, as for ada_decode, caching it 1400 in the language-specific part of GSYMBOL, if it has not been 1401 previously computed. Tries to save the decoded name in the same 1402 obstack as GSYMBOL, if possible, and otherwise on the heap (so that, 1403 in any case, the decoded symbol has a lifetime at least that of 1404 GSYMBOL). 1405 The GSYMBOL parameter is "mutable" in the C++ sense: logically 1406 const, but nevertheless modified to a semantically equivalent form 1407 when a decoded name is cached in it. */ 1408 1409 const char * 1410 ada_decode_symbol (const struct general_symbol_info *arg) 1411 { 1412 struct general_symbol_info *gsymbol = (struct general_symbol_info *) arg; 1413 const char **resultp = 1414 &gsymbol->language_specific.mangled_lang.demangled_name; 1415 1416 if (!gsymbol->ada_mangled) 1417 { 1418 const char *decoded = ada_decode (gsymbol->name); 1419 struct obstack *obstack = gsymbol->language_specific.obstack; 1420 1421 gsymbol->ada_mangled = 1; 1422 1423 if (obstack != NULL) 1424 *resultp = obstack_copy0 (obstack, decoded, strlen (decoded)); 1425 else 1426 { 1427 /* Sometimes, we can't find a corresponding objfile, in 1428 which case, we put the result on the heap. Since we only 1429 decode when needed, we hope this usually does not cause a 1430 significant memory leak (FIXME). */ 1431 1432 char **slot = (char **) htab_find_slot (decoded_names_store, 1433 decoded, INSERT); 1434 1435 if (*slot == NULL) 1436 *slot = xstrdup (decoded); 1437 *resultp = *slot; 1438 } 1439 } 1440 1441 return *resultp; 1442 } 1443 1444 static char * 1445 ada_la_decode (const char *encoded, int options) 1446 { 1447 return xstrdup (ada_decode (encoded)); 1448 } 1449 1450 /* Returns non-zero iff SYM_NAME matches NAME, ignoring any trailing 1451 suffixes that encode debugging information or leading _ada_ on 1452 SYM_NAME (see is_name_suffix commentary for the debugging 1453 information that is ignored). If WILD, then NAME need only match a 1454 suffix of SYM_NAME minus the same suffixes. Also returns 0 if 1455 either argument is NULL. */ 1456 1457 static int 1458 match_name (const char *sym_name, const char *name, int wild) 1459 { 1460 if (sym_name == NULL || name == NULL) 1461 return 0; 1462 else if (wild) 1463 return wild_match (sym_name, name) == 0; 1464 else 1465 { 1466 int len_name = strlen (name); 1467 1468 return (strncmp (sym_name, name, len_name) == 0 1469 && is_name_suffix (sym_name + len_name)) 1470 || (strncmp (sym_name, "_ada_", 5) == 0 1471 && strncmp (sym_name + 5, name, len_name) == 0 1472 && is_name_suffix (sym_name + len_name + 5)); 1473 } 1474 } 1475 1476 1477 /* Arrays */ 1478 1479 /* Assuming that INDEX_DESC_TYPE is an ___XA structure, a structure 1480 generated by the GNAT compiler to describe the index type used 1481 for each dimension of an array, check whether it follows the latest 1482 known encoding. If not, fix it up to conform to the latest encoding. 1483 Otherwise, do nothing. This function also does nothing if 1484 INDEX_DESC_TYPE is NULL. 1485 1486 The GNAT encoding used to describle the array index type evolved a bit. 1487 Initially, the information would be provided through the name of each 1488 field of the structure type only, while the type of these fields was 1489 described as unspecified and irrelevant. The debugger was then expected 1490 to perform a global type lookup using the name of that field in order 1491 to get access to the full index type description. Because these global 1492 lookups can be very expensive, the encoding was later enhanced to make 1493 the global lookup unnecessary by defining the field type as being 1494 the full index type description. 1495 1496 The purpose of this routine is to allow us to support older versions 1497 of the compiler by detecting the use of the older encoding, and by 1498 fixing up the INDEX_DESC_TYPE to follow the new one (at this point, 1499 we essentially replace each field's meaningless type by the associated 1500 index subtype). */ 1501 1502 void 1503 ada_fixup_array_indexes_type (struct type *index_desc_type) 1504 { 1505 int i; 1506 1507 if (index_desc_type == NULL) 1508 return; 1509 gdb_assert (TYPE_NFIELDS (index_desc_type) > 0); 1510 1511 /* Check if INDEX_DESC_TYPE follows the older encoding (it is sufficient 1512 to check one field only, no need to check them all). If not, return 1513 now. 1514 1515 If our INDEX_DESC_TYPE was generated using the older encoding, 1516 the field type should be a meaningless integer type whose name 1517 is not equal to the field name. */ 1518 if (TYPE_NAME (TYPE_FIELD_TYPE (index_desc_type, 0)) != NULL 1519 && strcmp (TYPE_NAME (TYPE_FIELD_TYPE (index_desc_type, 0)), 1520 TYPE_FIELD_NAME (index_desc_type, 0)) == 0) 1521 return; 1522 1523 /* Fixup each field of INDEX_DESC_TYPE. */ 1524 for (i = 0; i < TYPE_NFIELDS (index_desc_type); i++) 1525 { 1526 const char *name = TYPE_FIELD_NAME (index_desc_type, i); 1527 struct type *raw_type = ada_check_typedef (ada_find_any_type (name)); 1528 1529 if (raw_type) 1530 TYPE_FIELD_TYPE (index_desc_type, i) = raw_type; 1531 } 1532 } 1533 1534 /* Names of MAX_ADA_DIMENS bounds in P_BOUNDS fields of array descriptors. */ 1535 1536 static char *bound_name[] = { 1537 "LB0", "UB0", "LB1", "UB1", "LB2", "UB2", "LB3", "UB3", 1538 "LB4", "UB4", "LB5", "UB5", "LB6", "UB6", "LB7", "UB7" 1539 }; 1540 1541 /* Maximum number of array dimensions we are prepared to handle. */ 1542 1543 #define MAX_ADA_DIMENS (sizeof(bound_name) / (2*sizeof(char *))) 1544 1545 1546 /* The desc_* routines return primitive portions of array descriptors 1547 (fat pointers). */ 1548 1549 /* The descriptor or array type, if any, indicated by TYPE; removes 1550 level of indirection, if needed. */ 1551 1552 static struct type * 1553 desc_base_type (struct type *type) 1554 { 1555 if (type == NULL) 1556 return NULL; 1557 type = ada_check_typedef (type); 1558 if (TYPE_CODE (type) == TYPE_CODE_TYPEDEF) 1559 type = ada_typedef_target_type (type); 1560 1561 if (type != NULL 1562 && (TYPE_CODE (type) == TYPE_CODE_PTR 1563 || TYPE_CODE (type) == TYPE_CODE_REF)) 1564 return ada_check_typedef (TYPE_TARGET_TYPE (type)); 1565 else 1566 return type; 1567 } 1568 1569 /* True iff TYPE indicates a "thin" array pointer type. */ 1570 1571 static int 1572 is_thin_pntr (struct type *type) 1573 { 1574 return 1575 is_suffix (ada_type_name (desc_base_type (type)), "___XUT") 1576 || is_suffix (ada_type_name (desc_base_type (type)), "___XUT___XVE"); 1577 } 1578 1579 /* The descriptor type for thin pointer type TYPE. */ 1580 1581 static struct type * 1582 thin_descriptor_type (struct type *type) 1583 { 1584 struct type *base_type = desc_base_type (type); 1585 1586 if (base_type == NULL) 1587 return NULL; 1588 if (is_suffix (ada_type_name (base_type), "___XVE")) 1589 return base_type; 1590 else 1591 { 1592 struct type *alt_type = ada_find_parallel_type (base_type, "___XVE"); 1593 1594 if (alt_type == NULL) 1595 return base_type; 1596 else 1597 return alt_type; 1598 } 1599 } 1600 1601 /* A pointer to the array data for thin-pointer value VAL. */ 1602 1603 static struct value * 1604 thin_data_pntr (struct value *val) 1605 { 1606 struct type *type = ada_check_typedef (value_type (val)); 1607 struct type *data_type = desc_data_target_type (thin_descriptor_type (type)); 1608 1609 data_type = lookup_pointer_type (data_type); 1610 1611 if (TYPE_CODE (type) == TYPE_CODE_PTR) 1612 return value_cast (data_type, value_copy (val)); 1613 else 1614 return value_from_longest (data_type, value_address (val)); 1615 } 1616 1617 /* True iff TYPE indicates a "thick" array pointer type. */ 1618 1619 static int 1620 is_thick_pntr (struct type *type) 1621 { 1622 type = desc_base_type (type); 1623 return (type != NULL && TYPE_CODE (type) == TYPE_CODE_STRUCT 1624 && lookup_struct_elt_type (type, "P_BOUNDS", 1) != NULL); 1625 } 1626 1627 /* If TYPE is the type of an array descriptor (fat or thin pointer) or a 1628 pointer to one, the type of its bounds data; otherwise, NULL. */ 1629 1630 static struct type * 1631 desc_bounds_type (struct type *type) 1632 { 1633 struct type *r; 1634 1635 type = desc_base_type (type); 1636 1637 if (type == NULL) 1638 return NULL; 1639 else if (is_thin_pntr (type)) 1640 { 1641 type = thin_descriptor_type (type); 1642 if (type == NULL) 1643 return NULL; 1644 r = lookup_struct_elt_type (type, "BOUNDS", 1); 1645 if (r != NULL) 1646 return ada_check_typedef (r); 1647 } 1648 else if (TYPE_CODE (type) == TYPE_CODE_STRUCT) 1649 { 1650 r = lookup_struct_elt_type (type, "P_BOUNDS", 1); 1651 if (r != NULL) 1652 return ada_check_typedef (TYPE_TARGET_TYPE (ada_check_typedef (r))); 1653 } 1654 return NULL; 1655 } 1656 1657 /* If ARR is an array descriptor (fat or thin pointer), or pointer to 1658 one, a pointer to its bounds data. Otherwise NULL. */ 1659 1660 static struct value * 1661 desc_bounds (struct value *arr) 1662 { 1663 struct type *type = ada_check_typedef (value_type (arr)); 1664 1665 if (is_thin_pntr (type)) 1666 { 1667 struct type *bounds_type = 1668 desc_bounds_type (thin_descriptor_type (type)); 1669 LONGEST addr; 1670 1671 if (bounds_type == NULL) 1672 error (_("Bad GNAT array descriptor")); 1673 1674 /* NOTE: The following calculation is not really kosher, but 1675 since desc_type is an XVE-encoded type (and shouldn't be), 1676 the correct calculation is a real pain. FIXME (and fix GCC). */ 1677 if (TYPE_CODE (type) == TYPE_CODE_PTR) 1678 addr = value_as_long (arr); 1679 else 1680 addr = value_address (arr); 1681 1682 return 1683 value_from_longest (lookup_pointer_type (bounds_type), 1684 addr - TYPE_LENGTH (bounds_type)); 1685 } 1686 1687 else if (is_thick_pntr (type)) 1688 { 1689 struct value *p_bounds = value_struct_elt (&arr, NULL, "P_BOUNDS", NULL, 1690 _("Bad GNAT array descriptor")); 1691 struct type *p_bounds_type = value_type (p_bounds); 1692 1693 if (p_bounds_type 1694 && TYPE_CODE (p_bounds_type) == TYPE_CODE_PTR) 1695 { 1696 struct type *target_type = TYPE_TARGET_TYPE (p_bounds_type); 1697 1698 if (TYPE_STUB (target_type)) 1699 p_bounds = value_cast (lookup_pointer_type 1700 (ada_check_typedef (target_type)), 1701 p_bounds); 1702 } 1703 else 1704 error (_("Bad GNAT array descriptor")); 1705 1706 return p_bounds; 1707 } 1708 else 1709 return NULL; 1710 } 1711 1712 /* If TYPE is the type of an array-descriptor (fat pointer), the bit 1713 position of the field containing the address of the bounds data. */ 1714 1715 static int 1716 fat_pntr_bounds_bitpos (struct type *type) 1717 { 1718 return TYPE_FIELD_BITPOS (desc_base_type (type), 1); 1719 } 1720 1721 /* If TYPE is the type of an array-descriptor (fat pointer), the bit 1722 size of the field containing the address of the bounds data. */ 1723 1724 static int 1725 fat_pntr_bounds_bitsize (struct type *type) 1726 { 1727 type = desc_base_type (type); 1728 1729 if (TYPE_FIELD_BITSIZE (type, 1) > 0) 1730 return TYPE_FIELD_BITSIZE (type, 1); 1731 else 1732 return 8 * TYPE_LENGTH (ada_check_typedef (TYPE_FIELD_TYPE (type, 1))); 1733 } 1734 1735 /* If TYPE is the type of an array descriptor (fat or thin pointer) or a 1736 pointer to one, the type of its array data (a array-with-no-bounds type); 1737 otherwise, NULL. Use ada_type_of_array to get an array type with bounds 1738 data. */ 1739 1740 static struct type * 1741 desc_data_target_type (struct type *type) 1742 { 1743 type = desc_base_type (type); 1744 1745 /* NOTE: The following is bogus; see comment in desc_bounds. */ 1746 if (is_thin_pntr (type)) 1747 return desc_base_type (TYPE_FIELD_TYPE (thin_descriptor_type (type), 1)); 1748 else if (is_thick_pntr (type)) 1749 { 1750 struct type *data_type = lookup_struct_elt_type (type, "P_ARRAY", 1); 1751 1752 if (data_type 1753 && TYPE_CODE (ada_check_typedef (data_type)) == TYPE_CODE_PTR) 1754 return ada_check_typedef (TYPE_TARGET_TYPE (data_type)); 1755 } 1756 1757 return NULL; 1758 } 1759 1760 /* If ARR is an array descriptor (fat or thin pointer), a pointer to 1761 its array data. */ 1762 1763 static struct value * 1764 desc_data (struct value *arr) 1765 { 1766 struct type *type = value_type (arr); 1767 1768 if (is_thin_pntr (type)) 1769 return thin_data_pntr (arr); 1770 else if (is_thick_pntr (type)) 1771 return value_struct_elt (&arr, NULL, "P_ARRAY", NULL, 1772 _("Bad GNAT array descriptor")); 1773 else 1774 return NULL; 1775 } 1776 1777 1778 /* If TYPE is the type of an array-descriptor (fat pointer), the bit 1779 position of the field containing the address of the data. */ 1780 1781 static int 1782 fat_pntr_data_bitpos (struct type *type) 1783 { 1784 return TYPE_FIELD_BITPOS (desc_base_type (type), 0); 1785 } 1786 1787 /* If TYPE is the type of an array-descriptor (fat pointer), the bit 1788 size of the field containing the address of the data. */ 1789 1790 static int 1791 fat_pntr_data_bitsize (struct type *type) 1792 { 1793 type = desc_base_type (type); 1794 1795 if (TYPE_FIELD_BITSIZE (type, 0) > 0) 1796 return TYPE_FIELD_BITSIZE (type, 0); 1797 else 1798 return TARGET_CHAR_BIT * TYPE_LENGTH (TYPE_FIELD_TYPE (type, 0)); 1799 } 1800 1801 /* If BOUNDS is an array-bounds structure (or pointer to one), return 1802 the Ith lower bound stored in it, if WHICH is 0, and the Ith upper 1803 bound, if WHICH is 1. The first bound is I=1. */ 1804 1805 static struct value * 1806 desc_one_bound (struct value *bounds, int i, int which) 1807 { 1808 return value_struct_elt (&bounds, NULL, bound_name[2 * i + which - 2], NULL, 1809 _("Bad GNAT array descriptor bounds")); 1810 } 1811 1812 /* If BOUNDS is an array-bounds structure type, return the bit position 1813 of the Ith lower bound stored in it, if WHICH is 0, and the Ith upper 1814 bound, if WHICH is 1. The first bound is I=1. */ 1815 1816 static int 1817 desc_bound_bitpos (struct type *type, int i, int which) 1818 { 1819 return TYPE_FIELD_BITPOS (desc_base_type (type), 2 * i + which - 2); 1820 } 1821 1822 /* If BOUNDS is an array-bounds structure type, return the bit field size 1823 of the Ith lower bound stored in it, if WHICH is 0, and the Ith upper 1824 bound, if WHICH is 1. The first bound is I=1. */ 1825 1826 static int 1827 desc_bound_bitsize (struct type *type, int i, int which) 1828 { 1829 type = desc_base_type (type); 1830 1831 if (TYPE_FIELD_BITSIZE (type, 2 * i + which - 2) > 0) 1832 return TYPE_FIELD_BITSIZE (type, 2 * i + which - 2); 1833 else 1834 return 8 * TYPE_LENGTH (TYPE_FIELD_TYPE (type, 2 * i + which - 2)); 1835 } 1836 1837 /* If TYPE is the type of an array-bounds structure, the type of its 1838 Ith bound (numbering from 1). Otherwise, NULL. */ 1839 1840 static struct type * 1841 desc_index_type (struct type *type, int i) 1842 { 1843 type = desc_base_type (type); 1844 1845 if (TYPE_CODE (type) == TYPE_CODE_STRUCT) 1846 return lookup_struct_elt_type (type, bound_name[2 * i - 2], 1); 1847 else 1848 return NULL; 1849 } 1850 1851 /* The number of index positions in the array-bounds type TYPE. 1852 Return 0 if TYPE is NULL. */ 1853 1854 static int 1855 desc_arity (struct type *type) 1856 { 1857 type = desc_base_type (type); 1858 1859 if (type != NULL) 1860 return TYPE_NFIELDS (type) / 2; 1861 return 0; 1862 } 1863 1864 /* Non-zero iff TYPE is a simple array type (not a pointer to one) or 1865 an array descriptor type (representing an unconstrained array 1866 type). */ 1867 1868 static int 1869 ada_is_direct_array_type (struct type *type) 1870 { 1871 if (type == NULL) 1872 return 0; 1873 type = ada_check_typedef (type); 1874 return (TYPE_CODE (type) == TYPE_CODE_ARRAY 1875 || ada_is_array_descriptor_type (type)); 1876 } 1877 1878 /* Non-zero iff TYPE represents any kind of array in Ada, or a pointer 1879 * to one. */ 1880 1881 static int 1882 ada_is_array_type (struct type *type) 1883 { 1884 while (type != NULL 1885 && (TYPE_CODE (type) == TYPE_CODE_PTR 1886 || TYPE_CODE (type) == TYPE_CODE_REF)) 1887 type = TYPE_TARGET_TYPE (type); 1888 return ada_is_direct_array_type (type); 1889 } 1890 1891 /* Non-zero iff TYPE is a simple array type or pointer to one. */ 1892 1893 int 1894 ada_is_simple_array_type (struct type *type) 1895 { 1896 if (type == NULL) 1897 return 0; 1898 type = ada_check_typedef (type); 1899 return (TYPE_CODE (type) == TYPE_CODE_ARRAY 1900 || (TYPE_CODE (type) == TYPE_CODE_PTR 1901 && TYPE_CODE (ada_check_typedef (TYPE_TARGET_TYPE (type))) 1902 == TYPE_CODE_ARRAY)); 1903 } 1904 1905 /* Non-zero iff TYPE belongs to a GNAT array descriptor. */ 1906 1907 int 1908 ada_is_array_descriptor_type (struct type *type) 1909 { 1910 struct type *data_type = desc_data_target_type (type); 1911 1912 if (type == NULL) 1913 return 0; 1914 type = ada_check_typedef (type); 1915 return (data_type != NULL 1916 && TYPE_CODE (data_type) == TYPE_CODE_ARRAY 1917 && desc_arity (desc_bounds_type (type)) > 0); 1918 } 1919 1920 /* Non-zero iff type is a partially mal-formed GNAT array 1921 descriptor. FIXME: This is to compensate for some problems with 1922 debugging output from GNAT. Re-examine periodically to see if it 1923 is still needed. */ 1924 1925 int 1926 ada_is_bogus_array_descriptor (struct type *type) 1927 { 1928 return 1929 type != NULL 1930 && TYPE_CODE (type) == TYPE_CODE_STRUCT 1931 && (lookup_struct_elt_type (type, "P_BOUNDS", 1) != NULL 1932 || lookup_struct_elt_type (type, "P_ARRAY", 1) != NULL) 1933 && !ada_is_array_descriptor_type (type); 1934 } 1935 1936 1937 /* If ARR has a record type in the form of a standard GNAT array descriptor, 1938 (fat pointer) returns the type of the array data described---specifically, 1939 a pointer-to-array type. If BOUNDS is non-zero, the bounds data are filled 1940 in from the descriptor; otherwise, they are left unspecified. If 1941 the ARR denotes a null array descriptor and BOUNDS is non-zero, 1942 returns NULL. The result is simply the type of ARR if ARR is not 1943 a descriptor. */ 1944 struct type * 1945 ada_type_of_array (struct value *arr, int bounds) 1946 { 1947 if (ada_is_constrained_packed_array_type (value_type (arr))) 1948 return decode_constrained_packed_array_type (value_type (arr)); 1949 1950 if (!ada_is_array_descriptor_type (value_type (arr))) 1951 return value_type (arr); 1952 1953 if (!bounds) 1954 { 1955 struct type *array_type = 1956 ada_check_typedef (desc_data_target_type (value_type (arr))); 1957 1958 if (ada_is_unconstrained_packed_array_type (value_type (arr))) 1959 TYPE_FIELD_BITSIZE (array_type, 0) = 1960 decode_packed_array_bitsize (value_type (arr)); 1961 1962 return array_type; 1963 } 1964 else 1965 { 1966 struct type *elt_type; 1967 int arity; 1968 struct value *descriptor; 1969 1970 elt_type = ada_array_element_type (value_type (arr), -1); 1971 arity = ada_array_arity (value_type (arr)); 1972 1973 if (elt_type == NULL || arity == 0) 1974 return ada_check_typedef (value_type (arr)); 1975 1976 descriptor = desc_bounds (arr); 1977 if (value_as_long (descriptor) == 0) 1978 return NULL; 1979 while (arity > 0) 1980 { 1981 struct type *range_type = alloc_type_copy (value_type (arr)); 1982 struct type *array_type = alloc_type_copy (value_type (arr)); 1983 struct value *low = desc_one_bound (descriptor, arity, 0); 1984 struct value *high = desc_one_bound (descriptor, arity, 1); 1985 1986 arity -= 1; 1987 create_static_range_type (range_type, value_type (low), 1988 longest_to_int (value_as_long (low)), 1989 longest_to_int (value_as_long (high))); 1990 elt_type = create_array_type (array_type, elt_type, range_type); 1991 1992 if (ada_is_unconstrained_packed_array_type (value_type (arr))) 1993 { 1994 /* We need to store the element packed bitsize, as well as 1995 recompute the array size, because it was previously 1996 computed based on the unpacked element size. */ 1997 LONGEST lo = value_as_long (low); 1998 LONGEST hi = value_as_long (high); 1999 2000 TYPE_FIELD_BITSIZE (elt_type, 0) = 2001 decode_packed_array_bitsize (value_type (arr)); 2002 /* If the array has no element, then the size is already 2003 zero, and does not need to be recomputed. */ 2004 if (lo < hi) 2005 { 2006 int array_bitsize = 2007 (hi - lo + 1) * TYPE_FIELD_BITSIZE (elt_type, 0); 2008 2009 TYPE_LENGTH (array_type) = (array_bitsize + 7) / 8; 2010 } 2011 } 2012 } 2013 2014 return lookup_pointer_type (elt_type); 2015 } 2016 } 2017 2018 /* If ARR does not represent an array, returns ARR unchanged. 2019 Otherwise, returns either a standard GDB array with bounds set 2020 appropriately or, if ARR is a non-null fat pointer, a pointer to a standard 2021 GDB array. Returns NULL if ARR is a null fat pointer. */ 2022 2023 struct value * 2024 ada_coerce_to_simple_array_ptr (struct value *arr) 2025 { 2026 if (ada_is_array_descriptor_type (value_type (arr))) 2027 { 2028 struct type *arrType = ada_type_of_array (arr, 1); 2029 2030 if (arrType == NULL) 2031 return NULL; 2032 return value_cast (arrType, value_copy (desc_data (arr))); 2033 } 2034 else if (ada_is_constrained_packed_array_type (value_type (arr))) 2035 return decode_constrained_packed_array (arr); 2036 else 2037 return arr; 2038 } 2039 2040 /* If ARR does not represent an array, returns ARR unchanged. 2041 Otherwise, returns a standard GDB array describing ARR (which may 2042 be ARR itself if it already is in the proper form). */ 2043 2044 struct value * 2045 ada_coerce_to_simple_array (struct value *arr) 2046 { 2047 if (ada_is_array_descriptor_type (value_type (arr))) 2048 { 2049 struct value *arrVal = ada_coerce_to_simple_array_ptr (arr); 2050 2051 if (arrVal == NULL) 2052 error (_("Bounds unavailable for null array pointer.")); 2053 ada_ensure_varsize_limit (TYPE_TARGET_TYPE (value_type (arrVal))); 2054 return value_ind (arrVal); 2055 } 2056 else if (ada_is_constrained_packed_array_type (value_type (arr))) 2057 return decode_constrained_packed_array (arr); 2058 else 2059 return arr; 2060 } 2061 2062 /* If TYPE represents a GNAT array type, return it translated to an 2063 ordinary GDB array type (possibly with BITSIZE fields indicating 2064 packing). For other types, is the identity. */ 2065 2066 struct type * 2067 ada_coerce_to_simple_array_type (struct type *type) 2068 { 2069 if (ada_is_constrained_packed_array_type (type)) 2070 return decode_constrained_packed_array_type (type); 2071 2072 if (ada_is_array_descriptor_type (type)) 2073 return ada_check_typedef (desc_data_target_type (type)); 2074 2075 return type; 2076 } 2077 2078 /* Non-zero iff TYPE represents a standard GNAT packed-array type. */ 2079 2080 static int 2081 ada_is_packed_array_type (struct type *type) 2082 { 2083 if (type == NULL) 2084 return 0; 2085 type = desc_base_type (type); 2086 type = ada_check_typedef (type); 2087 return 2088 ada_type_name (type) != NULL 2089 && strstr (ada_type_name (type), "___XP") != NULL; 2090 } 2091 2092 /* Non-zero iff TYPE represents a standard GNAT constrained 2093 packed-array type. */ 2094 2095 int 2096 ada_is_constrained_packed_array_type (struct type *type) 2097 { 2098 return ada_is_packed_array_type (type) 2099 && !ada_is_array_descriptor_type (type); 2100 } 2101 2102 /* Non-zero iff TYPE represents an array descriptor for a 2103 unconstrained packed-array type. */ 2104 2105 static int 2106 ada_is_unconstrained_packed_array_type (struct type *type) 2107 { 2108 return ada_is_packed_array_type (type) 2109 && ada_is_array_descriptor_type (type); 2110 } 2111 2112 /* Given that TYPE encodes a packed array type (constrained or unconstrained), 2113 return the size of its elements in bits. */ 2114 2115 static long 2116 decode_packed_array_bitsize (struct type *type) 2117 { 2118 const char *raw_name; 2119 const char *tail; 2120 long bits; 2121 2122 /* Access to arrays implemented as fat pointers are encoded as a typedef 2123 of the fat pointer type. We need the name of the fat pointer type 2124 to do the decoding, so strip the typedef layer. */ 2125 if (TYPE_CODE (type) == TYPE_CODE_TYPEDEF) 2126 type = ada_typedef_target_type (type); 2127 2128 raw_name = ada_type_name (ada_check_typedef (type)); 2129 if (!raw_name) 2130 raw_name = ada_type_name (desc_base_type (type)); 2131 2132 if (!raw_name) 2133 return 0; 2134 2135 tail = strstr (raw_name, "___XP"); 2136 gdb_assert (tail != NULL); 2137 2138 if (sscanf (tail + sizeof ("___XP") - 1, "%ld", &bits) != 1) 2139 { 2140 lim_warning 2141 (_("could not understand bit size information on packed array")); 2142 return 0; 2143 } 2144 2145 return bits; 2146 } 2147 2148 /* Given that TYPE is a standard GDB array type with all bounds filled 2149 in, and that the element size of its ultimate scalar constituents 2150 (that is, either its elements, or, if it is an array of arrays, its 2151 elements' elements, etc.) is *ELT_BITS, return an identical type, 2152 but with the bit sizes of its elements (and those of any 2153 constituent arrays) recorded in the BITSIZE components of its 2154 TYPE_FIELD_BITSIZE values, and with *ELT_BITS set to its total size 2155 in bits. 2156 2157 Note that, for arrays whose index type has an XA encoding where 2158 a bound references a record discriminant, getting that discriminant, 2159 and therefore the actual value of that bound, is not possible 2160 because none of the given parameters gives us access to the record. 2161 This function assumes that it is OK in the context where it is being 2162 used to return an array whose bounds are still dynamic and where 2163 the length is arbitrary. */ 2164 2165 static struct type * 2166 constrained_packed_array_type (struct type *type, long *elt_bits) 2167 { 2168 struct type *new_elt_type; 2169 struct type *new_type; 2170 struct type *index_type_desc; 2171 struct type *index_type; 2172 LONGEST low_bound, high_bound; 2173 2174 type = ada_check_typedef (type); 2175 if (TYPE_CODE (type) != TYPE_CODE_ARRAY) 2176 return type; 2177 2178 index_type_desc = ada_find_parallel_type (type, "___XA"); 2179 if (index_type_desc) 2180 index_type = to_fixed_range_type (TYPE_FIELD_TYPE (index_type_desc, 0), 2181 NULL); 2182 else 2183 index_type = TYPE_INDEX_TYPE (type); 2184 2185 new_type = alloc_type_copy (type); 2186 new_elt_type = 2187 constrained_packed_array_type (ada_check_typedef (TYPE_TARGET_TYPE (type)), 2188 elt_bits); 2189 create_array_type (new_type, new_elt_type, index_type); 2190 TYPE_FIELD_BITSIZE (new_type, 0) = *elt_bits; 2191 TYPE_NAME (new_type) = ada_type_name (type); 2192 2193 if ((TYPE_CODE (check_typedef (index_type)) == TYPE_CODE_RANGE 2194 && is_dynamic_type (check_typedef (index_type))) 2195 || get_discrete_bounds (index_type, &low_bound, &high_bound) < 0) 2196 low_bound = high_bound = 0; 2197 if (high_bound < low_bound) 2198 *elt_bits = TYPE_LENGTH (new_type) = 0; 2199 else 2200 { 2201 *elt_bits *= (high_bound - low_bound + 1); 2202 TYPE_LENGTH (new_type) = 2203 (*elt_bits + HOST_CHAR_BIT - 1) / HOST_CHAR_BIT; 2204 } 2205 2206 TYPE_FIXED_INSTANCE (new_type) = 1; 2207 return new_type; 2208 } 2209 2210 /* The array type encoded by TYPE, where 2211 ada_is_constrained_packed_array_type (TYPE). */ 2212 2213 static struct type * 2214 decode_constrained_packed_array_type (struct type *type) 2215 { 2216 const char *raw_name = ada_type_name (ada_check_typedef (type)); 2217 char *name; 2218 const char *tail; 2219 struct type *shadow_type; 2220 long bits; 2221 2222 if (!raw_name) 2223 raw_name = ada_type_name (desc_base_type (type)); 2224 2225 if (!raw_name) 2226 return NULL; 2227 2228 name = (char *) alloca (strlen (raw_name) + 1); 2229 tail = strstr (raw_name, "___XP"); 2230 type = desc_base_type (type); 2231 2232 memcpy (name, raw_name, tail - raw_name); 2233 name[tail - raw_name] = '\000'; 2234 2235 shadow_type = ada_find_parallel_type_with_name (type, name); 2236 2237 if (shadow_type == NULL) 2238 { 2239 lim_warning (_("could not find bounds information on packed array")); 2240 return NULL; 2241 } 2242 CHECK_TYPEDEF (shadow_type); 2243 2244 if (TYPE_CODE (shadow_type) != TYPE_CODE_ARRAY) 2245 { 2246 lim_warning (_("could not understand bounds " 2247 "information on packed array")); 2248 return NULL; 2249 } 2250 2251 bits = decode_packed_array_bitsize (type); 2252 return constrained_packed_array_type (shadow_type, &bits); 2253 } 2254 2255 /* Given that ARR is a struct value *indicating a GNAT constrained packed 2256 array, returns a simple array that denotes that array. Its type is a 2257 standard GDB array type except that the BITSIZEs of the array 2258 target types are set to the number of bits in each element, and the 2259 type length is set appropriately. */ 2260 2261 static struct value * 2262 decode_constrained_packed_array (struct value *arr) 2263 { 2264 struct type *type; 2265 2266 /* If our value is a pointer, then dereference it. Likewise if 2267 the value is a reference. Make sure that this operation does not 2268 cause the target type to be fixed, as this would indirectly cause 2269 this array to be decoded. The rest of the routine assumes that 2270 the array hasn't been decoded yet, so we use the basic "coerce_ref" 2271 and "value_ind" routines to perform the dereferencing, as opposed 2272 to using "ada_coerce_ref" or "ada_value_ind". */ 2273 arr = coerce_ref (arr); 2274 if (TYPE_CODE (ada_check_typedef (value_type (arr))) == TYPE_CODE_PTR) 2275 arr = value_ind (arr); 2276 2277 type = decode_constrained_packed_array_type (value_type (arr)); 2278 if (type == NULL) 2279 { 2280 error (_("can't unpack array")); 2281 return NULL; 2282 } 2283 2284 if (gdbarch_bits_big_endian (get_type_arch (value_type (arr))) 2285 && ada_is_modular_type (value_type (arr))) 2286 { 2287 /* This is a (right-justified) modular type representing a packed 2288 array with no wrapper. In order to interpret the value through 2289 the (left-justified) packed array type we just built, we must 2290 first left-justify it. */ 2291 int bit_size, bit_pos; 2292 ULONGEST mod; 2293 2294 mod = ada_modulus (value_type (arr)) - 1; 2295 bit_size = 0; 2296 while (mod > 0) 2297 { 2298 bit_size += 1; 2299 mod >>= 1; 2300 } 2301 bit_pos = HOST_CHAR_BIT * TYPE_LENGTH (value_type (arr)) - bit_size; 2302 arr = ada_value_primitive_packed_val (arr, NULL, 2303 bit_pos / HOST_CHAR_BIT, 2304 bit_pos % HOST_CHAR_BIT, 2305 bit_size, 2306 type); 2307 } 2308 2309 return coerce_unspec_val_to_type (arr, type); 2310 } 2311 2312 2313 /* The value of the element of packed array ARR at the ARITY indices 2314 given in IND. ARR must be a simple array. */ 2315 2316 static struct value * 2317 value_subscript_packed (struct value *arr, int arity, struct value **ind) 2318 { 2319 int i; 2320 int bits, elt_off, bit_off; 2321 long elt_total_bit_offset; 2322 struct type *elt_type; 2323 struct value *v; 2324 2325 bits = 0; 2326 elt_total_bit_offset = 0; 2327 elt_type = ada_check_typedef (value_type (arr)); 2328 for (i = 0; i < arity; i += 1) 2329 { 2330 if (TYPE_CODE (elt_type) != TYPE_CODE_ARRAY 2331 || TYPE_FIELD_BITSIZE (elt_type, 0) == 0) 2332 error 2333 (_("attempt to do packed indexing of " 2334 "something other than a packed array")); 2335 else 2336 { 2337 struct type *range_type = TYPE_INDEX_TYPE (elt_type); 2338 LONGEST lowerbound, upperbound; 2339 LONGEST idx; 2340 2341 if (get_discrete_bounds (range_type, &lowerbound, &upperbound) < 0) 2342 { 2343 lim_warning (_("don't know bounds of array")); 2344 lowerbound = upperbound = 0; 2345 } 2346 2347 idx = pos_atr (ind[i]); 2348 if (idx < lowerbound || idx > upperbound) 2349 lim_warning (_("packed array index %ld out of bounds"), 2350 (long) idx); 2351 bits = TYPE_FIELD_BITSIZE (elt_type, 0); 2352 elt_total_bit_offset += (idx - lowerbound) * bits; 2353 elt_type = ada_check_typedef (TYPE_TARGET_TYPE (elt_type)); 2354 } 2355 } 2356 elt_off = elt_total_bit_offset / HOST_CHAR_BIT; 2357 bit_off = elt_total_bit_offset % HOST_CHAR_BIT; 2358 2359 v = ada_value_primitive_packed_val (arr, NULL, elt_off, bit_off, 2360 bits, elt_type); 2361 return v; 2362 } 2363 2364 /* Non-zero iff TYPE includes negative integer values. */ 2365 2366 static int 2367 has_negatives (struct type *type) 2368 { 2369 switch (TYPE_CODE (type)) 2370 { 2371 default: 2372 return 0; 2373 case TYPE_CODE_INT: 2374 return !TYPE_UNSIGNED (type); 2375 case TYPE_CODE_RANGE: 2376 return TYPE_LOW_BOUND (type) < 0; 2377 } 2378 } 2379 2380 2381 /* Create a new value of type TYPE from the contents of OBJ starting 2382 at byte OFFSET, and bit offset BIT_OFFSET within that byte, 2383 proceeding for BIT_SIZE bits. If OBJ is an lval in memory, then 2384 assigning through the result will set the field fetched from. 2385 VALADDR is ignored unless OBJ is NULL, in which case, 2386 VALADDR+OFFSET must address the start of storage containing the 2387 packed value. The value returned in this case is never an lval. 2388 Assumes 0 <= BIT_OFFSET < HOST_CHAR_BIT. */ 2389 2390 struct value * 2391 ada_value_primitive_packed_val (struct value *obj, const gdb_byte *valaddr, 2392 long offset, int bit_offset, int bit_size, 2393 struct type *type) 2394 { 2395 struct value *v; 2396 int src, /* Index into the source area */ 2397 targ, /* Index into the target area */ 2398 srcBitsLeft, /* Number of source bits left to move */ 2399 nsrc, ntarg, /* Number of source and target bytes */ 2400 unusedLS, /* Number of bits in next significant 2401 byte of source that are unused */ 2402 accumSize; /* Number of meaningful bits in accum */ 2403 unsigned char *bytes; /* First byte containing data to unpack */ 2404 unsigned char *unpacked; 2405 unsigned long accum; /* Staging area for bits being transferred */ 2406 unsigned char sign; 2407 int len = (bit_size + bit_offset + HOST_CHAR_BIT - 1) / 8; 2408 /* Transmit bytes from least to most significant; delta is the direction 2409 the indices move. */ 2410 int delta = gdbarch_bits_big_endian (get_type_arch (type)) ? -1 : 1; 2411 2412 type = ada_check_typedef (type); 2413 2414 if (obj == NULL) 2415 { 2416 v = allocate_value (type); 2417 bytes = (unsigned char *) (valaddr + offset); 2418 } 2419 else if (VALUE_LVAL (obj) == lval_memory && value_lazy (obj)) 2420 { 2421 v = value_at (type, value_address (obj)); 2422 type = value_type (v); 2423 bytes = (unsigned char *) alloca (len); 2424 read_memory (value_address (v) + offset, bytes, len); 2425 } 2426 else 2427 { 2428 v = allocate_value (type); 2429 bytes = (unsigned char *) value_contents (obj) + offset; 2430 } 2431 2432 if (obj != NULL) 2433 { 2434 long new_offset = offset; 2435 2436 set_value_component_location (v, obj); 2437 set_value_bitpos (v, bit_offset + value_bitpos (obj)); 2438 set_value_bitsize (v, bit_size); 2439 if (value_bitpos (v) >= HOST_CHAR_BIT) 2440 { 2441 ++new_offset; 2442 set_value_bitpos (v, value_bitpos (v) - HOST_CHAR_BIT); 2443 } 2444 set_value_offset (v, new_offset); 2445 2446 /* Also set the parent value. This is needed when trying to 2447 assign a new value (in inferior memory). */ 2448 set_value_parent (v, obj); 2449 } 2450 else 2451 set_value_bitsize (v, bit_size); 2452 unpacked = (unsigned char *) value_contents (v); 2453 2454 srcBitsLeft = bit_size; 2455 nsrc = len; 2456 ntarg = TYPE_LENGTH (type); 2457 sign = 0; 2458 if (bit_size == 0) 2459 { 2460 memset (unpacked, 0, TYPE_LENGTH (type)); 2461 return v; 2462 } 2463 else if (gdbarch_bits_big_endian (get_type_arch (type))) 2464 { 2465 src = len - 1; 2466 if (has_negatives (type) 2467 && ((bytes[0] << bit_offset) & (1 << (HOST_CHAR_BIT - 1)))) 2468 sign = ~0; 2469 2470 unusedLS = 2471 (HOST_CHAR_BIT - (bit_size + bit_offset) % HOST_CHAR_BIT) 2472 % HOST_CHAR_BIT; 2473 2474 switch (TYPE_CODE (type)) 2475 { 2476 case TYPE_CODE_ARRAY: 2477 case TYPE_CODE_UNION: 2478 case TYPE_CODE_STRUCT: 2479 /* Non-scalar values must be aligned at a byte boundary... */ 2480 accumSize = 2481 (HOST_CHAR_BIT - bit_size % HOST_CHAR_BIT) % HOST_CHAR_BIT; 2482 /* ... And are placed at the beginning (most-significant) bytes 2483 of the target. */ 2484 targ = (bit_size + HOST_CHAR_BIT - 1) / HOST_CHAR_BIT - 1; 2485 ntarg = targ + 1; 2486 break; 2487 default: 2488 accumSize = 0; 2489 targ = TYPE_LENGTH (type) - 1; 2490 break; 2491 } 2492 } 2493 else 2494 { 2495 int sign_bit_offset = (bit_size + bit_offset - 1) % 8; 2496 2497 src = targ = 0; 2498 unusedLS = bit_offset; 2499 accumSize = 0; 2500 2501 if (has_negatives (type) && (bytes[len - 1] & (1 << sign_bit_offset))) 2502 sign = ~0; 2503 } 2504 2505 accum = 0; 2506 while (nsrc > 0) 2507 { 2508 /* Mask for removing bits of the next source byte that are not 2509 part of the value. */ 2510 unsigned int unusedMSMask = 2511 (1 << (srcBitsLeft >= HOST_CHAR_BIT ? HOST_CHAR_BIT : srcBitsLeft)) - 2512 1; 2513 /* Sign-extend bits for this byte. */ 2514 unsigned int signMask = sign & ~unusedMSMask; 2515 2516 accum |= 2517 (((bytes[src] >> unusedLS) & unusedMSMask) | signMask) << accumSize; 2518 accumSize += HOST_CHAR_BIT - unusedLS; 2519 if (accumSize >= HOST_CHAR_BIT) 2520 { 2521 unpacked[targ] = accum & ~(~0UL << HOST_CHAR_BIT); 2522 accumSize -= HOST_CHAR_BIT; 2523 accum >>= HOST_CHAR_BIT; 2524 ntarg -= 1; 2525 targ += delta; 2526 } 2527 srcBitsLeft -= HOST_CHAR_BIT - unusedLS; 2528 unusedLS = 0; 2529 nsrc -= 1; 2530 src += delta; 2531 } 2532 while (ntarg > 0) 2533 { 2534 accum |= sign << accumSize; 2535 unpacked[targ] = accum & ~(~0UL << HOST_CHAR_BIT); 2536 accumSize -= HOST_CHAR_BIT; 2537 accum >>= HOST_CHAR_BIT; 2538 ntarg -= 1; 2539 targ += delta; 2540 } 2541 2542 return v; 2543 } 2544 2545 /* Move N bits from SOURCE, starting at bit offset SRC_OFFSET to 2546 TARGET, starting at bit offset TARG_OFFSET. SOURCE and TARGET must 2547 not overlap. */ 2548 static void 2549 move_bits (gdb_byte *target, int targ_offset, const gdb_byte *source, 2550 int src_offset, int n, int bits_big_endian_p) 2551 { 2552 unsigned int accum, mask; 2553 int accum_bits, chunk_size; 2554 2555 target += targ_offset / HOST_CHAR_BIT; 2556 targ_offset %= HOST_CHAR_BIT; 2557 source += src_offset / HOST_CHAR_BIT; 2558 src_offset %= HOST_CHAR_BIT; 2559 if (bits_big_endian_p) 2560 { 2561 accum = (unsigned char) *source; 2562 source += 1; 2563 accum_bits = HOST_CHAR_BIT - src_offset; 2564 2565 while (n > 0) 2566 { 2567 int unused_right; 2568 2569 accum = (accum << HOST_CHAR_BIT) + (unsigned char) *source; 2570 accum_bits += HOST_CHAR_BIT; 2571 source += 1; 2572 chunk_size = HOST_CHAR_BIT - targ_offset; 2573 if (chunk_size > n) 2574 chunk_size = n; 2575 unused_right = HOST_CHAR_BIT - (chunk_size + targ_offset); 2576 mask = ((1 << chunk_size) - 1) << unused_right; 2577 *target = 2578 (*target & ~mask) 2579 | ((accum >> (accum_bits - chunk_size - unused_right)) & mask); 2580 n -= chunk_size; 2581 accum_bits -= chunk_size; 2582 target += 1; 2583 targ_offset = 0; 2584 } 2585 } 2586 else 2587 { 2588 accum = (unsigned char) *source >> src_offset; 2589 source += 1; 2590 accum_bits = HOST_CHAR_BIT - src_offset; 2591 2592 while (n > 0) 2593 { 2594 accum = accum + ((unsigned char) *source << accum_bits); 2595 accum_bits += HOST_CHAR_BIT; 2596 source += 1; 2597 chunk_size = HOST_CHAR_BIT - targ_offset; 2598 if (chunk_size > n) 2599 chunk_size = n; 2600 mask = ((1 << chunk_size) - 1) << targ_offset; 2601 *target = (*target & ~mask) | ((accum << targ_offset) & mask); 2602 n -= chunk_size; 2603 accum_bits -= chunk_size; 2604 accum >>= chunk_size; 2605 target += 1; 2606 targ_offset = 0; 2607 } 2608 } 2609 } 2610 2611 /* Store the contents of FROMVAL into the location of TOVAL. 2612 Return a new value with the location of TOVAL and contents of 2613 FROMVAL. Handles assignment into packed fields that have 2614 floating-point or non-scalar types. */ 2615 2616 static struct value * 2617 ada_value_assign (struct value *toval, struct value *fromval) 2618 { 2619 struct type *type = value_type (toval); 2620 int bits = value_bitsize (toval); 2621 2622 toval = ada_coerce_ref (toval); 2623 fromval = ada_coerce_ref (fromval); 2624 2625 if (ada_is_direct_array_type (value_type (toval))) 2626 toval = ada_coerce_to_simple_array (toval); 2627 if (ada_is_direct_array_type (value_type (fromval))) 2628 fromval = ada_coerce_to_simple_array (fromval); 2629 2630 if (!deprecated_value_modifiable (toval)) 2631 error (_("Left operand of assignment is not a modifiable lvalue.")); 2632 2633 if (VALUE_LVAL (toval) == lval_memory 2634 && bits > 0 2635 && (TYPE_CODE (type) == TYPE_CODE_FLT 2636 || TYPE_CODE (type) == TYPE_CODE_STRUCT)) 2637 { 2638 int len = (value_bitpos (toval) 2639 + bits + HOST_CHAR_BIT - 1) / HOST_CHAR_BIT; 2640 int from_size; 2641 gdb_byte *buffer = alloca (len); 2642 struct value *val; 2643 CORE_ADDR to_addr = value_address (toval); 2644 2645 if (TYPE_CODE (type) == TYPE_CODE_FLT) 2646 fromval = value_cast (type, fromval); 2647 2648 read_memory (to_addr, buffer, len); 2649 from_size = value_bitsize (fromval); 2650 if (from_size == 0) 2651 from_size = TYPE_LENGTH (value_type (fromval)) * TARGET_CHAR_BIT; 2652 if (gdbarch_bits_big_endian (get_type_arch (type))) 2653 move_bits (buffer, value_bitpos (toval), 2654 value_contents (fromval), from_size - bits, bits, 1); 2655 else 2656 move_bits (buffer, value_bitpos (toval), 2657 value_contents (fromval), 0, bits, 0); 2658 write_memory_with_notification (to_addr, buffer, len); 2659 2660 val = value_copy (toval); 2661 memcpy (value_contents_raw (val), value_contents (fromval), 2662 TYPE_LENGTH (type)); 2663 deprecated_set_value_type (val, type); 2664 2665 return val; 2666 } 2667 2668 return value_assign (toval, fromval); 2669 } 2670 2671 2672 /* Given that COMPONENT is a memory lvalue that is part of the lvalue 2673 * CONTAINER, assign the contents of VAL to COMPONENTS's place in 2674 * CONTAINER. Modifies the VALUE_CONTENTS of CONTAINER only, not 2675 * COMPONENT, and not the inferior's memory. The current contents 2676 * of COMPONENT are ignored. */ 2677 static void 2678 value_assign_to_component (struct value *container, struct value *component, 2679 struct value *val) 2680 { 2681 LONGEST offset_in_container = 2682 (LONGEST) (value_address (component) - value_address (container)); 2683 int bit_offset_in_container = 2684 value_bitpos (component) - value_bitpos (container); 2685 int bits; 2686 2687 val = value_cast (value_type (component), val); 2688 2689 if (value_bitsize (component) == 0) 2690 bits = TARGET_CHAR_BIT * TYPE_LENGTH (value_type (component)); 2691 else 2692 bits = value_bitsize (component); 2693 2694 if (gdbarch_bits_big_endian (get_type_arch (value_type (container)))) 2695 move_bits (value_contents_writeable (container) + offset_in_container, 2696 value_bitpos (container) + bit_offset_in_container, 2697 value_contents (val), 2698 TYPE_LENGTH (value_type (component)) * TARGET_CHAR_BIT - bits, 2699 bits, 1); 2700 else 2701 move_bits (value_contents_writeable (container) + offset_in_container, 2702 value_bitpos (container) + bit_offset_in_container, 2703 value_contents (val), 0, bits, 0); 2704 } 2705 2706 /* The value of the element of array ARR at the ARITY indices given in IND. 2707 ARR may be either a simple array, GNAT array descriptor, or pointer 2708 thereto. */ 2709 2710 struct value * 2711 ada_value_subscript (struct value *arr, int arity, struct value **ind) 2712 { 2713 int k; 2714 struct value *elt; 2715 struct type *elt_type; 2716 2717 elt = ada_coerce_to_simple_array (arr); 2718 2719 elt_type = ada_check_typedef (value_type (elt)); 2720 if (TYPE_CODE (elt_type) == TYPE_CODE_ARRAY 2721 && TYPE_FIELD_BITSIZE (elt_type, 0) > 0) 2722 return value_subscript_packed (elt, arity, ind); 2723 2724 for (k = 0; k < arity; k += 1) 2725 { 2726 if (TYPE_CODE (elt_type) != TYPE_CODE_ARRAY) 2727 error (_("too many subscripts (%d expected)"), k); 2728 elt = value_subscript (elt, pos_atr (ind[k])); 2729 } 2730 return elt; 2731 } 2732 2733 /* Assuming ARR is a pointer to a GDB array, the value of the element 2734 of *ARR at the ARITY indices given in IND. 2735 Does not read the entire array into memory. */ 2736 2737 static struct value * 2738 ada_value_ptr_subscript (struct value *arr, int arity, struct value **ind) 2739 { 2740 int k; 2741 struct type *type 2742 = check_typedef (value_enclosing_type (ada_value_ind (arr))); 2743 2744 for (k = 0; k < arity; k += 1) 2745 { 2746 LONGEST lwb, upb; 2747 2748 if (TYPE_CODE (type) != TYPE_CODE_ARRAY) 2749 error (_("too many subscripts (%d expected)"), k); 2750 arr = value_cast (lookup_pointer_type (TYPE_TARGET_TYPE (type)), 2751 value_copy (arr)); 2752 get_discrete_bounds (TYPE_INDEX_TYPE (type), &lwb, &upb); 2753 arr = value_ptradd (arr, pos_atr (ind[k]) - lwb); 2754 type = TYPE_TARGET_TYPE (type); 2755 } 2756 2757 return value_ind (arr); 2758 } 2759 2760 /* Given that ARRAY_PTR is a pointer or reference to an array of type TYPE (the 2761 actual type of ARRAY_PTR is ignored), returns the Ada slice of HIGH-LOW+1 2762 elements starting at index LOW. The lower bound of this array is LOW, as 2763 per Ada rules. */ 2764 static struct value * 2765 ada_value_slice_from_ptr (struct value *array_ptr, struct type *type, 2766 int low, int high) 2767 { 2768 struct type *type0 = ada_check_typedef (type); 2769 CORE_ADDR base = value_as_address (array_ptr) 2770 + ((low - ada_discrete_type_low_bound (TYPE_INDEX_TYPE (type0))) 2771 * TYPE_LENGTH (TYPE_TARGET_TYPE (type0))); 2772 struct type *index_type 2773 = create_static_range_type (NULL, 2774 TYPE_TARGET_TYPE (TYPE_INDEX_TYPE (type0)), 2775 low, high); 2776 struct type *slice_type = 2777 create_array_type (NULL, TYPE_TARGET_TYPE (type0), index_type); 2778 2779 return value_at_lazy (slice_type, base); 2780 } 2781 2782 2783 static struct value * 2784 ada_value_slice (struct value *array, int low, int high) 2785 { 2786 struct type *type = ada_check_typedef (value_type (array)); 2787 struct type *index_type 2788 = create_static_range_type (NULL, TYPE_INDEX_TYPE (type), low, high); 2789 struct type *slice_type = 2790 create_array_type (NULL, TYPE_TARGET_TYPE (type), index_type); 2791 2792 return value_cast (slice_type, value_slice (array, low, high - low + 1)); 2793 } 2794 2795 /* If type is a record type in the form of a standard GNAT array 2796 descriptor, returns the number of dimensions for type. If arr is a 2797 simple array, returns the number of "array of"s that prefix its 2798 type designation. Otherwise, returns 0. */ 2799 2800 int 2801 ada_array_arity (struct type *type) 2802 { 2803 int arity; 2804 2805 if (type == NULL) 2806 return 0; 2807 2808 type = desc_base_type (type); 2809 2810 arity = 0; 2811 if (TYPE_CODE (type) == TYPE_CODE_STRUCT) 2812 return desc_arity (desc_bounds_type (type)); 2813 else 2814 while (TYPE_CODE (type) == TYPE_CODE_ARRAY) 2815 { 2816 arity += 1; 2817 type = ada_check_typedef (TYPE_TARGET_TYPE (type)); 2818 } 2819 2820 return arity; 2821 } 2822 2823 /* If TYPE is a record type in the form of a standard GNAT array 2824 descriptor or a simple array type, returns the element type for 2825 TYPE after indexing by NINDICES indices, or by all indices if 2826 NINDICES is -1. Otherwise, returns NULL. */ 2827 2828 struct type * 2829 ada_array_element_type (struct type *type, int nindices) 2830 { 2831 type = desc_base_type (type); 2832 2833 if (TYPE_CODE (type) == TYPE_CODE_STRUCT) 2834 { 2835 int k; 2836 struct type *p_array_type; 2837 2838 p_array_type = desc_data_target_type (type); 2839 2840 k = ada_array_arity (type); 2841 if (k == 0) 2842 return NULL; 2843 2844 /* Initially p_array_type = elt_type(*)[]...(k times)...[]. */ 2845 if (nindices >= 0 && k > nindices) 2846 k = nindices; 2847 while (k > 0 && p_array_type != NULL) 2848 { 2849 p_array_type = ada_check_typedef (TYPE_TARGET_TYPE (p_array_type)); 2850 k -= 1; 2851 } 2852 return p_array_type; 2853 } 2854 else if (TYPE_CODE (type) == TYPE_CODE_ARRAY) 2855 { 2856 while (nindices != 0 && TYPE_CODE (type) == TYPE_CODE_ARRAY) 2857 { 2858 type = TYPE_TARGET_TYPE (type); 2859 nindices -= 1; 2860 } 2861 return type; 2862 } 2863 2864 return NULL; 2865 } 2866 2867 /* The type of nth index in arrays of given type (n numbering from 1). 2868 Does not examine memory. Throws an error if N is invalid or TYPE 2869 is not an array type. NAME is the name of the Ada attribute being 2870 evaluated ('range, 'first, 'last, or 'length); it is used in building 2871 the error message. */ 2872 2873 static struct type * 2874 ada_index_type (struct type *type, int n, const char *name) 2875 { 2876 struct type *result_type; 2877 2878 type = desc_base_type (type); 2879 2880 if (n < 0 || n > ada_array_arity (type)) 2881 error (_("invalid dimension number to '%s"), name); 2882 2883 if (ada_is_simple_array_type (type)) 2884 { 2885 int i; 2886 2887 for (i = 1; i < n; i += 1) 2888 type = TYPE_TARGET_TYPE (type); 2889 result_type = TYPE_TARGET_TYPE (TYPE_INDEX_TYPE (type)); 2890 /* FIXME: The stabs type r(0,0);bound;bound in an array type 2891 has a target type of TYPE_CODE_UNDEF. We compensate here, but 2892 perhaps stabsread.c would make more sense. */ 2893 if (result_type && TYPE_CODE (result_type) == TYPE_CODE_UNDEF) 2894 result_type = NULL; 2895 } 2896 else 2897 { 2898 result_type = desc_index_type (desc_bounds_type (type), n); 2899 if (result_type == NULL) 2900 error (_("attempt to take bound of something that is not an array")); 2901 } 2902 2903 return result_type; 2904 } 2905 2906 /* Given that arr is an array type, returns the lower bound of the 2907 Nth index (numbering from 1) if WHICH is 0, and the upper bound if 2908 WHICH is 1. This returns bounds 0 .. -1 if ARR_TYPE is an 2909 array-descriptor type. It works for other arrays with bounds supplied 2910 by run-time quantities other than discriminants. */ 2911 2912 static LONGEST 2913 ada_array_bound_from_type (struct type *arr_type, int n, int which) 2914 { 2915 struct type *type, *index_type_desc, *index_type; 2916 int i; 2917 2918 gdb_assert (which == 0 || which == 1); 2919 2920 if (ada_is_constrained_packed_array_type (arr_type)) 2921 arr_type = decode_constrained_packed_array_type (arr_type); 2922 2923 if (arr_type == NULL || !ada_is_simple_array_type (arr_type)) 2924 return (LONGEST) - which; 2925 2926 if (TYPE_CODE (arr_type) == TYPE_CODE_PTR) 2927 type = TYPE_TARGET_TYPE (arr_type); 2928 else 2929 type = arr_type; 2930 2931 index_type_desc = ada_find_parallel_type (type, "___XA"); 2932 ada_fixup_array_indexes_type (index_type_desc); 2933 if (index_type_desc != NULL) 2934 index_type = to_fixed_range_type (TYPE_FIELD_TYPE (index_type_desc, n - 1), 2935 NULL); 2936 else 2937 { 2938 struct type *elt_type = check_typedef (type); 2939 2940 for (i = 1; i < n; i++) 2941 elt_type = check_typedef (TYPE_TARGET_TYPE (elt_type)); 2942 2943 index_type = TYPE_INDEX_TYPE (elt_type); 2944 } 2945 2946 return 2947 (LONGEST) (which == 0 2948 ? ada_discrete_type_low_bound (index_type) 2949 : ada_discrete_type_high_bound (index_type)); 2950 } 2951 2952 /* Given that arr is an array value, returns the lower bound of the 2953 nth index (numbering from 1) if WHICH is 0, and the upper bound if 2954 WHICH is 1. This routine will also work for arrays with bounds 2955 supplied by run-time quantities other than discriminants. */ 2956 2957 static LONGEST 2958 ada_array_bound (struct value *arr, int n, int which) 2959 { 2960 struct type *arr_type; 2961 2962 if (TYPE_CODE (check_typedef (value_type (arr))) == TYPE_CODE_PTR) 2963 arr = value_ind (arr); 2964 arr_type = value_enclosing_type (arr); 2965 2966 if (ada_is_constrained_packed_array_type (arr_type)) 2967 return ada_array_bound (decode_constrained_packed_array (arr), n, which); 2968 else if (ada_is_simple_array_type (arr_type)) 2969 return ada_array_bound_from_type (arr_type, n, which); 2970 else 2971 return value_as_long (desc_one_bound (desc_bounds (arr), n, which)); 2972 } 2973 2974 /* Given that arr is an array value, returns the length of the 2975 nth index. This routine will also work for arrays with bounds 2976 supplied by run-time quantities other than discriminants. 2977 Does not work for arrays indexed by enumeration types with representation 2978 clauses at the moment. */ 2979 2980 static LONGEST 2981 ada_array_length (struct value *arr, int n) 2982 { 2983 struct type *arr_type; 2984 2985 if (TYPE_CODE (check_typedef (value_type (arr))) == TYPE_CODE_PTR) 2986 arr = value_ind (arr); 2987 arr_type = value_enclosing_type (arr); 2988 2989 if (ada_is_constrained_packed_array_type (arr_type)) 2990 return ada_array_length (decode_constrained_packed_array (arr), n); 2991 2992 if (ada_is_simple_array_type (arr_type)) 2993 return (ada_array_bound_from_type (arr_type, n, 1) 2994 - ada_array_bound_from_type (arr_type, n, 0) + 1); 2995 else 2996 return (value_as_long (desc_one_bound (desc_bounds (arr), n, 1)) 2997 - value_as_long (desc_one_bound (desc_bounds (arr), n, 0)) + 1); 2998 } 2999 3000 /* An empty array whose type is that of ARR_TYPE (an array type), 3001 with bounds LOW to LOW-1. */ 3002 3003 static struct value * 3004 empty_array (struct type *arr_type, int low) 3005 { 3006 struct type *arr_type0 = ada_check_typedef (arr_type); 3007 struct type *index_type 3008 = create_static_range_type 3009 (NULL, TYPE_TARGET_TYPE (TYPE_INDEX_TYPE (arr_type0)), low, low - 1); 3010 struct type *elt_type = ada_array_element_type (arr_type0, 1); 3011 3012 return allocate_value (create_array_type (NULL, elt_type, index_type)); 3013 } 3014 3015 3016 /* Name resolution */ 3017 3018 /* The "decoded" name for the user-definable Ada operator corresponding 3019 to OP. */ 3020 3021 static const char * 3022 ada_decoded_op_name (enum exp_opcode op) 3023 { 3024 int i; 3025 3026 for (i = 0; ada_opname_table[i].encoded != NULL; i += 1) 3027 { 3028 if (ada_opname_table[i].op == op) 3029 return ada_opname_table[i].decoded; 3030 } 3031 error (_("Could not find operator name for opcode")); 3032 } 3033 3034 3035 /* Same as evaluate_type (*EXP), but resolves ambiguous symbol 3036 references (marked by OP_VAR_VALUE nodes in which the symbol has an 3037 undefined namespace) and converts operators that are 3038 user-defined into appropriate function calls. If CONTEXT_TYPE is 3039 non-null, it provides a preferred result type [at the moment, only 3040 type void has any effect---causing procedures to be preferred over 3041 functions in calls]. A null CONTEXT_TYPE indicates that a non-void 3042 return type is preferred. May change (expand) *EXP. */ 3043 3044 static void 3045 resolve (struct expression **expp, int void_context_p) 3046 { 3047 struct type *context_type = NULL; 3048 int pc = 0; 3049 3050 if (void_context_p) 3051 context_type = builtin_type ((*expp)->gdbarch)->builtin_void; 3052 3053 resolve_subexp (expp, &pc, 1, context_type); 3054 } 3055 3056 /* Resolve the operator of the subexpression beginning at 3057 position *POS of *EXPP. "Resolving" consists of replacing 3058 the symbols that have undefined namespaces in OP_VAR_VALUE nodes 3059 with their resolutions, replacing built-in operators with 3060 function calls to user-defined operators, where appropriate, and, 3061 when DEPROCEDURE_P is non-zero, converting function-valued variables 3062 into parameterless calls. May expand *EXPP. The CONTEXT_TYPE functions 3063 are as in ada_resolve, above. */ 3064 3065 static struct value * 3066 resolve_subexp (struct expression **expp, int *pos, int deprocedure_p, 3067 struct type *context_type) 3068 { 3069 int pc = *pos; 3070 int i; 3071 struct expression *exp; /* Convenience: == *expp. */ 3072 enum exp_opcode op = (*expp)->elts[pc].opcode; 3073 struct value **argvec; /* Vector of operand types (alloca'ed). */ 3074 int nargs; /* Number of operands. */ 3075 int oplen; 3076 3077 argvec = NULL; 3078 nargs = 0; 3079 exp = *expp; 3080 3081 /* Pass one: resolve operands, saving their types and updating *pos, 3082 if needed. */ 3083 switch (op) 3084 { 3085 case OP_FUNCALL: 3086 if (exp->elts[pc + 3].opcode == OP_VAR_VALUE 3087 && SYMBOL_DOMAIN (exp->elts[pc + 5].symbol) == UNDEF_DOMAIN) 3088 *pos += 7; 3089 else 3090 { 3091 *pos += 3; 3092 resolve_subexp (expp, pos, 0, NULL); 3093 } 3094 nargs = longest_to_int (exp->elts[pc + 1].longconst); 3095 break; 3096 3097 case UNOP_ADDR: 3098 *pos += 1; 3099 resolve_subexp (expp, pos, 0, NULL); 3100 break; 3101 3102 case UNOP_QUAL: 3103 *pos += 3; 3104 resolve_subexp (expp, pos, 1, check_typedef (exp->elts[pc + 1].type)); 3105 break; 3106 3107 case OP_ATR_MODULUS: 3108 case OP_ATR_SIZE: 3109 case OP_ATR_TAG: 3110 case OP_ATR_FIRST: 3111 case OP_ATR_LAST: 3112 case OP_ATR_LENGTH: 3113 case OP_ATR_POS: 3114 case OP_ATR_VAL: 3115 case OP_ATR_MIN: 3116 case OP_ATR_MAX: 3117 case TERNOP_IN_RANGE: 3118 case BINOP_IN_BOUNDS: 3119 case UNOP_IN_RANGE: 3120 case OP_AGGREGATE: 3121 case OP_OTHERS: 3122 case OP_CHOICES: 3123 case OP_POSITIONAL: 3124 case OP_DISCRETE_RANGE: 3125 case OP_NAME: 3126 ada_forward_operator_length (exp, pc, &oplen, &nargs); 3127 *pos += oplen; 3128 break; 3129 3130 case BINOP_ASSIGN: 3131 { 3132 struct value *arg1; 3133 3134 *pos += 1; 3135 arg1 = resolve_subexp (expp, pos, 0, NULL); 3136 if (arg1 == NULL) 3137 resolve_subexp (expp, pos, 1, NULL); 3138 else 3139 resolve_subexp (expp, pos, 1, value_type (arg1)); 3140 break; 3141 } 3142 3143 case UNOP_CAST: 3144 *pos += 3; 3145 nargs = 1; 3146 break; 3147 3148 case BINOP_ADD: 3149 case BINOP_SUB: 3150 case BINOP_MUL: 3151 case BINOP_DIV: 3152 case BINOP_REM: 3153 case BINOP_MOD: 3154 case BINOP_EXP: 3155 case BINOP_CONCAT: 3156 case BINOP_LOGICAL_AND: 3157 case BINOP_LOGICAL_OR: 3158 case BINOP_BITWISE_AND: 3159 case BINOP_BITWISE_IOR: 3160 case BINOP_BITWISE_XOR: 3161 3162 case BINOP_EQUAL: 3163 case BINOP_NOTEQUAL: 3164 case BINOP_LESS: 3165 case BINOP_GTR: 3166 case BINOP_LEQ: 3167 case BINOP_GEQ: 3168 3169 case BINOP_REPEAT: 3170 case BINOP_SUBSCRIPT: 3171 case BINOP_COMMA: 3172 *pos += 1; 3173 nargs = 2; 3174 break; 3175 3176 case UNOP_NEG: 3177 case UNOP_PLUS: 3178 case UNOP_LOGICAL_NOT: 3179 case UNOP_ABS: 3180 case UNOP_IND: 3181 *pos += 1; 3182 nargs = 1; 3183 break; 3184 3185 case OP_LONG: 3186 case OP_DOUBLE: 3187 case OP_VAR_VALUE: 3188 *pos += 4; 3189 break; 3190 3191 case OP_TYPE: 3192 case OP_BOOL: 3193 case OP_LAST: 3194 case OP_INTERNALVAR: 3195 *pos += 3; 3196 break; 3197 3198 case UNOP_MEMVAL: 3199 *pos += 3; 3200 nargs = 1; 3201 break; 3202 3203 case OP_REGISTER: 3204 *pos += 4 + BYTES_TO_EXP_ELEM (exp->elts[pc + 1].longconst + 1); 3205 break; 3206 3207 case STRUCTOP_STRUCT: 3208 *pos += 4 + BYTES_TO_EXP_ELEM (exp->elts[pc + 1].longconst + 1); 3209 nargs = 1; 3210 break; 3211 3212 case TERNOP_SLICE: 3213 *pos += 1; 3214 nargs = 3; 3215 break; 3216 3217 case OP_STRING: 3218 break; 3219 3220 default: 3221 error (_("Unexpected operator during name resolution")); 3222 } 3223 3224 argvec = (struct value * *) alloca (sizeof (struct value *) * (nargs + 1)); 3225 for (i = 0; i < nargs; i += 1) 3226 argvec[i] = resolve_subexp (expp, pos, 1, NULL); 3227 argvec[i] = NULL; 3228 exp = *expp; 3229 3230 /* Pass two: perform any resolution on principal operator. */ 3231 switch (op) 3232 { 3233 default: 3234 break; 3235 3236 case OP_VAR_VALUE: 3237 if (SYMBOL_DOMAIN (exp->elts[pc + 2].symbol) == UNDEF_DOMAIN) 3238 { 3239 struct ada_symbol_info *candidates; 3240 int n_candidates; 3241 3242 n_candidates = 3243 ada_lookup_symbol_list (SYMBOL_LINKAGE_NAME 3244 (exp->elts[pc + 2].symbol), 3245 exp->elts[pc + 1].block, VAR_DOMAIN, 3246 &candidates); 3247 3248 if (n_candidates > 1) 3249 { 3250 /* Types tend to get re-introduced locally, so if there 3251 are any local symbols that are not types, first filter 3252 out all types. */ 3253 int j; 3254 for (j = 0; j < n_candidates; j += 1) 3255 switch (SYMBOL_CLASS (candidates[j].sym)) 3256 { 3257 case LOC_REGISTER: 3258 case LOC_ARG: 3259 case LOC_REF_ARG: 3260 case LOC_REGPARM_ADDR: 3261 case LOC_LOCAL: 3262 case LOC_COMPUTED: 3263 goto FoundNonType; 3264 default: 3265 break; 3266 } 3267 FoundNonType: 3268 if (j < n_candidates) 3269 { 3270 j = 0; 3271 while (j < n_candidates) 3272 { 3273 if (SYMBOL_CLASS (candidates[j].sym) == LOC_TYPEDEF) 3274 { 3275 candidates[j] = candidates[n_candidates - 1]; 3276 n_candidates -= 1; 3277 } 3278 else 3279 j += 1; 3280 } 3281 } 3282 } 3283 3284 if (n_candidates == 0) 3285 error (_("No definition found for %s"), 3286 SYMBOL_PRINT_NAME (exp->elts[pc + 2].symbol)); 3287 else if (n_candidates == 1) 3288 i = 0; 3289 else if (deprocedure_p 3290 && !is_nonfunction (candidates, n_candidates)) 3291 { 3292 i = ada_resolve_function 3293 (candidates, n_candidates, NULL, 0, 3294 SYMBOL_LINKAGE_NAME (exp->elts[pc + 2].symbol), 3295 context_type); 3296 if (i < 0) 3297 error (_("Could not find a match for %s"), 3298 SYMBOL_PRINT_NAME (exp->elts[pc + 2].symbol)); 3299 } 3300 else 3301 { 3302 printf_filtered (_("Multiple matches for %s\n"), 3303 SYMBOL_PRINT_NAME (exp->elts[pc + 2].symbol)); 3304 user_select_syms (candidates, n_candidates, 1); 3305 i = 0; 3306 } 3307 3308 exp->elts[pc + 1].block = candidates[i].block; 3309 exp->elts[pc + 2].symbol = candidates[i].sym; 3310 if (innermost_block == NULL 3311 || contained_in (candidates[i].block, innermost_block)) 3312 innermost_block = candidates[i].block; 3313 } 3314 3315 if (deprocedure_p 3316 && (TYPE_CODE (SYMBOL_TYPE (exp->elts[pc + 2].symbol)) 3317 == TYPE_CODE_FUNC)) 3318 { 3319 replace_operator_with_call (expp, pc, 0, 0, 3320 exp->elts[pc + 2].symbol, 3321 exp->elts[pc + 1].block); 3322 exp = *expp; 3323 } 3324 break; 3325 3326 case OP_FUNCALL: 3327 { 3328 if (exp->elts[pc + 3].opcode == OP_VAR_VALUE 3329 && SYMBOL_DOMAIN (exp->elts[pc + 5].symbol) == UNDEF_DOMAIN) 3330 { 3331 struct ada_symbol_info *candidates; 3332 int n_candidates; 3333 3334 n_candidates = 3335 ada_lookup_symbol_list (SYMBOL_LINKAGE_NAME 3336 (exp->elts[pc + 5].symbol), 3337 exp->elts[pc + 4].block, VAR_DOMAIN, 3338 &candidates); 3339 if (n_candidates == 1) 3340 i = 0; 3341 else 3342 { 3343 i = ada_resolve_function 3344 (candidates, n_candidates, 3345 argvec, nargs, 3346 SYMBOL_LINKAGE_NAME (exp->elts[pc + 5].symbol), 3347 context_type); 3348 if (i < 0) 3349 error (_("Could not find a match for %s"), 3350 SYMBOL_PRINT_NAME (exp->elts[pc + 5].symbol)); 3351 } 3352 3353 exp->elts[pc + 4].block = candidates[i].block; 3354 exp->elts[pc + 5].symbol = candidates[i].sym; 3355 if (innermost_block == NULL 3356 || contained_in (candidates[i].block, innermost_block)) 3357 innermost_block = candidates[i].block; 3358 } 3359 } 3360 break; 3361 case BINOP_ADD: 3362 case BINOP_SUB: 3363 case BINOP_MUL: 3364 case BINOP_DIV: 3365 case BINOP_REM: 3366 case BINOP_MOD: 3367 case BINOP_CONCAT: 3368 case BINOP_BITWISE_AND: 3369 case BINOP_BITWISE_IOR: 3370 case BINOP_BITWISE_XOR: 3371 case BINOP_EQUAL: 3372 case BINOP_NOTEQUAL: 3373 case BINOP_LESS: 3374 case BINOP_GTR: 3375 case BINOP_LEQ: 3376 case BINOP_GEQ: 3377 case BINOP_EXP: 3378 case UNOP_NEG: 3379 case UNOP_PLUS: 3380 case UNOP_LOGICAL_NOT: 3381 case UNOP_ABS: 3382 if (possible_user_operator_p (op, argvec)) 3383 { 3384 struct ada_symbol_info *candidates; 3385 int n_candidates; 3386 3387 n_candidates = 3388 ada_lookup_symbol_list (ada_encode (ada_decoded_op_name (op)), 3389 (struct block *) NULL, VAR_DOMAIN, 3390 &candidates); 3391 i = ada_resolve_function (candidates, n_candidates, argvec, nargs, 3392 ada_decoded_op_name (op), NULL); 3393 if (i < 0) 3394 break; 3395 3396 replace_operator_with_call (expp, pc, nargs, 1, 3397 candidates[i].sym, candidates[i].block); 3398 exp = *expp; 3399 } 3400 break; 3401 3402 case OP_TYPE: 3403 case OP_REGISTER: 3404 return NULL; 3405 } 3406 3407 *pos = pc; 3408 return evaluate_subexp_type (exp, pos); 3409 } 3410 3411 /* Return non-zero if formal type FTYPE matches actual type ATYPE. If 3412 MAY_DEREF is non-zero, the formal may be a pointer and the actual 3413 a non-pointer. */ 3414 /* The term "match" here is rather loose. The match is heuristic and 3415 liberal. */ 3416 3417 static int 3418 ada_type_match (struct type *ftype, struct type *atype, int may_deref) 3419 { 3420 ftype = ada_check_typedef (ftype); 3421 atype = ada_check_typedef (atype); 3422 3423 if (TYPE_CODE (ftype) == TYPE_CODE_REF) 3424 ftype = TYPE_TARGET_TYPE (ftype); 3425 if (TYPE_CODE (atype) == TYPE_CODE_REF) 3426 atype = TYPE_TARGET_TYPE (atype); 3427 3428 switch (TYPE_CODE (ftype)) 3429 { 3430 default: 3431 return TYPE_CODE (ftype) == TYPE_CODE (atype); 3432 case TYPE_CODE_PTR: 3433 if (TYPE_CODE (atype) == TYPE_CODE_PTR) 3434 return ada_type_match (TYPE_TARGET_TYPE (ftype), 3435 TYPE_TARGET_TYPE (atype), 0); 3436 else 3437 return (may_deref 3438 && ada_type_match (TYPE_TARGET_TYPE (ftype), atype, 0)); 3439 case TYPE_CODE_INT: 3440 case TYPE_CODE_ENUM: 3441 case TYPE_CODE_RANGE: 3442 switch (TYPE_CODE (atype)) 3443 { 3444 case TYPE_CODE_INT: 3445 case TYPE_CODE_ENUM: 3446 case TYPE_CODE_RANGE: 3447 return 1; 3448 default: 3449 return 0; 3450 } 3451 3452 case TYPE_CODE_ARRAY: 3453 return (TYPE_CODE (atype) == TYPE_CODE_ARRAY 3454 || ada_is_array_descriptor_type (atype)); 3455 3456 case TYPE_CODE_STRUCT: 3457 if (ada_is_array_descriptor_type (ftype)) 3458 return (TYPE_CODE (atype) == TYPE_CODE_ARRAY 3459 || ada_is_array_descriptor_type (atype)); 3460 else 3461 return (TYPE_CODE (atype) == TYPE_CODE_STRUCT 3462 && !ada_is_array_descriptor_type (atype)); 3463 3464 case TYPE_CODE_UNION: 3465 case TYPE_CODE_FLT: 3466 return (TYPE_CODE (atype) == TYPE_CODE (ftype)); 3467 } 3468 } 3469 3470 /* Return non-zero if the formals of FUNC "sufficiently match" the 3471 vector of actual argument types ACTUALS of size N_ACTUALS. FUNC 3472 may also be an enumeral, in which case it is treated as a 0- 3473 argument function. */ 3474 3475 static int 3476 ada_args_match (struct symbol *func, struct value **actuals, int n_actuals) 3477 { 3478 int i; 3479 struct type *func_type = SYMBOL_TYPE (func); 3480 3481 if (SYMBOL_CLASS (func) == LOC_CONST 3482 && TYPE_CODE (func_type) == TYPE_CODE_ENUM) 3483 return (n_actuals == 0); 3484 else if (func_type == NULL || TYPE_CODE (func_type) != TYPE_CODE_FUNC) 3485 return 0; 3486 3487 if (TYPE_NFIELDS (func_type) != n_actuals) 3488 return 0; 3489 3490 for (i = 0; i < n_actuals; i += 1) 3491 { 3492 if (actuals[i] == NULL) 3493 return 0; 3494 else 3495 { 3496 struct type *ftype = ada_check_typedef (TYPE_FIELD_TYPE (func_type, 3497 i)); 3498 struct type *atype = ada_check_typedef (value_type (actuals[i])); 3499 3500 if (!ada_type_match (ftype, atype, 1)) 3501 return 0; 3502 } 3503 } 3504 return 1; 3505 } 3506 3507 /* False iff function type FUNC_TYPE definitely does not produce a value 3508 compatible with type CONTEXT_TYPE. Conservatively returns 1 if 3509 FUNC_TYPE is not a valid function type with a non-null return type 3510 or an enumerated type. A null CONTEXT_TYPE indicates any non-void type. */ 3511 3512 static int 3513 return_match (struct type *func_type, struct type *context_type) 3514 { 3515 struct type *return_type; 3516 3517 if (func_type == NULL) 3518 return 1; 3519 3520 if (TYPE_CODE (func_type) == TYPE_CODE_FUNC) 3521 return_type = get_base_type (TYPE_TARGET_TYPE (func_type)); 3522 else 3523 return_type = get_base_type (func_type); 3524 if (return_type == NULL) 3525 return 1; 3526 3527 context_type = get_base_type (context_type); 3528 3529 if (TYPE_CODE (return_type) == TYPE_CODE_ENUM) 3530 return context_type == NULL || return_type == context_type; 3531 else if (context_type == NULL) 3532 return TYPE_CODE (return_type) != TYPE_CODE_VOID; 3533 else 3534 return TYPE_CODE (return_type) == TYPE_CODE (context_type); 3535 } 3536 3537 3538 /* Returns the index in SYMS[0..NSYMS-1] that contains the symbol for the 3539 function (if any) that matches the types of the NARGS arguments in 3540 ARGS. If CONTEXT_TYPE is non-null and there is at least one match 3541 that returns that type, then eliminate matches that don't. If 3542 CONTEXT_TYPE is void and there is at least one match that does not 3543 return void, eliminate all matches that do. 3544 3545 Asks the user if there is more than one match remaining. Returns -1 3546 if there is no such symbol or none is selected. NAME is used 3547 solely for messages. May re-arrange and modify SYMS in 3548 the process; the index returned is for the modified vector. */ 3549 3550 static int 3551 ada_resolve_function (struct ada_symbol_info syms[], 3552 int nsyms, struct value **args, int nargs, 3553 const char *name, struct type *context_type) 3554 { 3555 int fallback; 3556 int k; 3557 int m; /* Number of hits */ 3558 3559 m = 0; 3560 /* In the first pass of the loop, we only accept functions matching 3561 context_type. If none are found, we add a second pass of the loop 3562 where every function is accepted. */ 3563 for (fallback = 0; m == 0 && fallback < 2; fallback++) 3564 { 3565 for (k = 0; k < nsyms; k += 1) 3566 { 3567 struct type *type = ada_check_typedef (SYMBOL_TYPE (syms[k].sym)); 3568 3569 if (ada_args_match (syms[k].sym, args, nargs) 3570 && (fallback || return_match (type, context_type))) 3571 { 3572 syms[m] = syms[k]; 3573 m += 1; 3574 } 3575 } 3576 } 3577 3578 if (m == 0) 3579 return -1; 3580 else if (m > 1) 3581 { 3582 printf_filtered (_("Multiple matches for %s\n"), name); 3583 user_select_syms (syms, m, 1); 3584 return 0; 3585 } 3586 return 0; 3587 } 3588 3589 /* Returns true (non-zero) iff decoded name N0 should appear before N1 3590 in a listing of choices during disambiguation (see sort_choices, below). 3591 The idea is that overloadings of a subprogram name from the 3592 same package should sort in their source order. We settle for ordering 3593 such symbols by their trailing number (__N or $N). */ 3594 3595 static int 3596 encoded_ordered_before (const char *N0, const char *N1) 3597 { 3598 if (N1 == NULL) 3599 return 0; 3600 else if (N0 == NULL) 3601 return 1; 3602 else 3603 { 3604 int k0, k1; 3605 3606 for (k0 = strlen (N0) - 1; k0 > 0 && isdigit (N0[k0]); k0 -= 1) 3607 ; 3608 for (k1 = strlen (N1) - 1; k1 > 0 && isdigit (N1[k1]); k1 -= 1) 3609 ; 3610 if ((N0[k0] == '_' || N0[k0] == '$') && N0[k0 + 1] != '\000' 3611 && (N1[k1] == '_' || N1[k1] == '$') && N1[k1 + 1] != '\000') 3612 { 3613 int n0, n1; 3614 3615 n0 = k0; 3616 while (N0[n0] == '_' && n0 > 0 && N0[n0 - 1] == '_') 3617 n0 -= 1; 3618 n1 = k1; 3619 while (N1[n1] == '_' && n1 > 0 && N1[n1 - 1] == '_') 3620 n1 -= 1; 3621 if (n0 == n1 && strncmp (N0, N1, n0) == 0) 3622 return (atoi (N0 + k0 + 1) < atoi (N1 + k1 + 1)); 3623 } 3624 return (strcmp (N0, N1) < 0); 3625 } 3626 } 3627 3628 /* Sort SYMS[0..NSYMS-1] to put the choices in a canonical order by the 3629 encoded names. */ 3630 3631 static void 3632 sort_choices (struct ada_symbol_info syms[], int nsyms) 3633 { 3634 int i; 3635 3636 for (i = 1; i < nsyms; i += 1) 3637 { 3638 struct ada_symbol_info sym = syms[i]; 3639 int j; 3640 3641 for (j = i - 1; j >= 0; j -= 1) 3642 { 3643 if (encoded_ordered_before (SYMBOL_LINKAGE_NAME (syms[j].sym), 3644 SYMBOL_LINKAGE_NAME (sym.sym))) 3645 break; 3646 syms[j + 1] = syms[j]; 3647 } 3648 syms[j + 1] = sym; 3649 } 3650 } 3651 3652 /* Given a list of NSYMS symbols in SYMS, select up to MAX_RESULTS>0 3653 by asking the user (if necessary), returning the number selected, 3654 and setting the first elements of SYMS items. Error if no symbols 3655 selected. */ 3656 3657 /* NOTE: Adapted from decode_line_2 in symtab.c, with which it ought 3658 to be re-integrated one of these days. */ 3659 3660 int 3661 user_select_syms (struct ada_symbol_info *syms, int nsyms, int max_results) 3662 { 3663 int i; 3664 int *chosen = (int *) alloca (sizeof (int) * nsyms); 3665 int n_chosen; 3666 int first_choice = (max_results == 1) ? 1 : 2; 3667 const char *select_mode = multiple_symbols_select_mode (); 3668 3669 if (max_results < 1) 3670 error (_("Request to select 0 symbols!")); 3671 if (nsyms <= 1) 3672 return nsyms; 3673 3674 if (select_mode == multiple_symbols_cancel) 3675 error (_("\ 3676 canceled because the command is ambiguous\n\ 3677 See set/show multiple-symbol.")); 3678 3679 /* If select_mode is "all", then return all possible symbols. 3680 Only do that if more than one symbol can be selected, of course. 3681 Otherwise, display the menu as usual. */ 3682 if (select_mode == multiple_symbols_all && max_results > 1) 3683 return nsyms; 3684 3685 printf_unfiltered (_("[0] cancel\n")); 3686 if (max_results > 1) 3687 printf_unfiltered (_("[1] all\n")); 3688 3689 sort_choices (syms, nsyms); 3690 3691 for (i = 0; i < nsyms; i += 1) 3692 { 3693 if (syms[i].sym == NULL) 3694 continue; 3695 3696 if (SYMBOL_CLASS (syms[i].sym) == LOC_BLOCK) 3697 { 3698 struct symtab_and_line sal = 3699 find_function_start_sal (syms[i].sym, 1); 3700 3701 if (sal.symtab == NULL) 3702 printf_unfiltered (_("[%d] %s at <no source file available>:%d\n"), 3703 i + first_choice, 3704 SYMBOL_PRINT_NAME (syms[i].sym), 3705 sal.line); 3706 else 3707 printf_unfiltered (_("[%d] %s at %s:%d\n"), i + first_choice, 3708 SYMBOL_PRINT_NAME (syms[i].sym), 3709 symtab_to_filename_for_display (sal.symtab), 3710 sal.line); 3711 continue; 3712 } 3713 else 3714 { 3715 int is_enumeral = 3716 (SYMBOL_CLASS (syms[i].sym) == LOC_CONST 3717 && SYMBOL_TYPE (syms[i].sym) != NULL 3718 && TYPE_CODE (SYMBOL_TYPE (syms[i].sym)) == TYPE_CODE_ENUM); 3719 struct symtab *symtab = NULL; 3720 3721 if (SYMBOL_OBJFILE_OWNED (syms[i].sym)) 3722 symtab = symbol_symtab (syms[i].sym); 3723 3724 if (SYMBOL_LINE (syms[i].sym) != 0 && symtab != NULL) 3725 printf_unfiltered (_("[%d] %s at %s:%d\n"), 3726 i + first_choice, 3727 SYMBOL_PRINT_NAME (syms[i].sym), 3728 symtab_to_filename_for_display (symtab), 3729 SYMBOL_LINE (syms[i].sym)); 3730 else if (is_enumeral 3731 && TYPE_NAME (SYMBOL_TYPE (syms[i].sym)) != NULL) 3732 { 3733 printf_unfiltered (("[%d] "), i + first_choice); 3734 ada_print_type (SYMBOL_TYPE (syms[i].sym), NULL, 3735 gdb_stdout, -1, 0, &type_print_raw_options); 3736 printf_unfiltered (_("'(%s) (enumeral)\n"), 3737 SYMBOL_PRINT_NAME (syms[i].sym)); 3738 } 3739 else if (symtab != NULL) 3740 printf_unfiltered (is_enumeral 3741 ? _("[%d] %s in %s (enumeral)\n") 3742 : _("[%d] %s at %s:?\n"), 3743 i + first_choice, 3744 SYMBOL_PRINT_NAME (syms[i].sym), 3745 symtab_to_filename_for_display (symtab)); 3746 else 3747 printf_unfiltered (is_enumeral 3748 ? _("[%d] %s (enumeral)\n") 3749 : _("[%d] %s at ?\n"), 3750 i + first_choice, 3751 SYMBOL_PRINT_NAME (syms[i].sym)); 3752 } 3753 } 3754 3755 n_chosen = get_selections (chosen, nsyms, max_results, max_results > 1, 3756 "overload-choice"); 3757 3758 for (i = 0; i < n_chosen; i += 1) 3759 syms[i] = syms[chosen[i]]; 3760 3761 return n_chosen; 3762 } 3763 3764 /* Read and validate a set of numeric choices from the user in the 3765 range 0 .. N_CHOICES-1. Place the results in increasing 3766 order in CHOICES[0 .. N-1], and return N. 3767 3768 The user types choices as a sequence of numbers on one line 3769 separated by blanks, encoding them as follows: 3770 3771 + A choice of 0 means to cancel the selection, throwing an error. 3772 + If IS_ALL_CHOICE, a choice of 1 selects the entire set 0 .. N_CHOICES-1. 3773 + The user chooses k by typing k+IS_ALL_CHOICE+1. 3774 3775 The user is not allowed to choose more than MAX_RESULTS values. 3776 3777 ANNOTATION_SUFFIX, if present, is used to annotate the input 3778 prompts (for use with the -f switch). */ 3779 3780 int 3781 get_selections (int *choices, int n_choices, int max_results, 3782 int is_all_choice, char *annotation_suffix) 3783 { 3784 char *args; 3785 char *prompt; 3786 int n_chosen; 3787 int first_choice = is_all_choice ? 2 : 1; 3788 3789 prompt = getenv ("PS2"); 3790 if (prompt == NULL) 3791 prompt = "> "; 3792 3793 args = command_line_input (prompt, 0, annotation_suffix); 3794 3795 if (args == NULL) 3796 error_no_arg (_("one or more choice numbers")); 3797 3798 n_chosen = 0; 3799 3800 /* Set choices[0 .. n_chosen-1] to the users' choices in ascending 3801 order, as given in args. Choices are validated. */ 3802 while (1) 3803 { 3804 char *args2; 3805 int choice, j; 3806 3807 args = skip_spaces (args); 3808 if (*args == '\0' && n_chosen == 0) 3809 error_no_arg (_("one or more choice numbers")); 3810 else if (*args == '\0') 3811 break; 3812 3813 choice = strtol (args, &args2, 10); 3814 if (args == args2 || choice < 0 3815 || choice > n_choices + first_choice - 1) 3816 error (_("Argument must be choice number")); 3817 args = args2; 3818 3819 if (choice == 0) 3820 error (_("cancelled")); 3821 3822 if (choice < first_choice) 3823 { 3824 n_chosen = n_choices; 3825 for (j = 0; j < n_choices; j += 1) 3826 choices[j] = j; 3827 break; 3828 } 3829 choice -= first_choice; 3830 3831 for (j = n_chosen - 1; j >= 0 && choice < choices[j]; j -= 1) 3832 { 3833 } 3834 3835 if (j < 0 || choice != choices[j]) 3836 { 3837 int k; 3838 3839 for (k = n_chosen - 1; k > j; k -= 1) 3840 choices[k + 1] = choices[k]; 3841 choices[j + 1] = choice; 3842 n_chosen += 1; 3843 } 3844 } 3845 3846 if (n_chosen > max_results) 3847 error (_("Select no more than %d of the above"), max_results); 3848 3849 return n_chosen; 3850 } 3851 3852 /* Replace the operator of length OPLEN at position PC in *EXPP with a call 3853 on the function identified by SYM and BLOCK, and taking NARGS 3854 arguments. Update *EXPP as needed to hold more space. */ 3855 3856 static void 3857 replace_operator_with_call (struct expression **expp, int pc, int nargs, 3858 int oplen, struct symbol *sym, 3859 const struct block *block) 3860 { 3861 /* A new expression, with 6 more elements (3 for funcall, 4 for function 3862 symbol, -oplen for operator being replaced). */ 3863 struct expression *newexp = (struct expression *) 3864 xzalloc (sizeof (struct expression) 3865 + EXP_ELEM_TO_BYTES ((*expp)->nelts + 7 - oplen)); 3866 struct expression *exp = *expp; 3867 3868 newexp->nelts = exp->nelts + 7 - oplen; 3869 newexp->language_defn = exp->language_defn; 3870 newexp->gdbarch = exp->gdbarch; 3871 memcpy (newexp->elts, exp->elts, EXP_ELEM_TO_BYTES (pc)); 3872 memcpy (newexp->elts + pc + 7, exp->elts + pc + oplen, 3873 EXP_ELEM_TO_BYTES (exp->nelts - pc - oplen)); 3874 3875 newexp->elts[pc].opcode = newexp->elts[pc + 2].opcode = OP_FUNCALL; 3876 newexp->elts[pc + 1].longconst = (LONGEST) nargs; 3877 3878 newexp->elts[pc + 3].opcode = newexp->elts[pc + 6].opcode = OP_VAR_VALUE; 3879 newexp->elts[pc + 4].block = block; 3880 newexp->elts[pc + 5].symbol = sym; 3881 3882 *expp = newexp; 3883 xfree (exp); 3884 } 3885 3886 /* Type-class predicates */ 3887 3888 /* True iff TYPE is numeric (i.e., an INT, RANGE (of numeric type), 3889 or FLOAT). */ 3890 3891 static int 3892 numeric_type_p (struct type *type) 3893 { 3894 if (type == NULL) 3895 return 0; 3896 else 3897 { 3898 switch (TYPE_CODE (type)) 3899 { 3900 case TYPE_CODE_INT: 3901 case TYPE_CODE_FLT: 3902 return 1; 3903 case TYPE_CODE_RANGE: 3904 return (type == TYPE_TARGET_TYPE (type) 3905 || numeric_type_p (TYPE_TARGET_TYPE (type))); 3906 default: 3907 return 0; 3908 } 3909 } 3910 } 3911 3912 /* True iff TYPE is integral (an INT or RANGE of INTs). */ 3913 3914 static int 3915 integer_type_p (struct type *type) 3916 { 3917 if (type == NULL) 3918 return 0; 3919 else 3920 { 3921 switch (TYPE_CODE (type)) 3922 { 3923 case TYPE_CODE_INT: 3924 return 1; 3925 case TYPE_CODE_RANGE: 3926 return (type == TYPE_TARGET_TYPE (type) 3927 || integer_type_p (TYPE_TARGET_TYPE (type))); 3928 default: 3929 return 0; 3930 } 3931 } 3932 } 3933 3934 /* True iff TYPE is scalar (INT, RANGE, FLOAT, ENUM). */ 3935 3936 static int 3937 scalar_type_p (struct type *type) 3938 { 3939 if (type == NULL) 3940 return 0; 3941 else 3942 { 3943 switch (TYPE_CODE (type)) 3944 { 3945 case TYPE_CODE_INT: 3946 case TYPE_CODE_RANGE: 3947 case TYPE_CODE_ENUM: 3948 case TYPE_CODE_FLT: 3949 return 1; 3950 default: 3951 return 0; 3952 } 3953 } 3954 } 3955 3956 /* True iff TYPE is discrete (INT, RANGE, ENUM). */ 3957 3958 static int 3959 discrete_type_p (struct type *type) 3960 { 3961 if (type == NULL) 3962 return 0; 3963 else 3964 { 3965 switch (TYPE_CODE (type)) 3966 { 3967 case TYPE_CODE_INT: 3968 case TYPE_CODE_RANGE: 3969 case TYPE_CODE_ENUM: 3970 case TYPE_CODE_BOOL: 3971 return 1; 3972 default: 3973 return 0; 3974 } 3975 } 3976 } 3977 3978 /* Returns non-zero if OP with operands in the vector ARGS could be 3979 a user-defined function. Errs on the side of pre-defined operators 3980 (i.e., result 0). */ 3981 3982 static int 3983 possible_user_operator_p (enum exp_opcode op, struct value *args[]) 3984 { 3985 struct type *type0 = 3986 (args[0] == NULL) ? NULL : ada_check_typedef (value_type (args[0])); 3987 struct type *type1 = 3988 (args[1] == NULL) ? NULL : ada_check_typedef (value_type (args[1])); 3989 3990 if (type0 == NULL) 3991 return 0; 3992 3993 switch (op) 3994 { 3995 default: 3996 return 0; 3997 3998 case BINOP_ADD: 3999 case BINOP_SUB: 4000 case BINOP_MUL: 4001 case BINOP_DIV: 4002 return (!(numeric_type_p (type0) && numeric_type_p (type1))); 4003 4004 case BINOP_REM: 4005 case BINOP_MOD: 4006 case BINOP_BITWISE_AND: 4007 case BINOP_BITWISE_IOR: 4008 case BINOP_BITWISE_XOR: 4009 return (!(integer_type_p (type0) && integer_type_p (type1))); 4010 4011 case BINOP_EQUAL: 4012 case BINOP_NOTEQUAL: 4013 case BINOP_LESS: 4014 case BINOP_GTR: 4015 case BINOP_LEQ: 4016 case BINOP_GEQ: 4017 return (!(scalar_type_p (type0) && scalar_type_p (type1))); 4018 4019 case BINOP_CONCAT: 4020 return !ada_is_array_type (type0) || !ada_is_array_type (type1); 4021 4022 case BINOP_EXP: 4023 return (!(numeric_type_p (type0) && integer_type_p (type1))); 4024 4025 case UNOP_NEG: 4026 case UNOP_PLUS: 4027 case UNOP_LOGICAL_NOT: 4028 case UNOP_ABS: 4029 return (!numeric_type_p (type0)); 4030 4031 } 4032 } 4033 4034 /* Renaming */ 4035 4036 /* NOTES: 4037 4038 1. In the following, we assume that a renaming type's name may 4039 have an ___XD suffix. It would be nice if this went away at some 4040 point. 4041 2. We handle both the (old) purely type-based representation of 4042 renamings and the (new) variable-based encoding. At some point, 4043 it is devoutly to be hoped that the former goes away 4044 (FIXME: hilfinger-2007-07-09). 4045 3. Subprogram renamings are not implemented, although the XRS 4046 suffix is recognized (FIXME: hilfinger-2007-07-09). */ 4047 4048 /* If SYM encodes a renaming, 4049 4050 <renaming> renames <renamed entity>, 4051 4052 sets *LEN to the length of the renamed entity's name, 4053 *RENAMED_ENTITY to that name (not null-terminated), and *RENAMING_EXPR to 4054 the string describing the subcomponent selected from the renamed 4055 entity. Returns ADA_NOT_RENAMING if SYM does not encode a renaming 4056 (in which case, the values of *RENAMED_ENTITY, *LEN, and *RENAMING_EXPR 4057 are undefined). Otherwise, returns a value indicating the category 4058 of entity renamed: an object (ADA_OBJECT_RENAMING), exception 4059 (ADA_EXCEPTION_RENAMING), package (ADA_PACKAGE_RENAMING), or 4060 subprogram (ADA_SUBPROGRAM_RENAMING). Does no allocation; the 4061 strings returned in *RENAMED_ENTITY and *RENAMING_EXPR should not be 4062 deallocated. The values of RENAMED_ENTITY, LEN, or RENAMING_EXPR 4063 may be NULL, in which case they are not assigned. 4064 4065 [Currently, however, GCC does not generate subprogram renamings.] */ 4066 4067 enum ada_renaming_category 4068 ada_parse_renaming (struct symbol *sym, 4069 const char **renamed_entity, int *len, 4070 const char **renaming_expr) 4071 { 4072 enum ada_renaming_category kind; 4073 const char *info; 4074 const char *suffix; 4075 4076 if (sym == NULL) 4077 return ADA_NOT_RENAMING; 4078 switch (SYMBOL_CLASS (sym)) 4079 { 4080 default: 4081 return ADA_NOT_RENAMING; 4082 case LOC_TYPEDEF: 4083 return parse_old_style_renaming (SYMBOL_TYPE (sym), 4084 renamed_entity, len, renaming_expr); 4085 case LOC_LOCAL: 4086 case LOC_STATIC: 4087 case LOC_COMPUTED: 4088 case LOC_OPTIMIZED_OUT: 4089 info = strstr (SYMBOL_LINKAGE_NAME (sym), "___XR"); 4090 if (info == NULL) 4091 return ADA_NOT_RENAMING; 4092 switch (info[5]) 4093 { 4094 case '_': 4095 kind = ADA_OBJECT_RENAMING; 4096 info += 6; 4097 break; 4098 case 'E': 4099 kind = ADA_EXCEPTION_RENAMING; 4100 info += 7; 4101 break; 4102 case 'P': 4103 kind = ADA_PACKAGE_RENAMING; 4104 info += 7; 4105 break; 4106 case 'S': 4107 kind = ADA_SUBPROGRAM_RENAMING; 4108 info += 7; 4109 break; 4110 default: 4111 return ADA_NOT_RENAMING; 4112 } 4113 } 4114 4115 if (renamed_entity != NULL) 4116 *renamed_entity = info; 4117 suffix = strstr (info, "___XE"); 4118 if (suffix == NULL || suffix == info) 4119 return ADA_NOT_RENAMING; 4120 if (len != NULL) 4121 *len = strlen (info) - strlen (suffix); 4122 suffix += 5; 4123 if (renaming_expr != NULL) 4124 *renaming_expr = suffix; 4125 return kind; 4126 } 4127 4128 /* Assuming TYPE encodes a renaming according to the old encoding in 4129 exp_dbug.ads, returns details of that renaming in *RENAMED_ENTITY, 4130 *LEN, and *RENAMING_EXPR, as for ada_parse_renaming, above. Returns 4131 ADA_NOT_RENAMING otherwise. */ 4132 static enum ada_renaming_category 4133 parse_old_style_renaming (struct type *type, 4134 const char **renamed_entity, int *len, 4135 const char **renaming_expr) 4136 { 4137 enum ada_renaming_category kind; 4138 const char *name; 4139 const char *info; 4140 const char *suffix; 4141 4142 if (type == NULL || TYPE_CODE (type) != TYPE_CODE_ENUM 4143 || TYPE_NFIELDS (type) != 1) 4144 return ADA_NOT_RENAMING; 4145 4146 name = type_name_no_tag (type); 4147 if (name == NULL) 4148 return ADA_NOT_RENAMING; 4149 4150 name = strstr (name, "___XR"); 4151 if (name == NULL) 4152 return ADA_NOT_RENAMING; 4153 switch (name[5]) 4154 { 4155 case '\0': 4156 case '_': 4157 kind = ADA_OBJECT_RENAMING; 4158 break; 4159 case 'E': 4160 kind = ADA_EXCEPTION_RENAMING; 4161 break; 4162 case 'P': 4163 kind = ADA_PACKAGE_RENAMING; 4164 break; 4165 case 'S': 4166 kind = ADA_SUBPROGRAM_RENAMING; 4167 break; 4168 default: 4169 return ADA_NOT_RENAMING; 4170 } 4171 4172 info = TYPE_FIELD_NAME (type, 0); 4173 if (info == NULL) 4174 return ADA_NOT_RENAMING; 4175 if (renamed_entity != NULL) 4176 *renamed_entity = info; 4177 suffix = strstr (info, "___XE"); 4178 if (renaming_expr != NULL) 4179 *renaming_expr = suffix + 5; 4180 if (suffix == NULL || suffix == info) 4181 return ADA_NOT_RENAMING; 4182 if (len != NULL) 4183 *len = suffix - info; 4184 return kind; 4185 } 4186 4187 /* Compute the value of the given RENAMING_SYM, which is expected to 4188 be a symbol encoding a renaming expression. BLOCK is the block 4189 used to evaluate the renaming. */ 4190 4191 static struct value * 4192 ada_read_renaming_var_value (struct symbol *renaming_sym, 4193 const struct block *block) 4194 { 4195 const char *sym_name; 4196 struct expression *expr; 4197 struct value *value; 4198 struct cleanup *old_chain = NULL; 4199 4200 sym_name = SYMBOL_LINKAGE_NAME (renaming_sym); 4201 expr = parse_exp_1 (&sym_name, 0, block, 0); 4202 old_chain = make_cleanup (free_current_contents, &expr); 4203 value = evaluate_expression (expr); 4204 4205 do_cleanups (old_chain); 4206 return value; 4207 } 4208 4209 4210 /* Evaluation: Function Calls */ 4211 4212 /* Return an lvalue containing the value VAL. This is the identity on 4213 lvalues, and otherwise has the side-effect of allocating memory 4214 in the inferior where a copy of the value contents is copied. */ 4215 4216 static struct value * 4217 ensure_lval (struct value *val) 4218 { 4219 if (VALUE_LVAL (val) == not_lval 4220 || VALUE_LVAL (val) == lval_internalvar) 4221 { 4222 int len = TYPE_LENGTH (ada_check_typedef (value_type (val))); 4223 const CORE_ADDR addr = 4224 value_as_long (value_allocate_space_in_inferior (len)); 4225 4226 set_value_address (val, addr); 4227 VALUE_LVAL (val) = lval_memory; 4228 write_memory (addr, value_contents (val), len); 4229 } 4230 4231 return val; 4232 } 4233 4234 /* Return the value ACTUAL, converted to be an appropriate value for a 4235 formal of type FORMAL_TYPE. Use *SP as a stack pointer for 4236 allocating any necessary descriptors (fat pointers), or copies of 4237 values not residing in memory, updating it as needed. */ 4238 4239 struct value * 4240 ada_convert_actual (struct value *actual, struct type *formal_type0) 4241 { 4242 struct type *actual_type = ada_check_typedef (value_type (actual)); 4243 struct type *formal_type = ada_check_typedef (formal_type0); 4244 struct type *formal_target = 4245 TYPE_CODE (formal_type) == TYPE_CODE_PTR 4246 ? ada_check_typedef (TYPE_TARGET_TYPE (formal_type)) : formal_type; 4247 struct type *actual_target = 4248 TYPE_CODE (actual_type) == TYPE_CODE_PTR 4249 ? ada_check_typedef (TYPE_TARGET_TYPE (actual_type)) : actual_type; 4250 4251 if (ada_is_array_descriptor_type (formal_target) 4252 && TYPE_CODE (actual_target) == TYPE_CODE_ARRAY) 4253 return make_array_descriptor (formal_type, actual); 4254 else if (TYPE_CODE (formal_type) == TYPE_CODE_PTR 4255 || TYPE_CODE (formal_type) == TYPE_CODE_REF) 4256 { 4257 struct value *result; 4258 4259 if (TYPE_CODE (formal_target) == TYPE_CODE_ARRAY 4260 && ada_is_array_descriptor_type (actual_target)) 4261 result = desc_data (actual); 4262 else if (TYPE_CODE (actual_type) != TYPE_CODE_PTR) 4263 { 4264 if (VALUE_LVAL (actual) != lval_memory) 4265 { 4266 struct value *val; 4267 4268 actual_type = ada_check_typedef (value_type (actual)); 4269 val = allocate_value (actual_type); 4270 memcpy ((char *) value_contents_raw (val), 4271 (char *) value_contents (actual), 4272 TYPE_LENGTH (actual_type)); 4273 actual = ensure_lval (val); 4274 } 4275 result = value_addr (actual); 4276 } 4277 else 4278 return actual; 4279 return value_cast_pointers (formal_type, result, 0); 4280 } 4281 else if (TYPE_CODE (actual_type) == TYPE_CODE_PTR) 4282 return ada_value_ind (actual); 4283 4284 return actual; 4285 } 4286 4287 /* Convert VALUE (which must be an address) to a CORE_ADDR that is a pointer of 4288 type TYPE. This is usually an inefficient no-op except on some targets 4289 (such as AVR) where the representation of a pointer and an address 4290 differs. */ 4291 4292 static CORE_ADDR 4293 value_pointer (struct value *value, struct type *type) 4294 { 4295 struct gdbarch *gdbarch = get_type_arch (type); 4296 unsigned len = TYPE_LENGTH (type); 4297 gdb_byte *buf = alloca (len); 4298 CORE_ADDR addr; 4299 4300 addr = value_address (value); 4301 gdbarch_address_to_pointer (gdbarch, type, buf, addr); 4302 addr = extract_unsigned_integer (buf, len, gdbarch_byte_order (gdbarch)); 4303 return addr; 4304 } 4305 4306 4307 /* Push a descriptor of type TYPE for array value ARR on the stack at 4308 *SP, updating *SP to reflect the new descriptor. Return either 4309 an lvalue representing the new descriptor, or (if TYPE is a pointer- 4310 to-descriptor type rather than a descriptor type), a struct value * 4311 representing a pointer to this descriptor. */ 4312 4313 static struct value * 4314 make_array_descriptor (struct type *type, struct value *arr) 4315 { 4316 struct type *bounds_type = desc_bounds_type (type); 4317 struct type *desc_type = desc_base_type (type); 4318 struct value *descriptor = allocate_value (desc_type); 4319 struct value *bounds = allocate_value (bounds_type); 4320 int i; 4321 4322 for (i = ada_array_arity (ada_check_typedef (value_type (arr))); 4323 i > 0; i -= 1) 4324 { 4325 modify_field (value_type (bounds), value_contents_writeable (bounds), 4326 ada_array_bound (arr, i, 0), 4327 desc_bound_bitpos (bounds_type, i, 0), 4328 desc_bound_bitsize (bounds_type, i, 0)); 4329 modify_field (value_type (bounds), value_contents_writeable (bounds), 4330 ada_array_bound (arr, i, 1), 4331 desc_bound_bitpos (bounds_type, i, 1), 4332 desc_bound_bitsize (bounds_type, i, 1)); 4333 } 4334 4335 bounds = ensure_lval (bounds); 4336 4337 modify_field (value_type (descriptor), 4338 value_contents_writeable (descriptor), 4339 value_pointer (ensure_lval (arr), 4340 TYPE_FIELD_TYPE (desc_type, 0)), 4341 fat_pntr_data_bitpos (desc_type), 4342 fat_pntr_data_bitsize (desc_type)); 4343 4344 modify_field (value_type (descriptor), 4345 value_contents_writeable (descriptor), 4346 value_pointer (bounds, 4347 TYPE_FIELD_TYPE (desc_type, 1)), 4348 fat_pntr_bounds_bitpos (desc_type), 4349 fat_pntr_bounds_bitsize (desc_type)); 4350 4351 descriptor = ensure_lval (descriptor); 4352 4353 if (TYPE_CODE (type) == TYPE_CODE_PTR) 4354 return value_addr (descriptor); 4355 else 4356 return descriptor; 4357 } 4358 4359 /* Symbol Cache Module */ 4360 4361 /* Performance measurements made as of 2010-01-15 indicate that 4362 this cache does bring some noticeable improvements. Depending 4363 on the type of entity being printed, the cache can make it as much 4364 as an order of magnitude faster than without it. 4365 4366 The descriptive type DWARF extension has significantly reduced 4367 the need for this cache, at least when DWARF is being used. However, 4368 even in this case, some expensive name-based symbol searches are still 4369 sometimes necessary - to find an XVZ variable, mostly. */ 4370 4371 /* Initialize the contents of SYM_CACHE. */ 4372 4373 static void 4374 ada_init_symbol_cache (struct ada_symbol_cache *sym_cache) 4375 { 4376 obstack_init (&sym_cache->cache_space); 4377 memset (sym_cache->root, '\000', sizeof (sym_cache->root)); 4378 } 4379 4380 /* Free the memory used by SYM_CACHE. */ 4381 4382 static void 4383 ada_free_symbol_cache (struct ada_symbol_cache *sym_cache) 4384 { 4385 obstack_free (&sym_cache->cache_space, NULL); 4386 xfree (sym_cache); 4387 } 4388 4389 /* Return the symbol cache associated to the given program space PSPACE. 4390 If not allocated for this PSPACE yet, allocate and initialize one. */ 4391 4392 static struct ada_symbol_cache * 4393 ada_get_symbol_cache (struct program_space *pspace) 4394 { 4395 struct ada_pspace_data *pspace_data = get_ada_pspace_data (pspace); 4396 4397 if (pspace_data->sym_cache == NULL) 4398 { 4399 pspace_data->sym_cache = XCNEW (struct ada_symbol_cache); 4400 ada_init_symbol_cache (pspace_data->sym_cache); 4401 } 4402 4403 return pspace_data->sym_cache; 4404 } 4405 4406 /* Clear all entries from the symbol cache. */ 4407 4408 static void 4409 ada_clear_symbol_cache (void) 4410 { 4411 struct ada_symbol_cache *sym_cache 4412 = ada_get_symbol_cache (current_program_space); 4413 4414 obstack_free (&sym_cache->cache_space, NULL); 4415 ada_init_symbol_cache (sym_cache); 4416 } 4417 4418 /* Search our cache for an entry matching NAME and NAMESPACE. 4419 Return it if found, or NULL otherwise. */ 4420 4421 static struct cache_entry ** 4422 find_entry (const char *name, domain_enum namespace) 4423 { 4424 struct ada_symbol_cache *sym_cache 4425 = ada_get_symbol_cache (current_program_space); 4426 int h = msymbol_hash (name) % HASH_SIZE; 4427 struct cache_entry **e; 4428 4429 for (e = &sym_cache->root[h]; *e != NULL; e = &(*e)->next) 4430 { 4431 if (namespace == (*e)->namespace && strcmp (name, (*e)->name) == 0) 4432 return e; 4433 } 4434 return NULL; 4435 } 4436 4437 /* Search the symbol cache for an entry matching NAME and NAMESPACE. 4438 Return 1 if found, 0 otherwise. 4439 4440 If an entry was found and SYM is not NULL, set *SYM to the entry's 4441 SYM. Same principle for BLOCK if not NULL. */ 4442 4443 static int 4444 lookup_cached_symbol (const char *name, domain_enum namespace, 4445 struct symbol **sym, const struct block **block) 4446 { 4447 struct cache_entry **e = find_entry (name, namespace); 4448 4449 if (e == NULL) 4450 return 0; 4451 if (sym != NULL) 4452 *sym = (*e)->sym; 4453 if (block != NULL) 4454 *block = (*e)->block; 4455 return 1; 4456 } 4457 4458 /* Assuming that (SYM, BLOCK) is the result of the lookup of NAME 4459 in domain NAMESPACE, save this result in our symbol cache. */ 4460 4461 static void 4462 cache_symbol (const char *name, domain_enum namespace, struct symbol *sym, 4463 const struct block *block) 4464 { 4465 struct ada_symbol_cache *sym_cache 4466 = ada_get_symbol_cache (current_program_space); 4467 int h; 4468 char *copy; 4469 struct cache_entry *e; 4470 4471 /* Symbols for builtin types don't have a block. 4472 For now don't cache such symbols. */ 4473 if (sym != NULL && !SYMBOL_OBJFILE_OWNED (sym)) 4474 return; 4475 4476 /* If the symbol is a local symbol, then do not cache it, as a search 4477 for that symbol depends on the context. To determine whether 4478 the symbol is local or not, we check the block where we found it 4479 against the global and static blocks of its associated symtab. */ 4480 if (sym 4481 && BLOCKVECTOR_BLOCK (SYMTAB_BLOCKVECTOR (symbol_symtab (sym)), 4482 GLOBAL_BLOCK) != block 4483 && BLOCKVECTOR_BLOCK (SYMTAB_BLOCKVECTOR (symbol_symtab (sym)), 4484 STATIC_BLOCK) != block) 4485 return; 4486 4487 h = msymbol_hash (name) % HASH_SIZE; 4488 e = (struct cache_entry *) obstack_alloc (&sym_cache->cache_space, 4489 sizeof (*e)); 4490 e->next = sym_cache->root[h]; 4491 sym_cache->root[h] = e; 4492 e->name = copy = obstack_alloc (&sym_cache->cache_space, strlen (name) + 1); 4493 strcpy (copy, name); 4494 e->sym = sym; 4495 e->namespace = namespace; 4496 e->block = block; 4497 } 4498 4499 /* Symbol Lookup */ 4500 4501 /* Return nonzero if wild matching should be used when searching for 4502 all symbols matching LOOKUP_NAME. 4503 4504 LOOKUP_NAME is expected to be a symbol name after transformation 4505 for Ada lookups (see ada_name_for_lookup). */ 4506 4507 static int 4508 should_use_wild_match (const char *lookup_name) 4509 { 4510 return (strstr (lookup_name, "__") == NULL); 4511 } 4512 4513 /* Return the result of a standard (literal, C-like) lookup of NAME in 4514 given DOMAIN, visible from lexical block BLOCK. */ 4515 4516 static struct symbol * 4517 standard_lookup (const char *name, const struct block *block, 4518 domain_enum domain) 4519 { 4520 /* Initialize it just to avoid a GCC false warning. */ 4521 struct symbol *sym = NULL; 4522 4523 if (lookup_cached_symbol (name, domain, &sym, NULL)) 4524 return sym; 4525 sym = lookup_symbol_in_language (name, block, domain, language_c, 0); 4526 cache_symbol (name, domain, sym, block_found); 4527 return sym; 4528 } 4529 4530 4531 /* Non-zero iff there is at least one non-function/non-enumeral symbol 4532 in the symbol fields of SYMS[0..N-1]. We treat enumerals as functions, 4533 since they contend in overloading in the same way. */ 4534 static int 4535 is_nonfunction (struct ada_symbol_info syms[], int n) 4536 { 4537 int i; 4538 4539 for (i = 0; i < n; i += 1) 4540 if (TYPE_CODE (SYMBOL_TYPE (syms[i].sym)) != TYPE_CODE_FUNC 4541 && (TYPE_CODE (SYMBOL_TYPE (syms[i].sym)) != TYPE_CODE_ENUM 4542 || SYMBOL_CLASS (syms[i].sym) != LOC_CONST)) 4543 return 1; 4544 4545 return 0; 4546 } 4547 4548 /* If true (non-zero), then TYPE0 and TYPE1 represent equivalent 4549 struct types. Otherwise, they may not. */ 4550 4551 static int 4552 equiv_types (struct type *type0, struct type *type1) 4553 { 4554 if (type0 == type1) 4555 return 1; 4556 if (type0 == NULL || type1 == NULL 4557 || TYPE_CODE (type0) != TYPE_CODE (type1)) 4558 return 0; 4559 if ((TYPE_CODE (type0) == TYPE_CODE_STRUCT 4560 || TYPE_CODE (type0) == TYPE_CODE_ENUM) 4561 && ada_type_name (type0) != NULL && ada_type_name (type1) != NULL 4562 && strcmp (ada_type_name (type0), ada_type_name (type1)) == 0) 4563 return 1; 4564 4565 return 0; 4566 } 4567 4568 /* True iff SYM0 represents the same entity as SYM1, or one that is 4569 no more defined than that of SYM1. */ 4570 4571 static int 4572 lesseq_defined_than (struct symbol *sym0, struct symbol *sym1) 4573 { 4574 if (sym0 == sym1) 4575 return 1; 4576 if (SYMBOL_DOMAIN (sym0) != SYMBOL_DOMAIN (sym1) 4577 || SYMBOL_CLASS (sym0) != SYMBOL_CLASS (sym1)) 4578 return 0; 4579 4580 switch (SYMBOL_CLASS (sym0)) 4581 { 4582 case LOC_UNDEF: 4583 return 1; 4584 case LOC_TYPEDEF: 4585 { 4586 struct type *type0 = SYMBOL_TYPE (sym0); 4587 struct type *type1 = SYMBOL_TYPE (sym1); 4588 const char *name0 = SYMBOL_LINKAGE_NAME (sym0); 4589 const char *name1 = SYMBOL_LINKAGE_NAME (sym1); 4590 int len0 = strlen (name0); 4591 4592 return 4593 TYPE_CODE (type0) == TYPE_CODE (type1) 4594 && (equiv_types (type0, type1) 4595 || (len0 < strlen (name1) && strncmp (name0, name1, len0) == 0 4596 && strncmp (name1 + len0, "___XV", 5) == 0)); 4597 } 4598 case LOC_CONST: 4599 return SYMBOL_VALUE (sym0) == SYMBOL_VALUE (sym1) 4600 && equiv_types (SYMBOL_TYPE (sym0), SYMBOL_TYPE (sym1)); 4601 default: 4602 return 0; 4603 } 4604 } 4605 4606 /* Append (SYM,BLOCK,SYMTAB) to the end of the array of struct ada_symbol_info 4607 records in OBSTACKP. Do nothing if SYM is a duplicate. */ 4608 4609 static void 4610 add_defn_to_vec (struct obstack *obstackp, 4611 struct symbol *sym, 4612 const struct block *block) 4613 { 4614 int i; 4615 struct ada_symbol_info *prevDefns = defns_collected (obstackp, 0); 4616 4617 /* Do not try to complete stub types, as the debugger is probably 4618 already scanning all symbols matching a certain name at the 4619 time when this function is called. Trying to replace the stub 4620 type by its associated full type will cause us to restart a scan 4621 which may lead to an infinite recursion. Instead, the client 4622 collecting the matching symbols will end up collecting several 4623 matches, with at least one of them complete. It can then filter 4624 out the stub ones if needed. */ 4625 4626 for (i = num_defns_collected (obstackp) - 1; i >= 0; i -= 1) 4627 { 4628 if (lesseq_defined_than (sym, prevDefns[i].sym)) 4629 return; 4630 else if (lesseq_defined_than (prevDefns[i].sym, sym)) 4631 { 4632 prevDefns[i].sym = sym; 4633 prevDefns[i].block = block; 4634 return; 4635 } 4636 } 4637 4638 { 4639 struct ada_symbol_info info; 4640 4641 info.sym = sym; 4642 info.block = block; 4643 obstack_grow (obstackp, &info, sizeof (struct ada_symbol_info)); 4644 } 4645 } 4646 4647 /* Number of ada_symbol_info structures currently collected in 4648 current vector in *OBSTACKP. */ 4649 4650 static int 4651 num_defns_collected (struct obstack *obstackp) 4652 { 4653 return obstack_object_size (obstackp) / sizeof (struct ada_symbol_info); 4654 } 4655 4656 /* Vector of ada_symbol_info structures currently collected in current 4657 vector in *OBSTACKP. If FINISH, close off the vector and return 4658 its final address. */ 4659 4660 static struct ada_symbol_info * 4661 defns_collected (struct obstack *obstackp, int finish) 4662 { 4663 if (finish) 4664 return obstack_finish (obstackp); 4665 else 4666 return (struct ada_symbol_info *) obstack_base (obstackp); 4667 } 4668 4669 /* Return a bound minimal symbol matching NAME according to Ada 4670 decoding rules. Returns an invalid symbol if there is no such 4671 minimal symbol. Names prefixed with "standard__" are handled 4672 specially: "standard__" is first stripped off, and only static and 4673 global symbols are searched. */ 4674 4675 struct bound_minimal_symbol 4676 ada_lookup_simple_minsym (const char *name) 4677 { 4678 struct bound_minimal_symbol result; 4679 struct objfile *objfile; 4680 struct minimal_symbol *msymbol; 4681 const int wild_match_p = should_use_wild_match (name); 4682 4683 memset (&result, 0, sizeof (result)); 4684 4685 /* Special case: If the user specifies a symbol name inside package 4686 Standard, do a non-wild matching of the symbol name without 4687 the "standard__" prefix. This was primarily introduced in order 4688 to allow the user to specifically access the standard exceptions 4689 using, for instance, Standard.Constraint_Error when Constraint_Error 4690 is ambiguous (due to the user defining its own Constraint_Error 4691 entity inside its program). */ 4692 if (strncmp (name, "standard__", sizeof ("standard__") - 1) == 0) 4693 name += sizeof ("standard__") - 1; 4694 4695 ALL_MSYMBOLS (objfile, msymbol) 4696 { 4697 if (match_name (MSYMBOL_LINKAGE_NAME (msymbol), name, wild_match_p) 4698 && MSYMBOL_TYPE (msymbol) != mst_solib_trampoline) 4699 { 4700 result.minsym = msymbol; 4701 result.objfile = objfile; 4702 break; 4703 } 4704 } 4705 4706 return result; 4707 } 4708 4709 /* For all subprograms that statically enclose the subprogram of the 4710 selected frame, add symbols matching identifier NAME in DOMAIN 4711 and their blocks to the list of data in OBSTACKP, as for 4712 ada_add_block_symbols (q.v.). If WILD_MATCH_P, treat as NAME 4713 with a wildcard prefix. */ 4714 4715 static void 4716 add_symbols_from_enclosing_procs (struct obstack *obstackp, 4717 const char *name, domain_enum namespace, 4718 int wild_match_p) 4719 { 4720 } 4721 4722 /* True if TYPE is definitely an artificial type supplied to a symbol 4723 for which no debugging information was given in the symbol file. */ 4724 4725 static int 4726 is_nondebugging_type (struct type *type) 4727 { 4728 const char *name = ada_type_name (type); 4729 4730 return (name != NULL && strcmp (name, "<variable, no debug info>") == 0); 4731 } 4732 4733 /* Return nonzero if TYPE1 and TYPE2 are two enumeration types 4734 that are deemed "identical" for practical purposes. 4735 4736 This function assumes that TYPE1 and TYPE2 are both TYPE_CODE_ENUM 4737 types and that their number of enumerals is identical (in other 4738 words, TYPE_NFIELDS (type1) == TYPE_NFIELDS (type2)). */ 4739 4740 static int 4741 ada_identical_enum_types_p (struct type *type1, struct type *type2) 4742 { 4743 int i; 4744 4745 /* The heuristic we use here is fairly conservative. We consider 4746 that 2 enumerate types are identical if they have the same 4747 number of enumerals and that all enumerals have the same 4748 underlying value and name. */ 4749 4750 /* All enums in the type should have an identical underlying value. */ 4751 for (i = 0; i < TYPE_NFIELDS (type1); i++) 4752 if (TYPE_FIELD_ENUMVAL (type1, i) != TYPE_FIELD_ENUMVAL (type2, i)) 4753 return 0; 4754 4755 /* All enumerals should also have the same name (modulo any numerical 4756 suffix). */ 4757 for (i = 0; i < TYPE_NFIELDS (type1); i++) 4758 { 4759 const char *name_1 = TYPE_FIELD_NAME (type1, i); 4760 const char *name_2 = TYPE_FIELD_NAME (type2, i); 4761 int len_1 = strlen (name_1); 4762 int len_2 = strlen (name_2); 4763 4764 ada_remove_trailing_digits (TYPE_FIELD_NAME (type1, i), &len_1); 4765 ada_remove_trailing_digits (TYPE_FIELD_NAME (type2, i), &len_2); 4766 if (len_1 != len_2 4767 || strncmp (TYPE_FIELD_NAME (type1, i), 4768 TYPE_FIELD_NAME (type2, i), 4769 len_1) != 0) 4770 return 0; 4771 } 4772 4773 return 1; 4774 } 4775 4776 /* Return nonzero if all the symbols in SYMS are all enumeral symbols 4777 that are deemed "identical" for practical purposes. Sometimes, 4778 enumerals are not strictly identical, but their types are so similar 4779 that they can be considered identical. 4780 4781 For instance, consider the following code: 4782 4783 type Color is (Black, Red, Green, Blue, White); 4784 type RGB_Color is new Color range Red .. Blue; 4785 4786 Type RGB_Color is a subrange of an implicit type which is a copy 4787 of type Color. If we call that implicit type RGB_ColorB ("B" is 4788 for "Base Type"), then type RGB_ColorB is a copy of type Color. 4789 As a result, when an expression references any of the enumeral 4790 by name (Eg. "print green"), the expression is technically 4791 ambiguous and the user should be asked to disambiguate. But 4792 doing so would only hinder the user, since it wouldn't matter 4793 what choice he makes, the outcome would always be the same. 4794 So, for practical purposes, we consider them as the same. */ 4795 4796 static int 4797 symbols_are_identical_enums (struct ada_symbol_info *syms, int nsyms) 4798 { 4799 int i; 4800 4801 /* Before performing a thorough comparison check of each type, 4802 we perform a series of inexpensive checks. We expect that these 4803 checks will quickly fail in the vast majority of cases, and thus 4804 help prevent the unnecessary use of a more expensive comparison. 4805 Said comparison also expects us to make some of these checks 4806 (see ada_identical_enum_types_p). */ 4807 4808 /* Quick check: All symbols should have an enum type. */ 4809 for (i = 0; i < nsyms; i++) 4810 if (TYPE_CODE (SYMBOL_TYPE (syms[i].sym)) != TYPE_CODE_ENUM) 4811 return 0; 4812 4813 /* Quick check: They should all have the same value. */ 4814 for (i = 1; i < nsyms; i++) 4815 if (SYMBOL_VALUE (syms[i].sym) != SYMBOL_VALUE (syms[0].sym)) 4816 return 0; 4817 4818 /* Quick check: They should all have the same number of enumerals. */ 4819 for (i = 1; i < nsyms; i++) 4820 if (TYPE_NFIELDS (SYMBOL_TYPE (syms[i].sym)) 4821 != TYPE_NFIELDS (SYMBOL_TYPE (syms[0].sym))) 4822 return 0; 4823 4824 /* All the sanity checks passed, so we might have a set of 4825 identical enumeration types. Perform a more complete 4826 comparison of the type of each symbol. */ 4827 for (i = 1; i < nsyms; i++) 4828 if (!ada_identical_enum_types_p (SYMBOL_TYPE (syms[i].sym), 4829 SYMBOL_TYPE (syms[0].sym))) 4830 return 0; 4831 4832 return 1; 4833 } 4834 4835 /* Remove any non-debugging symbols in SYMS[0 .. NSYMS-1] that definitely 4836 duplicate other symbols in the list (The only case I know of where 4837 this happens is when object files containing stabs-in-ecoff are 4838 linked with files containing ordinary ecoff debugging symbols (or no 4839 debugging symbols)). Modifies SYMS to squeeze out deleted entries. 4840 Returns the number of items in the modified list. */ 4841 4842 static int 4843 remove_extra_symbols (struct ada_symbol_info *syms, int nsyms) 4844 { 4845 int i, j; 4846 4847 /* We should never be called with less than 2 symbols, as there 4848 cannot be any extra symbol in that case. But it's easy to 4849 handle, since we have nothing to do in that case. */ 4850 if (nsyms < 2) 4851 return nsyms; 4852 4853 i = 0; 4854 while (i < nsyms) 4855 { 4856 int remove_p = 0; 4857 4858 /* If two symbols have the same name and one of them is a stub type, 4859 the get rid of the stub. */ 4860 4861 if (TYPE_STUB (SYMBOL_TYPE (syms[i].sym)) 4862 && SYMBOL_LINKAGE_NAME (syms[i].sym) != NULL) 4863 { 4864 for (j = 0; j < nsyms; j++) 4865 { 4866 if (j != i 4867 && !TYPE_STUB (SYMBOL_TYPE (syms[j].sym)) 4868 && SYMBOL_LINKAGE_NAME (syms[j].sym) != NULL 4869 && strcmp (SYMBOL_LINKAGE_NAME (syms[i].sym), 4870 SYMBOL_LINKAGE_NAME (syms[j].sym)) == 0) 4871 remove_p = 1; 4872 } 4873 } 4874 4875 /* Two symbols with the same name, same class and same address 4876 should be identical. */ 4877 4878 else if (SYMBOL_LINKAGE_NAME (syms[i].sym) != NULL 4879 && SYMBOL_CLASS (syms[i].sym) == LOC_STATIC 4880 && is_nondebugging_type (SYMBOL_TYPE (syms[i].sym))) 4881 { 4882 for (j = 0; j < nsyms; j += 1) 4883 { 4884 if (i != j 4885 && SYMBOL_LINKAGE_NAME (syms[j].sym) != NULL 4886 && strcmp (SYMBOL_LINKAGE_NAME (syms[i].sym), 4887 SYMBOL_LINKAGE_NAME (syms[j].sym)) == 0 4888 && SYMBOL_CLASS (syms[i].sym) == SYMBOL_CLASS (syms[j].sym) 4889 && SYMBOL_VALUE_ADDRESS (syms[i].sym) 4890 == SYMBOL_VALUE_ADDRESS (syms[j].sym)) 4891 remove_p = 1; 4892 } 4893 } 4894 4895 if (remove_p) 4896 { 4897 for (j = i + 1; j < nsyms; j += 1) 4898 syms[j - 1] = syms[j]; 4899 nsyms -= 1; 4900 } 4901 4902 i += 1; 4903 } 4904 4905 /* If all the remaining symbols are identical enumerals, then 4906 just keep the first one and discard the rest. 4907 4908 Unlike what we did previously, we do not discard any entry 4909 unless they are ALL identical. This is because the symbol 4910 comparison is not a strict comparison, but rather a practical 4911 comparison. If all symbols are considered identical, then 4912 we can just go ahead and use the first one and discard the rest. 4913 But if we cannot reduce the list to a single element, we have 4914 to ask the user to disambiguate anyways. And if we have to 4915 present a multiple-choice menu, it's less confusing if the list 4916 isn't missing some choices that were identical and yet distinct. */ 4917 if (symbols_are_identical_enums (syms, nsyms)) 4918 nsyms = 1; 4919 4920 return nsyms; 4921 } 4922 4923 /* Given a type that corresponds to a renaming entity, use the type name 4924 to extract the scope (package name or function name, fully qualified, 4925 and following the GNAT encoding convention) where this renaming has been 4926 defined. The string returned needs to be deallocated after use. */ 4927 4928 static char * 4929 xget_renaming_scope (struct type *renaming_type) 4930 { 4931 /* The renaming types adhere to the following convention: 4932 <scope>__<rename>___<XR extension>. 4933 So, to extract the scope, we search for the "___XR" extension, 4934 and then backtrack until we find the first "__". */ 4935 4936 const char *name = type_name_no_tag (renaming_type); 4937 char *suffix = strstr (name, "___XR"); 4938 char *last; 4939 int scope_len; 4940 char *scope; 4941 4942 /* Now, backtrack a bit until we find the first "__". Start looking 4943 at suffix - 3, as the <rename> part is at least one character long. */ 4944 4945 for (last = suffix - 3; last > name; last--) 4946 if (last[0] == '_' && last[1] == '_') 4947 break; 4948 4949 /* Make a copy of scope and return it. */ 4950 4951 scope_len = last - name; 4952 scope = (char *) xmalloc ((scope_len + 1) * sizeof (char)); 4953 4954 strncpy (scope, name, scope_len); 4955 scope[scope_len] = '\0'; 4956 4957 return scope; 4958 } 4959 4960 /* Return nonzero if NAME corresponds to a package name. */ 4961 4962 static int 4963 is_package_name (const char *name) 4964 { 4965 /* Here, We take advantage of the fact that no symbols are generated 4966 for packages, while symbols are generated for each function. 4967 So the condition for NAME represent a package becomes equivalent 4968 to NAME not existing in our list of symbols. There is only one 4969 small complication with library-level functions (see below). */ 4970 4971 char *fun_name; 4972 4973 /* If it is a function that has not been defined at library level, 4974 then we should be able to look it up in the symbols. */ 4975 if (standard_lookup (name, NULL, VAR_DOMAIN) != NULL) 4976 return 0; 4977 4978 /* Library-level function names start with "_ada_". See if function 4979 "_ada_" followed by NAME can be found. */ 4980 4981 /* Do a quick check that NAME does not contain "__", since library-level 4982 functions names cannot contain "__" in them. */ 4983 if (strstr (name, "__") != NULL) 4984 return 0; 4985 4986 fun_name = xstrprintf ("_ada_%s", name); 4987 4988 return (standard_lookup (fun_name, NULL, VAR_DOMAIN) == NULL); 4989 } 4990 4991 /* Return nonzero if SYM corresponds to a renaming entity that is 4992 not visible from FUNCTION_NAME. */ 4993 4994 static int 4995 old_renaming_is_invisible (const struct symbol *sym, const char *function_name) 4996 { 4997 char *scope; 4998 struct cleanup *old_chain; 4999 5000 if (SYMBOL_CLASS (sym) != LOC_TYPEDEF) 5001 return 0; 5002 5003 scope = xget_renaming_scope (SYMBOL_TYPE (sym)); 5004 old_chain = make_cleanup (xfree, scope); 5005 5006 /* If the rename has been defined in a package, then it is visible. */ 5007 if (is_package_name (scope)) 5008 { 5009 do_cleanups (old_chain); 5010 return 0; 5011 } 5012 5013 /* Check that the rename is in the current function scope by checking 5014 that its name starts with SCOPE. */ 5015 5016 /* If the function name starts with "_ada_", it means that it is 5017 a library-level function. Strip this prefix before doing the 5018 comparison, as the encoding for the renaming does not contain 5019 this prefix. */ 5020 if (strncmp (function_name, "_ada_", 5) == 0) 5021 function_name += 5; 5022 5023 { 5024 int is_invisible = strncmp (function_name, scope, strlen (scope)) != 0; 5025 5026 do_cleanups (old_chain); 5027 return is_invisible; 5028 } 5029 } 5030 5031 /* Remove entries from SYMS that corresponds to a renaming entity that 5032 is not visible from the function associated with CURRENT_BLOCK or 5033 that is superfluous due to the presence of more specific renaming 5034 information. Places surviving symbols in the initial entries of 5035 SYMS and returns the number of surviving symbols. 5036 5037 Rationale: 5038 First, in cases where an object renaming is implemented as a 5039 reference variable, GNAT may produce both the actual reference 5040 variable and the renaming encoding. In this case, we discard the 5041 latter. 5042 5043 Second, GNAT emits a type following a specified encoding for each renaming 5044 entity. Unfortunately, STABS currently does not support the definition 5045 of types that are local to a given lexical block, so all renamings types 5046 are emitted at library level. As a consequence, if an application 5047 contains two renaming entities using the same name, and a user tries to 5048 print the value of one of these entities, the result of the ada symbol 5049 lookup will also contain the wrong renaming type. 5050 5051 This function partially covers for this limitation by attempting to 5052 remove from the SYMS list renaming symbols that should be visible 5053 from CURRENT_BLOCK. However, there does not seem be a 100% reliable 5054 method with the current information available. The implementation 5055 below has a couple of limitations (FIXME: brobecker-2003-05-12): 5056 5057 - When the user tries to print a rename in a function while there 5058 is another rename entity defined in a package: Normally, the 5059 rename in the function has precedence over the rename in the 5060 package, so the latter should be removed from the list. This is 5061 currently not the case. 5062 5063 - This function will incorrectly remove valid renames if 5064 the CURRENT_BLOCK corresponds to a function which symbol name 5065 has been changed by an "Export" pragma. As a consequence, 5066 the user will be unable to print such rename entities. */ 5067 5068 static int 5069 remove_irrelevant_renamings (struct ada_symbol_info *syms, 5070 int nsyms, const struct block *current_block) 5071 { 5072 struct symbol *current_function; 5073 const char *current_function_name; 5074 int i; 5075 int is_new_style_renaming; 5076 5077 /* If there is both a renaming foo___XR... encoded as a variable and 5078 a simple variable foo in the same block, discard the latter. 5079 First, zero out such symbols, then compress. */ 5080 is_new_style_renaming = 0; 5081 for (i = 0; i < nsyms; i += 1) 5082 { 5083 struct symbol *sym = syms[i].sym; 5084 const struct block *block = syms[i].block; 5085 const char *name; 5086 const char *suffix; 5087 5088 if (sym == NULL || SYMBOL_CLASS (sym) == LOC_TYPEDEF) 5089 continue; 5090 name = SYMBOL_LINKAGE_NAME (sym); 5091 suffix = strstr (name, "___XR"); 5092 5093 if (suffix != NULL) 5094 { 5095 int name_len = suffix - name; 5096 int j; 5097 5098 is_new_style_renaming = 1; 5099 for (j = 0; j < nsyms; j += 1) 5100 if (i != j && syms[j].sym != NULL 5101 && strncmp (name, SYMBOL_LINKAGE_NAME (syms[j].sym), 5102 name_len) == 0 5103 && block == syms[j].block) 5104 syms[j].sym = NULL; 5105 } 5106 } 5107 if (is_new_style_renaming) 5108 { 5109 int j, k; 5110 5111 for (j = k = 0; j < nsyms; j += 1) 5112 if (syms[j].sym != NULL) 5113 { 5114 syms[k] = syms[j]; 5115 k += 1; 5116 } 5117 return k; 5118 } 5119 5120 /* Extract the function name associated to CURRENT_BLOCK. 5121 Abort if unable to do so. */ 5122 5123 if (current_block == NULL) 5124 return nsyms; 5125 5126 current_function = block_linkage_function (current_block); 5127 if (current_function == NULL) 5128 return nsyms; 5129 5130 current_function_name = SYMBOL_LINKAGE_NAME (current_function); 5131 if (current_function_name == NULL) 5132 return nsyms; 5133 5134 /* Check each of the symbols, and remove it from the list if it is 5135 a type corresponding to a renaming that is out of the scope of 5136 the current block. */ 5137 5138 i = 0; 5139 while (i < nsyms) 5140 { 5141 if (ada_parse_renaming (syms[i].sym, NULL, NULL, NULL) 5142 == ADA_OBJECT_RENAMING 5143 && old_renaming_is_invisible (syms[i].sym, current_function_name)) 5144 { 5145 int j; 5146 5147 for (j = i + 1; j < nsyms; j += 1) 5148 syms[j - 1] = syms[j]; 5149 nsyms -= 1; 5150 } 5151 else 5152 i += 1; 5153 } 5154 5155 return nsyms; 5156 } 5157 5158 /* Add to OBSTACKP all symbols from BLOCK (and its super-blocks) 5159 whose name and domain match NAME and DOMAIN respectively. 5160 If no match was found, then extend the search to "enclosing" 5161 routines (in other words, if we're inside a nested function, 5162 search the symbols defined inside the enclosing functions). 5163 If WILD_MATCH_P is nonzero, perform the naming matching in 5164 "wild" mode (see function "wild_match" for more info). 5165 5166 Note: This function assumes that OBSTACKP has 0 (zero) element in it. */ 5167 5168 static void 5169 ada_add_local_symbols (struct obstack *obstackp, const char *name, 5170 const struct block *block, domain_enum domain, 5171 int wild_match_p) 5172 { 5173 int block_depth = 0; 5174 5175 while (block != NULL) 5176 { 5177 block_depth += 1; 5178 ada_add_block_symbols (obstackp, block, name, domain, NULL, 5179 wild_match_p); 5180 5181 /* If we found a non-function match, assume that's the one. */ 5182 if (is_nonfunction (defns_collected (obstackp, 0), 5183 num_defns_collected (obstackp))) 5184 return; 5185 5186 block = BLOCK_SUPERBLOCK (block); 5187 } 5188 5189 /* If no luck so far, try to find NAME as a local symbol in some lexically 5190 enclosing subprogram. */ 5191 if (num_defns_collected (obstackp) == 0 && block_depth > 2) 5192 add_symbols_from_enclosing_procs (obstackp, name, domain, wild_match_p); 5193 } 5194 5195 /* An object of this type is used as the user_data argument when 5196 calling the map_matching_symbols method. */ 5197 5198 struct match_data 5199 { 5200 struct objfile *objfile; 5201 struct obstack *obstackp; 5202 struct symbol *arg_sym; 5203 int found_sym; 5204 }; 5205 5206 /* A callback for add_matching_symbols that adds SYM, found in BLOCK, 5207 to a list of symbols. DATA0 is a pointer to a struct match_data * 5208 containing the obstack that collects the symbol list, the file that SYM 5209 must come from, a flag indicating whether a non-argument symbol has 5210 been found in the current block, and the last argument symbol 5211 passed in SYM within the current block (if any). When SYM is null, 5212 marking the end of a block, the argument symbol is added if no 5213 other has been found. */ 5214 5215 static int 5216 aux_add_nonlocal_symbols (struct block *block, struct symbol *sym, void *data0) 5217 { 5218 struct match_data *data = (struct match_data *) data0; 5219 5220 if (sym == NULL) 5221 { 5222 if (!data->found_sym && data->arg_sym != NULL) 5223 add_defn_to_vec (data->obstackp, 5224 fixup_symbol_section (data->arg_sym, data->objfile), 5225 block); 5226 data->found_sym = 0; 5227 data->arg_sym = NULL; 5228 } 5229 else 5230 { 5231 if (SYMBOL_CLASS (sym) == LOC_UNRESOLVED) 5232 return 0; 5233 else if (SYMBOL_IS_ARGUMENT (sym)) 5234 data->arg_sym = sym; 5235 else 5236 { 5237 data->found_sym = 1; 5238 add_defn_to_vec (data->obstackp, 5239 fixup_symbol_section (sym, data->objfile), 5240 block); 5241 } 5242 } 5243 return 0; 5244 } 5245 5246 /* Implements compare_names, but only applying the comparision using 5247 the given CASING. */ 5248 5249 static int 5250 compare_names_with_case (const char *string1, const char *string2, 5251 enum case_sensitivity casing) 5252 { 5253 while (*string1 != '\0' && *string2 != '\0') 5254 { 5255 char c1, c2; 5256 5257 if (isspace (*string1) || isspace (*string2)) 5258 return strcmp_iw_ordered (string1, string2); 5259 5260 if (casing == case_sensitive_off) 5261 { 5262 c1 = tolower (*string1); 5263 c2 = tolower (*string2); 5264 } 5265 else 5266 { 5267 c1 = *string1; 5268 c2 = *string2; 5269 } 5270 if (c1 != c2) 5271 break; 5272 5273 string1 += 1; 5274 string2 += 1; 5275 } 5276 5277 switch (*string1) 5278 { 5279 case '(': 5280 return strcmp_iw_ordered (string1, string2); 5281 case '_': 5282 if (*string2 == '\0') 5283 { 5284 if (is_name_suffix (string1)) 5285 return 0; 5286 else 5287 return 1; 5288 } 5289 /* FALLTHROUGH */ 5290 default: 5291 if (*string2 == '(') 5292 return strcmp_iw_ordered (string1, string2); 5293 else 5294 { 5295 if (casing == case_sensitive_off) 5296 return tolower (*string1) - tolower (*string2); 5297 else 5298 return *string1 - *string2; 5299 } 5300 } 5301 } 5302 5303 /* Compare STRING1 to STRING2, with results as for strcmp. 5304 Compatible with strcmp_iw_ordered in that... 5305 5306 strcmp_iw_ordered (STRING1, STRING2) <= 0 5307 5308 ... implies... 5309 5310 compare_names (STRING1, STRING2) <= 0 5311 5312 (they may differ as to what symbols compare equal). */ 5313 5314 static int 5315 compare_names (const char *string1, const char *string2) 5316 { 5317 int result; 5318 5319 /* Similar to what strcmp_iw_ordered does, we need to perform 5320 a case-insensitive comparison first, and only resort to 5321 a second, case-sensitive, comparison if the first one was 5322 not sufficient to differentiate the two strings. */ 5323 5324 result = compare_names_with_case (string1, string2, case_sensitive_off); 5325 if (result == 0) 5326 result = compare_names_with_case (string1, string2, case_sensitive_on); 5327 5328 return result; 5329 } 5330 5331 /* Add to OBSTACKP all non-local symbols whose name and domain match 5332 NAME and DOMAIN respectively. The search is performed on GLOBAL_BLOCK 5333 symbols if GLOBAL is non-zero, or on STATIC_BLOCK symbols otherwise. */ 5334 5335 static void 5336 add_nonlocal_symbols (struct obstack *obstackp, const char *name, 5337 domain_enum domain, int global, 5338 int is_wild_match) 5339 { 5340 struct objfile *objfile; 5341 struct match_data data; 5342 5343 memset (&data, 0, sizeof data); 5344 data.obstackp = obstackp; 5345 5346 ALL_OBJFILES (objfile) 5347 { 5348 data.objfile = objfile; 5349 5350 if (is_wild_match) 5351 objfile->sf->qf->map_matching_symbols (objfile, name, domain, global, 5352 aux_add_nonlocal_symbols, &data, 5353 wild_match, NULL); 5354 else 5355 objfile->sf->qf->map_matching_symbols (objfile, name, domain, global, 5356 aux_add_nonlocal_symbols, &data, 5357 full_match, compare_names); 5358 } 5359 5360 if (num_defns_collected (obstackp) == 0 && global && !is_wild_match) 5361 { 5362 ALL_OBJFILES (objfile) 5363 { 5364 char *name1 = alloca (strlen (name) + sizeof ("_ada_")); 5365 strcpy (name1, "_ada_"); 5366 strcpy (name1 + sizeof ("_ada_") - 1, name); 5367 data.objfile = objfile; 5368 objfile->sf->qf->map_matching_symbols (objfile, name1, domain, 5369 global, 5370 aux_add_nonlocal_symbols, 5371 &data, 5372 full_match, compare_names); 5373 } 5374 } 5375 } 5376 5377 /* Find symbols in DOMAIN matching NAME0, in BLOCK0 and, if full_search is 5378 non-zero, enclosing scope and in global scopes, returning the number of 5379 matches. 5380 Sets *RESULTS to point to a vector of (SYM,BLOCK) tuples, 5381 indicating the symbols found and the blocks and symbol tables (if 5382 any) in which they were found. This vector is transient---good only to 5383 the next call of ada_lookup_symbol_list. 5384 5385 When full_search is non-zero, any non-function/non-enumeral 5386 symbol match within the nest of blocks whose innermost member is BLOCK0, 5387 is the one match returned (no other matches in that or 5388 enclosing blocks is returned). If there are any matches in or 5389 surrounding BLOCK0, then these alone are returned. 5390 5391 Names prefixed with "standard__" are handled specially: "standard__" 5392 is first stripped off, and only static and global symbols are searched. */ 5393 5394 static int 5395 ada_lookup_symbol_list_worker (const char *name0, const struct block *block0, 5396 domain_enum namespace, 5397 struct ada_symbol_info **results, 5398 int full_search) 5399 { 5400 struct symbol *sym; 5401 const struct block *block; 5402 const char *name; 5403 const int wild_match_p = should_use_wild_match (name0); 5404 int syms_from_global_search = 0; 5405 int ndefns; 5406 5407 obstack_free (&symbol_list_obstack, NULL); 5408 obstack_init (&symbol_list_obstack); 5409 5410 /* Search specified block and its superiors. */ 5411 5412 name = name0; 5413 block = block0; 5414 5415 /* Special case: If the user specifies a symbol name inside package 5416 Standard, do a non-wild matching of the symbol name without 5417 the "standard__" prefix. This was primarily introduced in order 5418 to allow the user to specifically access the standard exceptions 5419 using, for instance, Standard.Constraint_Error when Constraint_Error 5420 is ambiguous (due to the user defining its own Constraint_Error 5421 entity inside its program). */ 5422 if (strncmp (name0, "standard__", sizeof ("standard__") - 1) == 0) 5423 { 5424 block = NULL; 5425 name = name0 + sizeof ("standard__") - 1; 5426 } 5427 5428 /* Check the non-global symbols. If we have ANY match, then we're done. */ 5429 5430 if (block != NULL) 5431 { 5432 if (full_search) 5433 { 5434 ada_add_local_symbols (&symbol_list_obstack, name, block, 5435 namespace, wild_match_p); 5436 } 5437 else 5438 { 5439 /* In the !full_search case we're are being called by 5440 ada_iterate_over_symbols, and we don't want to search 5441 superblocks. */ 5442 ada_add_block_symbols (&symbol_list_obstack, block, name, 5443 namespace, NULL, wild_match_p); 5444 } 5445 if (num_defns_collected (&symbol_list_obstack) > 0 || !full_search) 5446 goto done; 5447 } 5448 5449 /* No non-global symbols found. Check our cache to see if we have 5450 already performed this search before. If we have, then return 5451 the same result. */ 5452 5453 if (lookup_cached_symbol (name0, namespace, &sym, &block)) 5454 { 5455 if (sym != NULL) 5456 add_defn_to_vec (&symbol_list_obstack, sym, block); 5457 goto done; 5458 } 5459 5460 syms_from_global_search = 1; 5461 5462 /* Search symbols from all global blocks. */ 5463 5464 add_nonlocal_symbols (&symbol_list_obstack, name, namespace, 1, 5465 wild_match_p); 5466 5467 /* Now add symbols from all per-file blocks if we've gotten no hits 5468 (not strictly correct, but perhaps better than an error). */ 5469 5470 if (num_defns_collected (&symbol_list_obstack) == 0) 5471 add_nonlocal_symbols (&symbol_list_obstack, name, namespace, 0, 5472 wild_match_p); 5473 5474 done: 5475 ndefns = num_defns_collected (&symbol_list_obstack); 5476 *results = defns_collected (&symbol_list_obstack, 1); 5477 5478 ndefns = remove_extra_symbols (*results, ndefns); 5479 5480 if (ndefns == 0 && full_search && syms_from_global_search) 5481 cache_symbol (name0, namespace, NULL, NULL); 5482 5483 if (ndefns == 1 && full_search && syms_from_global_search) 5484 cache_symbol (name0, namespace, (*results)[0].sym, (*results)[0].block); 5485 5486 ndefns = remove_irrelevant_renamings (*results, ndefns, block0); 5487 5488 return ndefns; 5489 } 5490 5491 /* Find symbols in DOMAIN matching NAME0, in BLOCK0 and enclosing scope and 5492 in global scopes, returning the number of matches, and setting *RESULTS 5493 to a vector of (SYM,BLOCK) tuples. 5494 See ada_lookup_symbol_list_worker for further details. */ 5495 5496 int 5497 ada_lookup_symbol_list (const char *name0, const struct block *block0, 5498 domain_enum domain, struct ada_symbol_info **results) 5499 { 5500 return ada_lookup_symbol_list_worker (name0, block0, domain, results, 1); 5501 } 5502 5503 /* Implementation of the la_iterate_over_symbols method. */ 5504 5505 static void 5506 ada_iterate_over_symbols (const struct block *block, 5507 const char *name, domain_enum domain, 5508 symbol_found_callback_ftype *callback, 5509 void *data) 5510 { 5511 int ndefs, i; 5512 struct ada_symbol_info *results; 5513 5514 ndefs = ada_lookup_symbol_list_worker (name, block, domain, &results, 0); 5515 for (i = 0; i < ndefs; ++i) 5516 { 5517 if (! (*callback) (results[i].sym, data)) 5518 break; 5519 } 5520 } 5521 5522 /* If NAME is the name of an entity, return a string that should 5523 be used to look that entity up in Ada units. This string should 5524 be deallocated after use using xfree. 5525 5526 NAME can have any form that the "break" or "print" commands might 5527 recognize. In other words, it does not have to be the "natural" 5528 name, or the "encoded" name. */ 5529 5530 char * 5531 ada_name_for_lookup (const char *name) 5532 { 5533 char *canon; 5534 int nlen = strlen (name); 5535 5536 if (name[0] == '<' && name[nlen - 1] == '>') 5537 { 5538 canon = xmalloc (nlen - 1); 5539 memcpy (canon, name + 1, nlen - 2); 5540 canon[nlen - 2] = '\0'; 5541 } 5542 else 5543 canon = xstrdup (ada_encode (ada_fold_name (name))); 5544 return canon; 5545 } 5546 5547 /* The result is as for ada_lookup_symbol_list with FULL_SEARCH set 5548 to 1, but choosing the first symbol found if there are multiple 5549 choices. 5550 5551 The result is stored in *INFO, which must be non-NULL. 5552 If no match is found, INFO->SYM is set to NULL. */ 5553 5554 void 5555 ada_lookup_encoded_symbol (const char *name, const struct block *block, 5556 domain_enum namespace, 5557 struct ada_symbol_info *info) 5558 { 5559 struct ada_symbol_info *candidates; 5560 int n_candidates; 5561 5562 gdb_assert (info != NULL); 5563 memset (info, 0, sizeof (struct ada_symbol_info)); 5564 5565 n_candidates = ada_lookup_symbol_list (name, block, namespace, &candidates); 5566 if (n_candidates == 0) 5567 return; 5568 5569 *info = candidates[0]; 5570 info->sym = fixup_symbol_section (info->sym, NULL); 5571 } 5572 5573 /* Return a symbol in DOMAIN matching NAME, in BLOCK0 and enclosing 5574 scope and in global scopes, or NULL if none. NAME is folded and 5575 encoded first. Otherwise, the result is as for ada_lookup_symbol_list, 5576 choosing the first symbol if there are multiple choices. 5577 If IS_A_FIELD_OF_THIS is not NULL, it is set to zero. */ 5578 5579 struct symbol * 5580 ada_lookup_symbol (const char *name, const struct block *block0, 5581 domain_enum namespace, int *is_a_field_of_this) 5582 { 5583 struct ada_symbol_info info; 5584 5585 if (is_a_field_of_this != NULL) 5586 *is_a_field_of_this = 0; 5587 5588 ada_lookup_encoded_symbol (ada_encode (ada_fold_name (name)), 5589 block0, namespace, &info); 5590 return info.sym; 5591 } 5592 5593 static struct symbol * 5594 ada_lookup_symbol_nonlocal (const struct language_defn *langdef, 5595 const char *name, 5596 const struct block *block, 5597 const domain_enum domain) 5598 { 5599 struct symbol *sym; 5600 5601 sym = ada_lookup_symbol (name, block_static_block (block), domain, NULL); 5602 if (sym != NULL) 5603 return sym; 5604 5605 /* If we haven't found a match at this point, try the primitive 5606 types. In other languages, this search is performed before 5607 searching for global symbols in order to short-circuit that 5608 global-symbol search if it happens that the name corresponds 5609 to a primitive type. But we cannot do the same in Ada, because 5610 it is perfectly legitimate for a program to declare a type which 5611 has the same name as a standard type. If looking up a type in 5612 that situation, we have traditionally ignored the primitive type 5613 in favor of user-defined types. This is why, unlike most other 5614 languages, we search the primitive types this late and only after 5615 having searched the global symbols without success. */ 5616 5617 if (domain == VAR_DOMAIN) 5618 { 5619 struct gdbarch *gdbarch; 5620 5621 if (block == NULL) 5622 gdbarch = target_gdbarch (); 5623 else 5624 gdbarch = block_gdbarch (block); 5625 sym = language_lookup_primitive_type_as_symbol (langdef, gdbarch, name); 5626 if (sym != NULL) 5627 return sym; 5628 } 5629 5630 return NULL; 5631 } 5632 5633 5634 /* True iff STR is a possible encoded suffix of a normal Ada name 5635 that is to be ignored for matching purposes. Suffixes of parallel 5636 names (e.g., XVE) are not included here. Currently, the possible suffixes 5637 are given by any of the regular expressions: 5638 5639 [.$][0-9]+ [nested subprogram suffix, on platforms such as GNU/Linux] 5640 ___[0-9]+ [nested subprogram suffix, on platforms such as HP/UX] 5641 TKB [subprogram suffix for task bodies] 5642 _E[0-9]+[bs]$ [protected object entry suffixes] 5643 (X[nb]*)?((\$|__)[0-9](_?[0-9]+)|___(JM|LJM|X([FDBUP].*|R[^T]?)))?$ 5644 5645 Also, any leading "__[0-9]+" sequence is skipped before the suffix 5646 match is performed. This sequence is used to differentiate homonyms, 5647 is an optional part of a valid name suffix. */ 5648 5649 static int 5650 is_name_suffix (const char *str) 5651 { 5652 int k; 5653 const char *matching; 5654 const int len = strlen (str); 5655 5656 /* Skip optional leading __[0-9]+. */ 5657 5658 if (len > 3 && str[0] == '_' && str[1] == '_' && isdigit (str[2])) 5659 { 5660 str += 3; 5661 while (isdigit (str[0])) 5662 str += 1; 5663 } 5664 5665 /* [.$][0-9]+ */ 5666 5667 if (str[0] == '.' || str[0] == '$') 5668 { 5669 matching = str + 1; 5670 while (isdigit (matching[0])) 5671 matching += 1; 5672 if (matching[0] == '\0') 5673 return 1; 5674 } 5675 5676 /* ___[0-9]+ */ 5677 5678 if (len > 3 && str[0] == '_' && str[1] == '_' && str[2] == '_') 5679 { 5680 matching = str + 3; 5681 while (isdigit (matching[0])) 5682 matching += 1; 5683 if (matching[0] == '\0') 5684 return 1; 5685 } 5686 5687 /* "TKB" suffixes are used for subprograms implementing task bodies. */ 5688 5689 if (strcmp (str, "TKB") == 0) 5690 return 1; 5691 5692 #if 0 5693 /* FIXME: brobecker/2005-09-23: Protected Object subprograms end 5694 with a N at the end. Unfortunately, the compiler uses the same 5695 convention for other internal types it creates. So treating 5696 all entity names that end with an "N" as a name suffix causes 5697 some regressions. For instance, consider the case of an enumerated 5698 type. To support the 'Image attribute, it creates an array whose 5699 name ends with N. 5700 Having a single character like this as a suffix carrying some 5701 information is a bit risky. Perhaps we should change the encoding 5702 to be something like "_N" instead. In the meantime, do not do 5703 the following check. */ 5704 /* Protected Object Subprograms */ 5705 if (len == 1 && str [0] == 'N') 5706 return 1; 5707 #endif 5708 5709 /* _E[0-9]+[bs]$ */ 5710 if (len > 3 && str[0] == '_' && str [1] == 'E' && isdigit (str[2])) 5711 { 5712 matching = str + 3; 5713 while (isdigit (matching[0])) 5714 matching += 1; 5715 if ((matching[0] == 'b' || matching[0] == 's') 5716 && matching [1] == '\0') 5717 return 1; 5718 } 5719 5720 /* ??? We should not modify STR directly, as we are doing below. This 5721 is fine in this case, but may become problematic later if we find 5722 that this alternative did not work, and want to try matching 5723 another one from the begining of STR. Since we modified it, we 5724 won't be able to find the begining of the string anymore! */ 5725 if (str[0] == 'X') 5726 { 5727 str += 1; 5728 while (str[0] != '_' && str[0] != '\0') 5729 { 5730 if (str[0] != 'n' && str[0] != 'b') 5731 return 0; 5732 str += 1; 5733 } 5734 } 5735 5736 if (str[0] == '\000') 5737 return 1; 5738 5739 if (str[0] == '_') 5740 { 5741 if (str[1] != '_' || str[2] == '\000') 5742 return 0; 5743 if (str[2] == '_') 5744 { 5745 if (strcmp (str + 3, "JM") == 0) 5746 return 1; 5747 /* FIXME: brobecker/2004-09-30: GNAT will soon stop using 5748 the LJM suffix in favor of the JM one. But we will 5749 still accept LJM as a valid suffix for a reasonable 5750 amount of time, just to allow ourselves to debug programs 5751 compiled using an older version of GNAT. */ 5752 if (strcmp (str + 3, "LJM") == 0) 5753 return 1; 5754 if (str[3] != 'X') 5755 return 0; 5756 if (str[4] == 'F' || str[4] == 'D' || str[4] == 'B' 5757 || str[4] == 'U' || str[4] == 'P') 5758 return 1; 5759 if (str[4] == 'R' && str[5] != 'T') 5760 return 1; 5761 return 0; 5762 } 5763 if (!isdigit (str[2])) 5764 return 0; 5765 for (k = 3; str[k] != '\0'; k += 1) 5766 if (!isdigit (str[k]) && str[k] != '_') 5767 return 0; 5768 return 1; 5769 } 5770 if (str[0] == '$' && isdigit (str[1])) 5771 { 5772 for (k = 2; str[k] != '\0'; k += 1) 5773 if (!isdigit (str[k]) && str[k] != '_') 5774 return 0; 5775 return 1; 5776 } 5777 return 0; 5778 } 5779 5780 /* Return non-zero if the string starting at NAME and ending before 5781 NAME_END contains no capital letters. */ 5782 5783 static int 5784 is_valid_name_for_wild_match (const char *name0) 5785 { 5786 const char *decoded_name = ada_decode (name0); 5787 int i; 5788 5789 /* If the decoded name starts with an angle bracket, it means that 5790 NAME0 does not follow the GNAT encoding format. It should then 5791 not be allowed as a possible wild match. */ 5792 if (decoded_name[0] == '<') 5793 return 0; 5794 5795 for (i=0; decoded_name[i] != '\0'; i++) 5796 if (isalpha (decoded_name[i]) && !islower (decoded_name[i])) 5797 return 0; 5798 5799 return 1; 5800 } 5801 5802 /* Advance *NAMEP to next occurrence of TARGET0 in the string NAME0 5803 that could start a simple name. Assumes that *NAMEP points into 5804 the string beginning at NAME0. */ 5805 5806 static int 5807 advance_wild_match (const char **namep, const char *name0, int target0) 5808 { 5809 const char *name = *namep; 5810 5811 while (1) 5812 { 5813 int t0, t1; 5814 5815 t0 = *name; 5816 if (t0 == '_') 5817 { 5818 t1 = name[1]; 5819 if ((t1 >= 'a' && t1 <= 'z') || (t1 >= '0' && t1 <= '9')) 5820 { 5821 name += 1; 5822 if (name == name0 + 5 && strncmp (name0, "_ada", 4) == 0) 5823 break; 5824 else 5825 name += 1; 5826 } 5827 else if (t1 == '_' && ((name[2] >= 'a' && name[2] <= 'z') 5828 || name[2] == target0)) 5829 { 5830 name += 2; 5831 break; 5832 } 5833 else 5834 return 0; 5835 } 5836 else if ((t0 >= 'a' && t0 <= 'z') || (t0 >= '0' && t0 <= '9')) 5837 name += 1; 5838 else 5839 return 0; 5840 } 5841 5842 *namep = name; 5843 return 1; 5844 } 5845 5846 /* Return 0 iff NAME encodes a name of the form prefix.PATN. Ignores any 5847 informational suffixes of NAME (i.e., for which is_name_suffix is 5848 true). Assumes that PATN is a lower-cased Ada simple name. */ 5849 5850 static int 5851 wild_match (const char *name, const char *patn) 5852 { 5853 const char *p; 5854 const char *name0 = name; 5855 5856 while (1) 5857 { 5858 const char *match = name; 5859 5860 if (*name == *patn) 5861 { 5862 for (name += 1, p = patn + 1; *p != '\0'; name += 1, p += 1) 5863 if (*p != *name) 5864 break; 5865 if (*p == '\0' && is_name_suffix (name)) 5866 return match != name0 && !is_valid_name_for_wild_match (name0); 5867 5868 if (name[-1] == '_') 5869 name -= 1; 5870 } 5871 if (!advance_wild_match (&name, name0, *patn)) 5872 return 1; 5873 } 5874 } 5875 5876 /* Returns 0 iff symbol name SYM_NAME matches SEARCH_NAME, apart from 5877 informational suffix. */ 5878 5879 static int 5880 full_match (const char *sym_name, const char *search_name) 5881 { 5882 return !match_name (sym_name, search_name, 0); 5883 } 5884 5885 5886 /* Add symbols from BLOCK matching identifier NAME in DOMAIN to 5887 vector *defn_symbols, updating the list of symbols in OBSTACKP 5888 (if necessary). If WILD, treat as NAME with a wildcard prefix. 5889 OBJFILE is the section containing BLOCK. */ 5890 5891 static void 5892 ada_add_block_symbols (struct obstack *obstackp, 5893 const struct block *block, const char *name, 5894 domain_enum domain, struct objfile *objfile, 5895 int wild) 5896 { 5897 struct block_iterator iter; 5898 int name_len = strlen (name); 5899 /* A matching argument symbol, if any. */ 5900 struct symbol *arg_sym; 5901 /* Set true when we find a matching non-argument symbol. */ 5902 int found_sym; 5903 struct symbol *sym; 5904 5905 arg_sym = NULL; 5906 found_sym = 0; 5907 if (wild) 5908 { 5909 for (sym = block_iter_match_first (block, name, wild_match, &iter); 5910 sym != NULL; sym = block_iter_match_next (name, wild_match, &iter)) 5911 { 5912 if (symbol_matches_domain (SYMBOL_LANGUAGE (sym), 5913 SYMBOL_DOMAIN (sym), domain) 5914 && wild_match (SYMBOL_LINKAGE_NAME (sym), name) == 0) 5915 { 5916 if (SYMBOL_CLASS (sym) == LOC_UNRESOLVED) 5917 continue; 5918 else if (SYMBOL_IS_ARGUMENT (sym)) 5919 arg_sym = sym; 5920 else 5921 { 5922 found_sym = 1; 5923 add_defn_to_vec (obstackp, 5924 fixup_symbol_section (sym, objfile), 5925 block); 5926 } 5927 } 5928 } 5929 } 5930 else 5931 { 5932 for (sym = block_iter_match_first (block, name, full_match, &iter); 5933 sym != NULL; sym = block_iter_match_next (name, full_match, &iter)) 5934 { 5935 if (symbol_matches_domain (SYMBOL_LANGUAGE (sym), 5936 SYMBOL_DOMAIN (sym), domain)) 5937 { 5938 if (SYMBOL_CLASS (sym) != LOC_UNRESOLVED) 5939 { 5940 if (SYMBOL_IS_ARGUMENT (sym)) 5941 arg_sym = sym; 5942 else 5943 { 5944 found_sym = 1; 5945 add_defn_to_vec (obstackp, 5946 fixup_symbol_section (sym, objfile), 5947 block); 5948 } 5949 } 5950 } 5951 } 5952 } 5953 5954 if (!found_sym && arg_sym != NULL) 5955 { 5956 add_defn_to_vec (obstackp, 5957 fixup_symbol_section (arg_sym, objfile), 5958 block); 5959 } 5960 5961 if (!wild) 5962 { 5963 arg_sym = NULL; 5964 found_sym = 0; 5965 5966 ALL_BLOCK_SYMBOLS (block, iter, sym) 5967 { 5968 if (symbol_matches_domain (SYMBOL_LANGUAGE (sym), 5969 SYMBOL_DOMAIN (sym), domain)) 5970 { 5971 int cmp; 5972 5973 cmp = (int) '_' - (int) SYMBOL_LINKAGE_NAME (sym)[0]; 5974 if (cmp == 0) 5975 { 5976 cmp = strncmp ("_ada_", SYMBOL_LINKAGE_NAME (sym), 5); 5977 if (cmp == 0) 5978 cmp = strncmp (name, SYMBOL_LINKAGE_NAME (sym) + 5, 5979 name_len); 5980 } 5981 5982 if (cmp == 0 5983 && is_name_suffix (SYMBOL_LINKAGE_NAME (sym) + name_len + 5)) 5984 { 5985 if (SYMBOL_CLASS (sym) != LOC_UNRESOLVED) 5986 { 5987 if (SYMBOL_IS_ARGUMENT (sym)) 5988 arg_sym = sym; 5989 else 5990 { 5991 found_sym = 1; 5992 add_defn_to_vec (obstackp, 5993 fixup_symbol_section (sym, objfile), 5994 block); 5995 } 5996 } 5997 } 5998 } 5999 } 6000 6001 /* NOTE: This really shouldn't be needed for _ada_ symbols. 6002 They aren't parameters, right? */ 6003 if (!found_sym && arg_sym != NULL) 6004 { 6005 add_defn_to_vec (obstackp, 6006 fixup_symbol_section (arg_sym, objfile), 6007 block); 6008 } 6009 } 6010 } 6011 6012 6013 /* Symbol Completion */ 6014 6015 /* If SYM_NAME is a completion candidate for TEXT, return this symbol 6016 name in a form that's appropriate for the completion. The result 6017 does not need to be deallocated, but is only good until the next call. 6018 6019 TEXT_LEN is equal to the length of TEXT. 6020 Perform a wild match if WILD_MATCH_P is set. 6021 ENCODED_P should be set if TEXT represents the start of a symbol name 6022 in its encoded form. */ 6023 6024 static const char * 6025 symbol_completion_match (const char *sym_name, 6026 const char *text, int text_len, 6027 int wild_match_p, int encoded_p) 6028 { 6029 const int verbatim_match = (text[0] == '<'); 6030 int match = 0; 6031 6032 if (verbatim_match) 6033 { 6034 /* Strip the leading angle bracket. */ 6035 text = text + 1; 6036 text_len--; 6037 } 6038 6039 /* First, test against the fully qualified name of the symbol. */ 6040 6041 if (strncmp (sym_name, text, text_len) == 0) 6042 match = 1; 6043 6044 if (match && !encoded_p) 6045 { 6046 /* One needed check before declaring a positive match is to verify 6047 that iff we are doing a verbatim match, the decoded version 6048 of the symbol name starts with '<'. Otherwise, this symbol name 6049 is not a suitable completion. */ 6050 const char *sym_name_copy = sym_name; 6051 int has_angle_bracket; 6052 6053 sym_name = ada_decode (sym_name); 6054 has_angle_bracket = (sym_name[0] == '<'); 6055 match = (has_angle_bracket == verbatim_match); 6056 sym_name = sym_name_copy; 6057 } 6058 6059 if (match && !verbatim_match) 6060 { 6061 /* When doing non-verbatim match, another check that needs to 6062 be done is to verify that the potentially matching symbol name 6063 does not include capital letters, because the ada-mode would 6064 not be able to understand these symbol names without the 6065 angle bracket notation. */ 6066 const char *tmp; 6067 6068 for (tmp = sym_name; *tmp != '\0' && !isupper (*tmp); tmp++); 6069 if (*tmp != '\0') 6070 match = 0; 6071 } 6072 6073 /* Second: Try wild matching... */ 6074 6075 if (!match && wild_match_p) 6076 { 6077 /* Since we are doing wild matching, this means that TEXT 6078 may represent an unqualified symbol name. We therefore must 6079 also compare TEXT against the unqualified name of the symbol. */ 6080 sym_name = ada_unqualified_name (ada_decode (sym_name)); 6081 6082 if (strncmp (sym_name, text, text_len) == 0) 6083 match = 1; 6084 } 6085 6086 /* Finally: If we found a mach, prepare the result to return. */ 6087 6088 if (!match) 6089 return NULL; 6090 6091 if (verbatim_match) 6092 sym_name = add_angle_brackets (sym_name); 6093 6094 if (!encoded_p) 6095 sym_name = ada_decode (sym_name); 6096 6097 return sym_name; 6098 } 6099 6100 /* A companion function to ada_make_symbol_completion_list(). 6101 Check if SYM_NAME represents a symbol which name would be suitable 6102 to complete TEXT (TEXT_LEN is the length of TEXT), in which case 6103 it is appended at the end of the given string vector SV. 6104 6105 ORIG_TEXT is the string original string from the user command 6106 that needs to be completed. WORD is the entire command on which 6107 completion should be performed. These two parameters are used to 6108 determine which part of the symbol name should be added to the 6109 completion vector. 6110 if WILD_MATCH_P is set, then wild matching is performed. 6111 ENCODED_P should be set if TEXT represents a symbol name in its 6112 encoded formed (in which case the completion should also be 6113 encoded). */ 6114 6115 static void 6116 symbol_completion_add (VEC(char_ptr) **sv, 6117 const char *sym_name, 6118 const char *text, int text_len, 6119 const char *orig_text, const char *word, 6120 int wild_match_p, int encoded_p) 6121 { 6122 const char *match = symbol_completion_match (sym_name, text, text_len, 6123 wild_match_p, encoded_p); 6124 char *completion; 6125 6126 if (match == NULL) 6127 return; 6128 6129 /* We found a match, so add the appropriate completion to the given 6130 string vector. */ 6131 6132 if (word == orig_text) 6133 { 6134 completion = xmalloc (strlen (match) + 5); 6135 strcpy (completion, match); 6136 } 6137 else if (word > orig_text) 6138 { 6139 /* Return some portion of sym_name. */ 6140 completion = xmalloc (strlen (match) + 5); 6141 strcpy (completion, match + (word - orig_text)); 6142 } 6143 else 6144 { 6145 /* Return some of ORIG_TEXT plus sym_name. */ 6146 completion = xmalloc (strlen (match) + (orig_text - word) + 5); 6147 strncpy (completion, word, orig_text - word); 6148 completion[orig_text - word] = '\0'; 6149 strcat (completion, match); 6150 } 6151 6152 VEC_safe_push (char_ptr, *sv, completion); 6153 } 6154 6155 /* An object of this type is passed as the user_data argument to the 6156 expand_symtabs_matching method. */ 6157 struct add_partial_datum 6158 { 6159 VEC(char_ptr) **completions; 6160 const char *text; 6161 int text_len; 6162 const char *text0; 6163 const char *word; 6164 int wild_match; 6165 int encoded; 6166 }; 6167 6168 /* A callback for expand_symtabs_matching. */ 6169 6170 static int 6171 ada_complete_symbol_matcher (const char *name, void *user_data) 6172 { 6173 struct add_partial_datum *data = user_data; 6174 6175 return symbol_completion_match (name, data->text, data->text_len, 6176 data->wild_match, data->encoded) != NULL; 6177 } 6178 6179 /* Return a list of possible symbol names completing TEXT0. WORD is 6180 the entire command on which completion is made. */ 6181 6182 static VEC (char_ptr) * 6183 ada_make_symbol_completion_list (const char *text0, const char *word, 6184 enum type_code code) 6185 { 6186 char *text; 6187 int text_len; 6188 int wild_match_p; 6189 int encoded_p; 6190 VEC(char_ptr) *completions = VEC_alloc (char_ptr, 128); 6191 struct symbol *sym; 6192 struct compunit_symtab *s; 6193 struct minimal_symbol *msymbol; 6194 struct objfile *objfile; 6195 const struct block *b, *surrounding_static_block = 0; 6196 int i; 6197 struct block_iterator iter; 6198 struct cleanup *old_chain = make_cleanup (null_cleanup, NULL); 6199 6200 gdb_assert (code == TYPE_CODE_UNDEF); 6201 6202 if (text0[0] == '<') 6203 { 6204 text = xstrdup (text0); 6205 make_cleanup (xfree, text); 6206 text_len = strlen (text); 6207 wild_match_p = 0; 6208 encoded_p = 1; 6209 } 6210 else 6211 { 6212 text = xstrdup (ada_encode (text0)); 6213 make_cleanup (xfree, text); 6214 text_len = strlen (text); 6215 for (i = 0; i < text_len; i++) 6216 text[i] = tolower (text[i]); 6217 6218 encoded_p = (strstr (text0, "__") != NULL); 6219 /* If the name contains a ".", then the user is entering a fully 6220 qualified entity name, and the match must not be done in wild 6221 mode. Similarly, if the user wants to complete what looks like 6222 an encoded name, the match must not be done in wild mode. */ 6223 wild_match_p = (strchr (text0, '.') == NULL && !encoded_p); 6224 } 6225 6226 /* First, look at the partial symtab symbols. */ 6227 { 6228 struct add_partial_datum data; 6229 6230 data.completions = &completions; 6231 data.text = text; 6232 data.text_len = text_len; 6233 data.text0 = text0; 6234 data.word = word; 6235 data.wild_match = wild_match_p; 6236 data.encoded = encoded_p; 6237 expand_symtabs_matching (NULL, ada_complete_symbol_matcher, ALL_DOMAIN, 6238 &data); 6239 } 6240 6241 /* At this point scan through the misc symbol vectors and add each 6242 symbol you find to the list. Eventually we want to ignore 6243 anything that isn't a text symbol (everything else will be 6244 handled by the psymtab code above). */ 6245 6246 ALL_MSYMBOLS (objfile, msymbol) 6247 { 6248 QUIT; 6249 symbol_completion_add (&completions, MSYMBOL_LINKAGE_NAME (msymbol), 6250 text, text_len, text0, word, wild_match_p, 6251 encoded_p); 6252 } 6253 6254 /* Search upwards from currently selected frame (so that we can 6255 complete on local vars. */ 6256 6257 for (b = get_selected_block (0); b != NULL; b = BLOCK_SUPERBLOCK (b)) 6258 { 6259 if (!BLOCK_SUPERBLOCK (b)) 6260 surrounding_static_block = b; /* For elmin of dups */ 6261 6262 ALL_BLOCK_SYMBOLS (b, iter, sym) 6263 { 6264 symbol_completion_add (&completions, SYMBOL_LINKAGE_NAME (sym), 6265 text, text_len, text0, word, 6266 wild_match_p, encoded_p); 6267 } 6268 } 6269 6270 /* Go through the symtabs and check the externs and statics for 6271 symbols which match. */ 6272 6273 ALL_COMPUNITS (objfile, s) 6274 { 6275 QUIT; 6276 b = BLOCKVECTOR_BLOCK (COMPUNIT_BLOCKVECTOR (s), GLOBAL_BLOCK); 6277 ALL_BLOCK_SYMBOLS (b, iter, sym) 6278 { 6279 symbol_completion_add (&completions, SYMBOL_LINKAGE_NAME (sym), 6280 text, text_len, text0, word, 6281 wild_match_p, encoded_p); 6282 } 6283 } 6284 6285 ALL_COMPUNITS (objfile, s) 6286 { 6287 QUIT; 6288 b = BLOCKVECTOR_BLOCK (COMPUNIT_BLOCKVECTOR (s), STATIC_BLOCK); 6289 /* Don't do this block twice. */ 6290 if (b == surrounding_static_block) 6291 continue; 6292 ALL_BLOCK_SYMBOLS (b, iter, sym) 6293 { 6294 symbol_completion_add (&completions, SYMBOL_LINKAGE_NAME (sym), 6295 text, text_len, text0, word, 6296 wild_match_p, encoded_p); 6297 } 6298 } 6299 6300 do_cleanups (old_chain); 6301 return completions; 6302 } 6303 6304 /* Field Access */ 6305 6306 /* Return non-zero if TYPE is a pointer to the GNAT dispatch table used 6307 for tagged types. */ 6308 6309 static int 6310 ada_is_dispatch_table_ptr_type (struct type *type) 6311 { 6312 const char *name; 6313 6314 if (TYPE_CODE (type) != TYPE_CODE_PTR) 6315 return 0; 6316 6317 name = TYPE_NAME (TYPE_TARGET_TYPE (type)); 6318 if (name == NULL) 6319 return 0; 6320 6321 return (strcmp (name, "ada__tags__dispatch_table") == 0); 6322 } 6323 6324 /* Return non-zero if TYPE is an interface tag. */ 6325 6326 static int 6327 ada_is_interface_tag (struct type *type) 6328 { 6329 const char *name = TYPE_NAME (type); 6330 6331 if (name == NULL) 6332 return 0; 6333 6334 return (strcmp (name, "ada__tags__interface_tag") == 0); 6335 } 6336 6337 /* True if field number FIELD_NUM in struct or union type TYPE is supposed 6338 to be invisible to users. */ 6339 6340 int 6341 ada_is_ignored_field (struct type *type, int field_num) 6342 { 6343 if (field_num < 0 || field_num > TYPE_NFIELDS (type)) 6344 return 1; 6345 6346 /* Check the name of that field. */ 6347 { 6348 const char *name = TYPE_FIELD_NAME (type, field_num); 6349 6350 /* Anonymous field names should not be printed. 6351 brobecker/2007-02-20: I don't think this can actually happen 6352 but we don't want to print the value of annonymous fields anyway. */ 6353 if (name == NULL) 6354 return 1; 6355 6356 /* Normally, fields whose name start with an underscore ("_") 6357 are fields that have been internally generated by the compiler, 6358 and thus should not be printed. The "_parent" field is special, 6359 however: This is a field internally generated by the compiler 6360 for tagged types, and it contains the components inherited from 6361 the parent type. This field should not be printed as is, but 6362 should not be ignored either. */ 6363 if (name[0] == '_' && strncmp (name, "_parent", 7) != 0) 6364 return 1; 6365 } 6366 6367 /* If this is the dispatch table of a tagged type or an interface tag, 6368 then ignore. */ 6369 if (ada_is_tagged_type (type, 1) 6370 && (ada_is_dispatch_table_ptr_type (TYPE_FIELD_TYPE (type, field_num)) 6371 || ada_is_interface_tag (TYPE_FIELD_TYPE (type, field_num)))) 6372 return 1; 6373 6374 /* Not a special field, so it should not be ignored. */ 6375 return 0; 6376 } 6377 6378 /* True iff TYPE has a tag field. If REFOK, then TYPE may also be a 6379 pointer or reference type whose ultimate target has a tag field. */ 6380 6381 int 6382 ada_is_tagged_type (struct type *type, int refok) 6383 { 6384 return (ada_lookup_struct_elt_type (type, "_tag", refok, 1, NULL) != NULL); 6385 } 6386 6387 /* True iff TYPE represents the type of X'Tag */ 6388 6389 int 6390 ada_is_tag_type (struct type *type) 6391 { 6392 if (type == NULL || TYPE_CODE (type) != TYPE_CODE_PTR) 6393 return 0; 6394 else 6395 { 6396 const char *name = ada_type_name (TYPE_TARGET_TYPE (type)); 6397 6398 return (name != NULL 6399 && strcmp (name, "ada__tags__dispatch_table") == 0); 6400 } 6401 } 6402 6403 /* The type of the tag on VAL. */ 6404 6405 struct type * 6406 ada_tag_type (struct value *val) 6407 { 6408 return ada_lookup_struct_elt_type (value_type (val), "_tag", 1, 0, NULL); 6409 } 6410 6411 /* Return 1 if TAG follows the old scheme for Ada tags (used for Ada 95, 6412 retired at Ada 05). */ 6413 6414 static int 6415 is_ada95_tag (struct value *tag) 6416 { 6417 return ada_value_struct_elt (tag, "tsd", 1) != NULL; 6418 } 6419 6420 /* The value of the tag on VAL. */ 6421 6422 struct value * 6423 ada_value_tag (struct value *val) 6424 { 6425 return ada_value_struct_elt (val, "_tag", 0); 6426 } 6427 6428 /* The value of the tag on the object of type TYPE whose contents are 6429 saved at VALADDR, if it is non-null, or is at memory address 6430 ADDRESS. */ 6431 6432 static struct value * 6433 value_tag_from_contents_and_address (struct type *type, 6434 const gdb_byte *valaddr, 6435 CORE_ADDR address) 6436 { 6437 int tag_byte_offset; 6438 struct type *tag_type; 6439 6440 if (find_struct_field ("_tag", type, 0, &tag_type, &tag_byte_offset, 6441 NULL, NULL, NULL)) 6442 { 6443 const gdb_byte *valaddr1 = ((valaddr == NULL) 6444 ? NULL 6445 : valaddr + tag_byte_offset); 6446 CORE_ADDR address1 = (address == 0) ? 0 : address + tag_byte_offset; 6447 6448 return value_from_contents_and_address (tag_type, valaddr1, address1); 6449 } 6450 return NULL; 6451 } 6452 6453 static struct type * 6454 type_from_tag (struct value *tag) 6455 { 6456 const char *type_name = ada_tag_name (tag); 6457 6458 if (type_name != NULL) 6459 return ada_find_any_type (ada_encode (type_name)); 6460 return NULL; 6461 } 6462 6463 /* Given a value OBJ of a tagged type, return a value of this 6464 type at the base address of the object. The base address, as 6465 defined in Ada.Tags, it is the address of the primary tag of 6466 the object, and therefore where the field values of its full 6467 view can be fetched. */ 6468 6469 struct value * 6470 ada_tag_value_at_base_address (struct value *obj) 6471 { 6472 volatile struct gdb_exception e; 6473 struct value *val; 6474 LONGEST offset_to_top = 0; 6475 struct type *ptr_type, *obj_type; 6476 struct value *tag; 6477 CORE_ADDR base_address; 6478 6479 obj_type = value_type (obj); 6480 6481 /* It is the responsability of the caller to deref pointers. */ 6482 6483 if (TYPE_CODE (obj_type) == TYPE_CODE_PTR 6484 || TYPE_CODE (obj_type) == TYPE_CODE_REF) 6485 return obj; 6486 6487 tag = ada_value_tag (obj); 6488 if (!tag) 6489 return obj; 6490 6491 /* Base addresses only appeared with Ada 05 and multiple inheritance. */ 6492 6493 if (is_ada95_tag (tag)) 6494 return obj; 6495 6496 ptr_type = builtin_type (target_gdbarch ())->builtin_data_ptr; 6497 ptr_type = lookup_pointer_type (ptr_type); 6498 val = value_cast (ptr_type, tag); 6499 if (!val) 6500 return obj; 6501 6502 /* It is perfectly possible that an exception be raised while 6503 trying to determine the base address, just like for the tag; 6504 see ada_tag_name for more details. We do not print the error 6505 message for the same reason. */ 6506 6507 TRY_CATCH (e, RETURN_MASK_ERROR) 6508 { 6509 offset_to_top = value_as_long (value_ind (value_ptradd (val, -2))); 6510 } 6511 6512 if (e.reason < 0) 6513 return obj; 6514 6515 /* If offset is null, nothing to do. */ 6516 6517 if (offset_to_top == 0) 6518 return obj; 6519 6520 /* -1 is a special case in Ada.Tags; however, what should be done 6521 is not quite clear from the documentation. So do nothing for 6522 now. */ 6523 6524 if (offset_to_top == -1) 6525 return obj; 6526 6527 base_address = value_address (obj) - offset_to_top; 6528 tag = value_tag_from_contents_and_address (obj_type, NULL, base_address); 6529 6530 /* Make sure that we have a proper tag at the new address. 6531 Otherwise, offset_to_top is bogus (which can happen when 6532 the object is not initialized yet). */ 6533 6534 if (!tag) 6535 return obj; 6536 6537 obj_type = type_from_tag (tag); 6538 6539 if (!obj_type) 6540 return obj; 6541 6542 return value_from_contents_and_address (obj_type, NULL, base_address); 6543 } 6544 6545 /* Return the "ada__tags__type_specific_data" type. */ 6546 6547 static struct type * 6548 ada_get_tsd_type (struct inferior *inf) 6549 { 6550 struct ada_inferior_data *data = get_ada_inferior_data (inf); 6551 6552 if (data->tsd_type == 0) 6553 data->tsd_type = ada_find_any_type ("ada__tags__type_specific_data"); 6554 return data->tsd_type; 6555 } 6556 6557 /* Return the TSD (type-specific data) associated to the given TAG. 6558 TAG is assumed to be the tag of a tagged-type entity. 6559 6560 May return NULL if we are unable to get the TSD. */ 6561 6562 static struct value * 6563 ada_get_tsd_from_tag (struct value *tag) 6564 { 6565 struct value *val; 6566 struct type *type; 6567 6568 /* First option: The TSD is simply stored as a field of our TAG. 6569 Only older versions of GNAT would use this format, but we have 6570 to test it first, because there are no visible markers for 6571 the current approach except the absence of that field. */ 6572 6573 val = ada_value_struct_elt (tag, "tsd", 1); 6574 if (val) 6575 return val; 6576 6577 /* Try the second representation for the dispatch table (in which 6578 there is no explicit 'tsd' field in the referent of the tag pointer, 6579 and instead the tsd pointer is stored just before the dispatch 6580 table. */ 6581 6582 type = ada_get_tsd_type (current_inferior()); 6583 if (type == NULL) 6584 return NULL; 6585 type = lookup_pointer_type (lookup_pointer_type (type)); 6586 val = value_cast (type, tag); 6587 if (val == NULL) 6588 return NULL; 6589 return value_ind (value_ptradd (val, -1)); 6590 } 6591 6592 /* Given the TSD of a tag (type-specific data), return a string 6593 containing the name of the associated type. 6594 6595 The returned value is good until the next call. May return NULL 6596 if we are unable to determine the tag name. */ 6597 6598 static char * 6599 ada_tag_name_from_tsd (struct value *tsd) 6600 { 6601 static char name[1024]; 6602 char *p; 6603 struct value *val; 6604 6605 val = ada_value_struct_elt (tsd, "expanded_name", 1); 6606 if (val == NULL) 6607 return NULL; 6608 read_memory_string (value_as_address (val), name, sizeof (name) - 1); 6609 for (p = name; *p != '\0'; p += 1) 6610 if (isalpha (*p)) 6611 *p = tolower (*p); 6612 return name; 6613 } 6614 6615 /* The type name of the dynamic type denoted by the 'tag value TAG, as 6616 a C string. 6617 6618 Return NULL if the TAG is not an Ada tag, or if we were unable to 6619 determine the name of that tag. The result is good until the next 6620 call. */ 6621 6622 const char * 6623 ada_tag_name (struct value *tag) 6624 { 6625 volatile struct gdb_exception e; 6626 char *name = NULL; 6627 6628 if (!ada_is_tag_type (value_type (tag))) 6629 return NULL; 6630 6631 /* It is perfectly possible that an exception be raised while trying 6632 to determine the TAG's name, even under normal circumstances: 6633 The associated variable may be uninitialized or corrupted, for 6634 instance. We do not let any exception propagate past this point. 6635 instead we return NULL. 6636 6637 We also do not print the error message either (which often is very 6638 low-level (Eg: "Cannot read memory at 0x[...]"), but instead let 6639 the caller print a more meaningful message if necessary. */ 6640 TRY_CATCH (e, RETURN_MASK_ERROR) 6641 { 6642 struct value *tsd = ada_get_tsd_from_tag (tag); 6643 6644 if (tsd != NULL) 6645 name = ada_tag_name_from_tsd (tsd); 6646 } 6647 6648 return name; 6649 } 6650 6651 /* The parent type of TYPE, or NULL if none. */ 6652 6653 struct type * 6654 ada_parent_type (struct type *type) 6655 { 6656 int i; 6657 6658 type = ada_check_typedef (type); 6659 6660 if (type == NULL || TYPE_CODE (type) != TYPE_CODE_STRUCT) 6661 return NULL; 6662 6663 for (i = 0; i < TYPE_NFIELDS (type); i += 1) 6664 if (ada_is_parent_field (type, i)) 6665 { 6666 struct type *parent_type = TYPE_FIELD_TYPE (type, i); 6667 6668 /* If the _parent field is a pointer, then dereference it. */ 6669 if (TYPE_CODE (parent_type) == TYPE_CODE_PTR) 6670 parent_type = TYPE_TARGET_TYPE (parent_type); 6671 /* If there is a parallel XVS type, get the actual base type. */ 6672 parent_type = ada_get_base_type (parent_type); 6673 6674 return ada_check_typedef (parent_type); 6675 } 6676 6677 return NULL; 6678 } 6679 6680 /* True iff field number FIELD_NUM of structure type TYPE contains the 6681 parent-type (inherited) fields of a derived type. Assumes TYPE is 6682 a structure type with at least FIELD_NUM+1 fields. */ 6683 6684 int 6685 ada_is_parent_field (struct type *type, int field_num) 6686 { 6687 const char *name = TYPE_FIELD_NAME (ada_check_typedef (type), field_num); 6688 6689 return (name != NULL 6690 && (strncmp (name, "PARENT", 6) == 0 6691 || strncmp (name, "_parent", 7) == 0)); 6692 } 6693 6694 /* True iff field number FIELD_NUM of structure type TYPE is a 6695 transparent wrapper field (which should be silently traversed when doing 6696 field selection and flattened when printing). Assumes TYPE is a 6697 structure type with at least FIELD_NUM+1 fields. Such fields are always 6698 structures. */ 6699 6700 int 6701 ada_is_wrapper_field (struct type *type, int field_num) 6702 { 6703 const char *name = TYPE_FIELD_NAME (type, field_num); 6704 6705 return (name != NULL 6706 && (strncmp (name, "PARENT", 6) == 0 6707 || strcmp (name, "REP") == 0 6708 || strncmp (name, "_parent", 7) == 0 6709 || name[0] == 'S' || name[0] == 'R' || name[0] == 'O')); 6710 } 6711 6712 /* True iff field number FIELD_NUM of structure or union type TYPE 6713 is a variant wrapper. Assumes TYPE is a structure type with at least 6714 FIELD_NUM+1 fields. */ 6715 6716 int 6717 ada_is_variant_part (struct type *type, int field_num) 6718 { 6719 struct type *field_type = TYPE_FIELD_TYPE (type, field_num); 6720 6721 return (TYPE_CODE (field_type) == TYPE_CODE_UNION 6722 || (is_dynamic_field (type, field_num) 6723 && (TYPE_CODE (TYPE_TARGET_TYPE (field_type)) 6724 == TYPE_CODE_UNION))); 6725 } 6726 6727 /* Assuming that VAR_TYPE is a variant wrapper (type of the variant part) 6728 whose discriminants are contained in the record type OUTER_TYPE, 6729 returns the type of the controlling discriminant for the variant. 6730 May return NULL if the type could not be found. */ 6731 6732 struct type * 6733 ada_variant_discrim_type (struct type *var_type, struct type *outer_type) 6734 { 6735 char *name = ada_variant_discrim_name (var_type); 6736 6737 return ada_lookup_struct_elt_type (outer_type, name, 1, 1, NULL); 6738 } 6739 6740 /* Assuming that TYPE is the type of a variant wrapper, and FIELD_NUM is a 6741 valid field number within it, returns 1 iff field FIELD_NUM of TYPE 6742 represents a 'when others' clause; otherwise 0. */ 6743 6744 int 6745 ada_is_others_clause (struct type *type, int field_num) 6746 { 6747 const char *name = TYPE_FIELD_NAME (type, field_num); 6748 6749 return (name != NULL && name[0] == 'O'); 6750 } 6751 6752 /* Assuming that TYPE0 is the type of the variant part of a record, 6753 returns the name of the discriminant controlling the variant. 6754 The value is valid until the next call to ada_variant_discrim_name. */ 6755 6756 char * 6757 ada_variant_discrim_name (struct type *type0) 6758 { 6759 static char *result = NULL; 6760 static size_t result_len = 0; 6761 struct type *type; 6762 const char *name; 6763 const char *discrim_end; 6764 const char *discrim_start; 6765 6766 if (TYPE_CODE (type0) == TYPE_CODE_PTR) 6767 type = TYPE_TARGET_TYPE (type0); 6768 else 6769 type = type0; 6770 6771 name = ada_type_name (type); 6772 6773 if (name == NULL || name[0] == '\000') 6774 return ""; 6775 6776 for (discrim_end = name + strlen (name) - 6; discrim_end != name; 6777 discrim_end -= 1) 6778 { 6779 if (strncmp (discrim_end, "___XVN", 6) == 0) 6780 break; 6781 } 6782 if (discrim_end == name) 6783 return ""; 6784 6785 for (discrim_start = discrim_end; discrim_start != name + 3; 6786 discrim_start -= 1) 6787 { 6788 if (discrim_start == name + 1) 6789 return ""; 6790 if ((discrim_start > name + 3 6791 && strncmp (discrim_start - 3, "___", 3) == 0) 6792 || discrim_start[-1] == '.') 6793 break; 6794 } 6795 6796 GROW_VECT (result, result_len, discrim_end - discrim_start + 1); 6797 strncpy (result, discrim_start, discrim_end - discrim_start); 6798 result[discrim_end - discrim_start] = '\0'; 6799 return result; 6800 } 6801 6802 /* Scan STR for a subtype-encoded number, beginning at position K. 6803 Put the position of the character just past the number scanned in 6804 *NEW_K, if NEW_K!=NULL. Put the scanned number in *R, if R!=NULL. 6805 Return 1 if there was a valid number at the given position, and 0 6806 otherwise. A "subtype-encoded" number consists of the absolute value 6807 in decimal, followed by the letter 'm' to indicate a negative number. 6808 Assumes 0m does not occur. */ 6809 6810 int 6811 ada_scan_number (const char str[], int k, LONGEST * R, int *new_k) 6812 { 6813 ULONGEST RU; 6814 6815 if (!isdigit (str[k])) 6816 return 0; 6817 6818 /* Do it the hard way so as not to make any assumption about 6819 the relationship of unsigned long (%lu scan format code) and 6820 LONGEST. */ 6821 RU = 0; 6822 while (isdigit (str[k])) 6823 { 6824 RU = RU * 10 + (str[k] - '0'); 6825 k += 1; 6826 } 6827 6828 if (str[k] == 'm') 6829 { 6830 if (R != NULL) 6831 *R = (-(LONGEST) (RU - 1)) - 1; 6832 k += 1; 6833 } 6834 else if (R != NULL) 6835 *R = (LONGEST) RU; 6836 6837 /* NOTE on the above: Technically, C does not say what the results of 6838 - (LONGEST) RU or (LONGEST) -RU are for RU == largest positive 6839 number representable as a LONGEST (although either would probably work 6840 in most implementations). When RU>0, the locution in the then branch 6841 above is always equivalent to the negative of RU. */ 6842 6843 if (new_k != NULL) 6844 *new_k = k; 6845 return 1; 6846 } 6847 6848 /* Assuming that TYPE is a variant part wrapper type (a VARIANTS field), 6849 and FIELD_NUM is a valid field number within it, returns 1 iff VAL is 6850 in the range encoded by field FIELD_NUM of TYPE; otherwise 0. */ 6851 6852 int 6853 ada_in_variant (LONGEST val, struct type *type, int field_num) 6854 { 6855 const char *name = TYPE_FIELD_NAME (type, field_num); 6856 int p; 6857 6858 p = 0; 6859 while (1) 6860 { 6861 switch (name[p]) 6862 { 6863 case '\0': 6864 return 0; 6865 case 'S': 6866 { 6867 LONGEST W; 6868 6869 if (!ada_scan_number (name, p + 1, &W, &p)) 6870 return 0; 6871 if (val == W) 6872 return 1; 6873 break; 6874 } 6875 case 'R': 6876 { 6877 LONGEST L, U; 6878 6879 if (!ada_scan_number (name, p + 1, &L, &p) 6880 || name[p] != 'T' || !ada_scan_number (name, p + 1, &U, &p)) 6881 return 0; 6882 if (val >= L && val <= U) 6883 return 1; 6884 break; 6885 } 6886 case 'O': 6887 return 1; 6888 default: 6889 return 0; 6890 } 6891 } 6892 } 6893 6894 /* FIXME: Lots of redundancy below. Try to consolidate. */ 6895 6896 /* Given a value ARG1 (offset by OFFSET bytes) of a struct or union type 6897 ARG_TYPE, extract and return the value of one of its (non-static) 6898 fields. FIELDNO says which field. Differs from value_primitive_field 6899 only in that it can handle packed values of arbitrary type. */ 6900 6901 static struct value * 6902 ada_value_primitive_field (struct value *arg1, int offset, int fieldno, 6903 struct type *arg_type) 6904 { 6905 struct type *type; 6906 6907 arg_type = ada_check_typedef (arg_type); 6908 type = TYPE_FIELD_TYPE (arg_type, fieldno); 6909 6910 /* Handle packed fields. */ 6911 6912 if (TYPE_FIELD_BITSIZE (arg_type, fieldno) != 0) 6913 { 6914 int bit_pos = TYPE_FIELD_BITPOS (arg_type, fieldno); 6915 int bit_size = TYPE_FIELD_BITSIZE (arg_type, fieldno); 6916 6917 return ada_value_primitive_packed_val (arg1, value_contents (arg1), 6918 offset + bit_pos / 8, 6919 bit_pos % 8, bit_size, type); 6920 } 6921 else 6922 return value_primitive_field (arg1, offset, fieldno, arg_type); 6923 } 6924 6925 /* Find field with name NAME in object of type TYPE. If found, 6926 set the following for each argument that is non-null: 6927 - *FIELD_TYPE_P to the field's type; 6928 - *BYTE_OFFSET_P to OFFSET + the byte offset of the field within 6929 an object of that type; 6930 - *BIT_OFFSET_P to the bit offset modulo byte size of the field; 6931 - *BIT_SIZE_P to its size in bits if the field is packed, and 6932 0 otherwise; 6933 If INDEX_P is non-null, increment *INDEX_P by the number of source-visible 6934 fields up to but not including the desired field, or by the total 6935 number of fields if not found. A NULL value of NAME never 6936 matches; the function just counts visible fields in this case. 6937 6938 Returns 1 if found, 0 otherwise. */ 6939 6940 static int 6941 find_struct_field (const char *name, struct type *type, int offset, 6942 struct type **field_type_p, 6943 int *byte_offset_p, int *bit_offset_p, int *bit_size_p, 6944 int *index_p) 6945 { 6946 int i; 6947 6948 type = ada_check_typedef (type); 6949 6950 if (field_type_p != NULL) 6951 *field_type_p = NULL; 6952 if (byte_offset_p != NULL) 6953 *byte_offset_p = 0; 6954 if (bit_offset_p != NULL) 6955 *bit_offset_p = 0; 6956 if (bit_size_p != NULL) 6957 *bit_size_p = 0; 6958 6959 for (i = 0; i < TYPE_NFIELDS (type); i += 1) 6960 { 6961 int bit_pos = TYPE_FIELD_BITPOS (type, i); 6962 int fld_offset = offset + bit_pos / 8; 6963 const char *t_field_name = TYPE_FIELD_NAME (type, i); 6964 6965 if (t_field_name == NULL) 6966 continue; 6967 6968 else if (name != NULL && field_name_match (t_field_name, name)) 6969 { 6970 int bit_size = TYPE_FIELD_BITSIZE (type, i); 6971 6972 if (field_type_p != NULL) 6973 *field_type_p = TYPE_FIELD_TYPE (type, i); 6974 if (byte_offset_p != NULL) 6975 *byte_offset_p = fld_offset; 6976 if (bit_offset_p != NULL) 6977 *bit_offset_p = bit_pos % 8; 6978 if (bit_size_p != NULL) 6979 *bit_size_p = bit_size; 6980 return 1; 6981 } 6982 else if (ada_is_wrapper_field (type, i)) 6983 { 6984 if (find_struct_field (name, TYPE_FIELD_TYPE (type, i), fld_offset, 6985 field_type_p, byte_offset_p, bit_offset_p, 6986 bit_size_p, index_p)) 6987 return 1; 6988 } 6989 else if (ada_is_variant_part (type, i)) 6990 { 6991 /* PNH: Wait. Do we ever execute this section, or is ARG always of 6992 fixed type?? */ 6993 int j; 6994 struct type *field_type 6995 = ada_check_typedef (TYPE_FIELD_TYPE (type, i)); 6996 6997 for (j = 0; j < TYPE_NFIELDS (field_type); j += 1) 6998 { 6999 if (find_struct_field (name, TYPE_FIELD_TYPE (field_type, j), 7000 fld_offset 7001 + TYPE_FIELD_BITPOS (field_type, j) / 8, 7002 field_type_p, byte_offset_p, 7003 bit_offset_p, bit_size_p, index_p)) 7004 return 1; 7005 } 7006 } 7007 else if (index_p != NULL) 7008 *index_p += 1; 7009 } 7010 return 0; 7011 } 7012 7013 /* Number of user-visible fields in record type TYPE. */ 7014 7015 static int 7016 num_visible_fields (struct type *type) 7017 { 7018 int n; 7019 7020 n = 0; 7021 find_struct_field (NULL, type, 0, NULL, NULL, NULL, NULL, &n); 7022 return n; 7023 } 7024 7025 /* Look for a field NAME in ARG. Adjust the address of ARG by OFFSET bytes, 7026 and search in it assuming it has (class) type TYPE. 7027 If found, return value, else return NULL. 7028 7029 Searches recursively through wrapper fields (e.g., '_parent'). */ 7030 7031 static struct value * 7032 ada_search_struct_field (char *name, struct value *arg, int offset, 7033 struct type *type) 7034 { 7035 int i; 7036 7037 type = ada_check_typedef (type); 7038 for (i = 0; i < TYPE_NFIELDS (type); i += 1) 7039 { 7040 const char *t_field_name = TYPE_FIELD_NAME (type, i); 7041 7042 if (t_field_name == NULL) 7043 continue; 7044 7045 else if (field_name_match (t_field_name, name)) 7046 return ada_value_primitive_field (arg, offset, i, type); 7047 7048 else if (ada_is_wrapper_field (type, i)) 7049 { 7050 struct value *v = /* Do not let indent join lines here. */ 7051 ada_search_struct_field (name, arg, 7052 offset + TYPE_FIELD_BITPOS (type, i) / 8, 7053 TYPE_FIELD_TYPE (type, i)); 7054 7055 if (v != NULL) 7056 return v; 7057 } 7058 7059 else if (ada_is_variant_part (type, i)) 7060 { 7061 /* PNH: Do we ever get here? See find_struct_field. */ 7062 int j; 7063 struct type *field_type = ada_check_typedef (TYPE_FIELD_TYPE (type, 7064 i)); 7065 int var_offset = offset + TYPE_FIELD_BITPOS (type, i) / 8; 7066 7067 for (j = 0; j < TYPE_NFIELDS (field_type); j += 1) 7068 { 7069 struct value *v = ada_search_struct_field /* Force line 7070 break. */ 7071 (name, arg, 7072 var_offset + TYPE_FIELD_BITPOS (field_type, j) / 8, 7073 TYPE_FIELD_TYPE (field_type, j)); 7074 7075 if (v != NULL) 7076 return v; 7077 } 7078 } 7079 } 7080 return NULL; 7081 } 7082 7083 static struct value *ada_index_struct_field_1 (int *, struct value *, 7084 int, struct type *); 7085 7086 7087 /* Return field #INDEX in ARG, where the index is that returned by 7088 * find_struct_field through its INDEX_P argument. Adjust the address 7089 * of ARG by OFFSET bytes, and search in it assuming it has (class) type TYPE. 7090 * If found, return value, else return NULL. */ 7091 7092 static struct value * 7093 ada_index_struct_field (int index, struct value *arg, int offset, 7094 struct type *type) 7095 { 7096 return ada_index_struct_field_1 (&index, arg, offset, type); 7097 } 7098 7099 7100 /* Auxiliary function for ada_index_struct_field. Like 7101 * ada_index_struct_field, but takes index from *INDEX_P and modifies 7102 * *INDEX_P. */ 7103 7104 static struct value * 7105 ada_index_struct_field_1 (int *index_p, struct value *arg, int offset, 7106 struct type *type) 7107 { 7108 int i; 7109 type = ada_check_typedef (type); 7110 7111 for (i = 0; i < TYPE_NFIELDS (type); i += 1) 7112 { 7113 if (TYPE_FIELD_NAME (type, i) == NULL) 7114 continue; 7115 else if (ada_is_wrapper_field (type, i)) 7116 { 7117 struct value *v = /* Do not let indent join lines here. */ 7118 ada_index_struct_field_1 (index_p, arg, 7119 offset + TYPE_FIELD_BITPOS (type, i) / 8, 7120 TYPE_FIELD_TYPE (type, i)); 7121 7122 if (v != NULL) 7123 return v; 7124 } 7125 7126 else if (ada_is_variant_part (type, i)) 7127 { 7128 /* PNH: Do we ever get here? See ada_search_struct_field, 7129 find_struct_field. */ 7130 error (_("Cannot assign this kind of variant record")); 7131 } 7132 else if (*index_p == 0) 7133 return ada_value_primitive_field (arg, offset, i, type); 7134 else 7135 *index_p -= 1; 7136 } 7137 return NULL; 7138 } 7139 7140 /* Given ARG, a value of type (pointer or reference to a)* 7141 structure/union, extract the component named NAME from the ultimate 7142 target structure/union and return it as a value with its 7143 appropriate type. 7144 7145 The routine searches for NAME among all members of the structure itself 7146 and (recursively) among all members of any wrapper members 7147 (e.g., '_parent'). 7148 7149 If NO_ERR, then simply return NULL in case of error, rather than 7150 calling error. */ 7151 7152 struct value * 7153 ada_value_struct_elt (struct value *arg, char *name, int no_err) 7154 { 7155 struct type *t, *t1; 7156 struct value *v; 7157 7158 v = NULL; 7159 t1 = t = ada_check_typedef (value_type (arg)); 7160 if (TYPE_CODE (t) == TYPE_CODE_REF) 7161 { 7162 t1 = TYPE_TARGET_TYPE (t); 7163 if (t1 == NULL) 7164 goto BadValue; 7165 t1 = ada_check_typedef (t1); 7166 if (TYPE_CODE (t1) == TYPE_CODE_PTR) 7167 { 7168 arg = coerce_ref (arg); 7169 t = t1; 7170 } 7171 } 7172 7173 while (TYPE_CODE (t) == TYPE_CODE_PTR) 7174 { 7175 t1 = TYPE_TARGET_TYPE (t); 7176 if (t1 == NULL) 7177 goto BadValue; 7178 t1 = ada_check_typedef (t1); 7179 if (TYPE_CODE (t1) == TYPE_CODE_PTR) 7180 { 7181 arg = value_ind (arg); 7182 t = t1; 7183 } 7184 else 7185 break; 7186 } 7187 7188 if (TYPE_CODE (t1) != TYPE_CODE_STRUCT && TYPE_CODE (t1) != TYPE_CODE_UNION) 7189 goto BadValue; 7190 7191 if (t1 == t) 7192 v = ada_search_struct_field (name, arg, 0, t); 7193 else 7194 { 7195 int bit_offset, bit_size, byte_offset; 7196 struct type *field_type; 7197 CORE_ADDR address; 7198 7199 if (TYPE_CODE (t) == TYPE_CODE_PTR) 7200 address = value_address (ada_value_ind (arg)); 7201 else 7202 address = value_address (ada_coerce_ref (arg)); 7203 7204 t1 = ada_to_fixed_type (ada_get_base_type (t1), NULL, address, NULL, 1); 7205 if (find_struct_field (name, t1, 0, 7206 &field_type, &byte_offset, &bit_offset, 7207 &bit_size, NULL)) 7208 { 7209 if (bit_size != 0) 7210 { 7211 if (TYPE_CODE (t) == TYPE_CODE_REF) 7212 arg = ada_coerce_ref (arg); 7213 else 7214 arg = ada_value_ind (arg); 7215 v = ada_value_primitive_packed_val (arg, NULL, byte_offset, 7216 bit_offset, bit_size, 7217 field_type); 7218 } 7219 else 7220 v = value_at_lazy (field_type, address + byte_offset); 7221 } 7222 } 7223 7224 if (v != NULL || no_err) 7225 return v; 7226 else 7227 error (_("There is no member named %s."), name); 7228 7229 BadValue: 7230 if (no_err) 7231 return NULL; 7232 else 7233 error (_("Attempt to extract a component of " 7234 "a value that is not a record.")); 7235 } 7236 7237 /* Given a type TYPE, look up the type of the component of type named NAME. 7238 If DISPP is non-null, add its byte displacement from the beginning of a 7239 structure (pointed to by a value) of type TYPE to *DISPP (does not 7240 work for packed fields). 7241 7242 Matches any field whose name has NAME as a prefix, possibly 7243 followed by "___". 7244 7245 TYPE can be either a struct or union. If REFOK, TYPE may also 7246 be a (pointer or reference)+ to a struct or union, and the 7247 ultimate target type will be searched. 7248 7249 Looks recursively into variant clauses and parent types. 7250 7251 If NOERR is nonzero, return NULL if NAME is not suitably defined or 7252 TYPE is not a type of the right kind. */ 7253 7254 static struct type * 7255 ada_lookup_struct_elt_type (struct type *type, char *name, int refok, 7256 int noerr, int *dispp) 7257 { 7258 int i; 7259 7260 if (name == NULL) 7261 goto BadName; 7262 7263 if (refok && type != NULL) 7264 while (1) 7265 { 7266 type = ada_check_typedef (type); 7267 if (TYPE_CODE (type) != TYPE_CODE_PTR 7268 && TYPE_CODE (type) != TYPE_CODE_REF) 7269 break; 7270 type = TYPE_TARGET_TYPE (type); 7271 } 7272 7273 if (type == NULL 7274 || (TYPE_CODE (type) != TYPE_CODE_STRUCT 7275 && TYPE_CODE (type) != TYPE_CODE_UNION)) 7276 { 7277 if (noerr) 7278 return NULL; 7279 else 7280 { 7281 target_terminal_ours (); 7282 gdb_flush (gdb_stdout); 7283 if (type == NULL) 7284 error (_("Type (null) is not a structure or union type")); 7285 else 7286 { 7287 /* XXX: type_sprint */ 7288 fprintf_unfiltered (gdb_stderr, _("Type ")); 7289 type_print (type, "", gdb_stderr, -1); 7290 error (_(" is not a structure or union type")); 7291 } 7292 } 7293 } 7294 7295 type = to_static_fixed_type (type); 7296 7297 for (i = 0; i < TYPE_NFIELDS (type); i += 1) 7298 { 7299 const char *t_field_name = TYPE_FIELD_NAME (type, i); 7300 struct type *t; 7301 int disp; 7302 7303 if (t_field_name == NULL) 7304 continue; 7305 7306 else if (field_name_match (t_field_name, name)) 7307 { 7308 if (dispp != NULL) 7309 *dispp += TYPE_FIELD_BITPOS (type, i) / 8; 7310 return ada_check_typedef (TYPE_FIELD_TYPE (type, i)); 7311 } 7312 7313 else if (ada_is_wrapper_field (type, i)) 7314 { 7315 disp = 0; 7316 t = ada_lookup_struct_elt_type (TYPE_FIELD_TYPE (type, i), name, 7317 0, 1, &disp); 7318 if (t != NULL) 7319 { 7320 if (dispp != NULL) 7321 *dispp += disp + TYPE_FIELD_BITPOS (type, i) / 8; 7322 return t; 7323 } 7324 } 7325 7326 else if (ada_is_variant_part (type, i)) 7327 { 7328 int j; 7329 struct type *field_type = ada_check_typedef (TYPE_FIELD_TYPE (type, 7330 i)); 7331 7332 for (j = TYPE_NFIELDS (field_type) - 1; j >= 0; j -= 1) 7333 { 7334 /* FIXME pnh 2008/01/26: We check for a field that is 7335 NOT wrapped in a struct, since the compiler sometimes 7336 generates these for unchecked variant types. Revisit 7337 if the compiler changes this practice. */ 7338 const char *v_field_name = TYPE_FIELD_NAME (field_type, j); 7339 disp = 0; 7340 if (v_field_name != NULL 7341 && field_name_match (v_field_name, name)) 7342 t = ada_check_typedef (TYPE_FIELD_TYPE (field_type, j)); 7343 else 7344 t = ada_lookup_struct_elt_type (TYPE_FIELD_TYPE (field_type, 7345 j), 7346 name, 0, 1, &disp); 7347 7348 if (t != NULL) 7349 { 7350 if (dispp != NULL) 7351 *dispp += disp + TYPE_FIELD_BITPOS (type, i) / 8; 7352 return t; 7353 } 7354 } 7355 } 7356 7357 } 7358 7359 BadName: 7360 if (!noerr) 7361 { 7362 target_terminal_ours (); 7363 gdb_flush (gdb_stdout); 7364 if (name == NULL) 7365 { 7366 /* XXX: type_sprint */ 7367 fprintf_unfiltered (gdb_stderr, _("Type ")); 7368 type_print (type, "", gdb_stderr, -1); 7369 error (_(" has no component named <null>")); 7370 } 7371 else 7372 { 7373 /* XXX: type_sprint */ 7374 fprintf_unfiltered (gdb_stderr, _("Type ")); 7375 type_print (type, "", gdb_stderr, -1); 7376 error (_(" has no component named %s"), name); 7377 } 7378 } 7379 7380 return NULL; 7381 } 7382 7383 /* Assuming that VAR_TYPE is the type of a variant part of a record (a union), 7384 within a value of type OUTER_TYPE, return true iff VAR_TYPE 7385 represents an unchecked union (that is, the variant part of a 7386 record that is named in an Unchecked_Union pragma). */ 7387 7388 static int 7389 is_unchecked_variant (struct type *var_type, struct type *outer_type) 7390 { 7391 char *discrim_name = ada_variant_discrim_name (var_type); 7392 7393 return (ada_lookup_struct_elt_type (outer_type, discrim_name, 0, 1, NULL) 7394 == NULL); 7395 } 7396 7397 7398 /* Assuming that VAR_TYPE is the type of a variant part of a record (a union), 7399 within a value of type OUTER_TYPE that is stored in GDB at 7400 OUTER_VALADDR, determine which variant clause (field number in VAR_TYPE, 7401 numbering from 0) is applicable. Returns -1 if none are. */ 7402 7403 int 7404 ada_which_variant_applies (struct type *var_type, struct type *outer_type, 7405 const gdb_byte *outer_valaddr) 7406 { 7407 int others_clause; 7408 int i; 7409 char *discrim_name = ada_variant_discrim_name (var_type); 7410 struct value *outer; 7411 struct value *discrim; 7412 LONGEST discrim_val; 7413 7414 /* Using plain value_from_contents_and_address here causes problems 7415 because we will end up trying to resolve a type that is currently 7416 being constructed. */ 7417 outer = value_from_contents_and_address_unresolved (outer_type, 7418 outer_valaddr, 0); 7419 discrim = ada_value_struct_elt (outer, discrim_name, 1); 7420 if (discrim == NULL) 7421 return -1; 7422 discrim_val = value_as_long (discrim); 7423 7424 others_clause = -1; 7425 for (i = 0; i < TYPE_NFIELDS (var_type); i += 1) 7426 { 7427 if (ada_is_others_clause (var_type, i)) 7428 others_clause = i; 7429 else if (ada_in_variant (discrim_val, var_type, i)) 7430 return i; 7431 } 7432 7433 return others_clause; 7434 } 7435 7436 7437 7438 /* Dynamic-Sized Records */ 7439 7440 /* Strategy: The type ostensibly attached to a value with dynamic size 7441 (i.e., a size that is not statically recorded in the debugging 7442 data) does not accurately reflect the size or layout of the value. 7443 Our strategy is to convert these values to values with accurate, 7444 conventional types that are constructed on the fly. */ 7445 7446 /* There is a subtle and tricky problem here. In general, we cannot 7447 determine the size of dynamic records without its data. However, 7448 the 'struct value' data structure, which GDB uses to represent 7449 quantities in the inferior process (the target), requires the size 7450 of the type at the time of its allocation in order to reserve space 7451 for GDB's internal copy of the data. That's why the 7452 'to_fixed_xxx_type' routines take (target) addresses as parameters, 7453 rather than struct value*s. 7454 7455 However, GDB's internal history variables ($1, $2, etc.) are 7456 struct value*s containing internal copies of the data that are not, in 7457 general, the same as the data at their corresponding addresses in 7458 the target. Fortunately, the types we give to these values are all 7459 conventional, fixed-size types (as per the strategy described 7460 above), so that we don't usually have to perform the 7461 'to_fixed_xxx_type' conversions to look at their values. 7462 Unfortunately, there is one exception: if one of the internal 7463 history variables is an array whose elements are unconstrained 7464 records, then we will need to create distinct fixed types for each 7465 element selected. */ 7466 7467 /* The upshot of all of this is that many routines take a (type, host 7468 address, target address) triple as arguments to represent a value. 7469 The host address, if non-null, is supposed to contain an internal 7470 copy of the relevant data; otherwise, the program is to consult the 7471 target at the target address. */ 7472 7473 /* Assuming that VAL0 represents a pointer value, the result of 7474 dereferencing it. Differs from value_ind in its treatment of 7475 dynamic-sized types. */ 7476 7477 struct value * 7478 ada_value_ind (struct value *val0) 7479 { 7480 struct value *val = value_ind (val0); 7481 7482 if (ada_is_tagged_type (value_type (val), 0)) 7483 val = ada_tag_value_at_base_address (val); 7484 7485 return ada_to_fixed_value (val); 7486 } 7487 7488 /* The value resulting from dereferencing any "reference to" 7489 qualifiers on VAL0. */ 7490 7491 static struct value * 7492 ada_coerce_ref (struct value *val0) 7493 { 7494 if (TYPE_CODE (value_type (val0)) == TYPE_CODE_REF) 7495 { 7496 struct value *val = val0; 7497 7498 val = coerce_ref (val); 7499 7500 if (ada_is_tagged_type (value_type (val), 0)) 7501 val = ada_tag_value_at_base_address (val); 7502 7503 return ada_to_fixed_value (val); 7504 } 7505 else 7506 return val0; 7507 } 7508 7509 /* Return OFF rounded upward if necessary to a multiple of 7510 ALIGNMENT (a power of 2). */ 7511 7512 static unsigned int 7513 align_value (unsigned int off, unsigned int alignment) 7514 { 7515 return (off + alignment - 1) & ~(alignment - 1); 7516 } 7517 7518 /* Return the bit alignment required for field #F of template type TYPE. */ 7519 7520 static unsigned int 7521 field_alignment (struct type *type, int f) 7522 { 7523 const char *name = TYPE_FIELD_NAME (type, f); 7524 int len; 7525 int align_offset; 7526 7527 /* The field name should never be null, unless the debugging information 7528 is somehow malformed. In this case, we assume the field does not 7529 require any alignment. */ 7530 if (name == NULL) 7531 return 1; 7532 7533 len = strlen (name); 7534 7535 if (!isdigit (name[len - 1])) 7536 return 1; 7537 7538 if (isdigit (name[len - 2])) 7539 align_offset = len - 2; 7540 else 7541 align_offset = len - 1; 7542 7543 if (align_offset < 7 || strncmp ("___XV", name + align_offset - 6, 5) != 0) 7544 return TARGET_CHAR_BIT; 7545 7546 return atoi (name + align_offset) * TARGET_CHAR_BIT; 7547 } 7548 7549 /* Find a typedef or tag symbol named NAME. Ignores ambiguity. */ 7550 7551 static struct symbol * 7552 ada_find_any_type_symbol (const char *name) 7553 { 7554 struct symbol *sym; 7555 7556 sym = standard_lookup (name, get_selected_block (NULL), VAR_DOMAIN); 7557 if (sym != NULL && SYMBOL_CLASS (sym) == LOC_TYPEDEF) 7558 return sym; 7559 7560 sym = standard_lookup (name, NULL, STRUCT_DOMAIN); 7561 return sym; 7562 } 7563 7564 /* Find a type named NAME. Ignores ambiguity. This routine will look 7565 solely for types defined by debug info, it will not search the GDB 7566 primitive types. */ 7567 7568 static struct type * 7569 ada_find_any_type (const char *name) 7570 { 7571 struct symbol *sym = ada_find_any_type_symbol (name); 7572 7573 if (sym != NULL) 7574 return SYMBOL_TYPE (sym); 7575 7576 return NULL; 7577 } 7578 7579 /* Given NAME_SYM and an associated BLOCK, find a "renaming" symbol 7580 associated with NAME_SYM's name. NAME_SYM may itself be a renaming 7581 symbol, in which case it is returned. Otherwise, this looks for 7582 symbols whose name is that of NAME_SYM suffixed with "___XR". 7583 Return symbol if found, and NULL otherwise. */ 7584 7585 struct symbol * 7586 ada_find_renaming_symbol (struct symbol *name_sym, const struct block *block) 7587 { 7588 const char *name = SYMBOL_LINKAGE_NAME (name_sym); 7589 struct symbol *sym; 7590 7591 if (strstr (name, "___XR") != NULL) 7592 return name_sym; 7593 7594 sym = find_old_style_renaming_symbol (name, block); 7595 7596 if (sym != NULL) 7597 return sym; 7598 7599 /* Not right yet. FIXME pnh 7/20/2007. */ 7600 sym = ada_find_any_type_symbol (name); 7601 if (sym != NULL && strstr (SYMBOL_LINKAGE_NAME (sym), "___XR") != NULL) 7602 return sym; 7603 else 7604 return NULL; 7605 } 7606 7607 static struct symbol * 7608 find_old_style_renaming_symbol (const char *name, const struct block *block) 7609 { 7610 const struct symbol *function_sym = block_linkage_function (block); 7611 char *rename; 7612 7613 if (function_sym != NULL) 7614 { 7615 /* If the symbol is defined inside a function, NAME is not fully 7616 qualified. This means we need to prepend the function name 7617 as well as adding the ``___XR'' suffix to build the name of 7618 the associated renaming symbol. */ 7619 const char *function_name = SYMBOL_LINKAGE_NAME (function_sym); 7620 /* Function names sometimes contain suffixes used 7621 for instance to qualify nested subprograms. When building 7622 the XR type name, we need to make sure that this suffix is 7623 not included. So do not include any suffix in the function 7624 name length below. */ 7625 int function_name_len = ada_name_prefix_len (function_name); 7626 const int rename_len = function_name_len + 2 /* "__" */ 7627 + strlen (name) + 6 /* "___XR\0" */ ; 7628 7629 /* Strip the suffix if necessary. */ 7630 ada_remove_trailing_digits (function_name, &function_name_len); 7631 ada_remove_po_subprogram_suffix (function_name, &function_name_len); 7632 ada_remove_Xbn_suffix (function_name, &function_name_len); 7633 7634 /* Library-level functions are a special case, as GNAT adds 7635 a ``_ada_'' prefix to the function name to avoid namespace 7636 pollution. However, the renaming symbols themselves do not 7637 have this prefix, so we need to skip this prefix if present. */ 7638 if (function_name_len > 5 /* "_ada_" */ 7639 && strstr (function_name, "_ada_") == function_name) 7640 { 7641 function_name += 5; 7642 function_name_len -= 5; 7643 } 7644 7645 rename = (char *) alloca (rename_len * sizeof (char)); 7646 strncpy (rename, function_name, function_name_len); 7647 xsnprintf (rename + function_name_len, rename_len - function_name_len, 7648 "__%s___XR", name); 7649 } 7650 else 7651 { 7652 const int rename_len = strlen (name) + 6; 7653 7654 rename = (char *) alloca (rename_len * sizeof (char)); 7655 xsnprintf (rename, rename_len * sizeof (char), "%s___XR", name); 7656 } 7657 7658 return ada_find_any_type_symbol (rename); 7659 } 7660 7661 /* Because of GNAT encoding conventions, several GDB symbols may match a 7662 given type name. If the type denoted by TYPE0 is to be preferred to 7663 that of TYPE1 for purposes of type printing, return non-zero; 7664 otherwise return 0. */ 7665 7666 int 7667 ada_prefer_type (struct type *type0, struct type *type1) 7668 { 7669 if (type1 == NULL) 7670 return 1; 7671 else if (type0 == NULL) 7672 return 0; 7673 else if (TYPE_CODE (type1) == TYPE_CODE_VOID) 7674 return 1; 7675 else if (TYPE_CODE (type0) == TYPE_CODE_VOID) 7676 return 0; 7677 else if (TYPE_NAME (type1) == NULL && TYPE_NAME (type0) != NULL) 7678 return 1; 7679 else if (ada_is_constrained_packed_array_type (type0)) 7680 return 1; 7681 else if (ada_is_array_descriptor_type (type0) 7682 && !ada_is_array_descriptor_type (type1)) 7683 return 1; 7684 else 7685 { 7686 const char *type0_name = type_name_no_tag (type0); 7687 const char *type1_name = type_name_no_tag (type1); 7688 7689 if (type0_name != NULL && strstr (type0_name, "___XR") != NULL 7690 && (type1_name == NULL || strstr (type1_name, "___XR") == NULL)) 7691 return 1; 7692 } 7693 return 0; 7694 } 7695 7696 /* The name of TYPE, which is either its TYPE_NAME, or, if that is 7697 null, its TYPE_TAG_NAME. Null if TYPE is null. */ 7698 7699 const char * 7700 ada_type_name (struct type *type) 7701 { 7702 if (type == NULL) 7703 return NULL; 7704 else if (TYPE_NAME (type) != NULL) 7705 return TYPE_NAME (type); 7706 else 7707 return TYPE_TAG_NAME (type); 7708 } 7709 7710 /* Search the list of "descriptive" types associated to TYPE for a type 7711 whose name is NAME. */ 7712 7713 static struct type * 7714 find_parallel_type_by_descriptive_type (struct type *type, const char *name) 7715 { 7716 struct type *result; 7717 7718 if (ada_ignore_descriptive_types_p) 7719 return NULL; 7720 7721 /* If there no descriptive-type info, then there is no parallel type 7722 to be found. */ 7723 if (!HAVE_GNAT_AUX_INFO (type)) 7724 return NULL; 7725 7726 result = TYPE_DESCRIPTIVE_TYPE (type); 7727 while (result != NULL) 7728 { 7729 const char *result_name = ada_type_name (result); 7730 7731 if (result_name == NULL) 7732 { 7733 warning (_("unexpected null name on descriptive type")); 7734 return NULL; 7735 } 7736 7737 /* If the names match, stop. */ 7738 if (strcmp (result_name, name) == 0) 7739 break; 7740 7741 /* Otherwise, look at the next item on the list, if any. */ 7742 if (HAVE_GNAT_AUX_INFO (result)) 7743 result = TYPE_DESCRIPTIVE_TYPE (result); 7744 else 7745 result = NULL; 7746 } 7747 7748 /* If we didn't find a match, see whether this is a packed array. With 7749 older compilers, the descriptive type information is either absent or 7750 irrelevant when it comes to packed arrays so the above lookup fails. 7751 Fall back to using a parallel lookup by name in this case. */ 7752 if (result == NULL && ada_is_constrained_packed_array_type (type)) 7753 return ada_find_any_type (name); 7754 7755 return result; 7756 } 7757 7758 /* Find a parallel type to TYPE with the specified NAME, using the 7759 descriptive type taken from the debugging information, if available, 7760 and otherwise using the (slower) name-based method. */ 7761 7762 static struct type * 7763 ada_find_parallel_type_with_name (struct type *type, const char *name) 7764 { 7765 struct type *result = NULL; 7766 7767 if (HAVE_GNAT_AUX_INFO (type)) 7768 result = find_parallel_type_by_descriptive_type (type, name); 7769 else 7770 result = ada_find_any_type (name); 7771 7772 return result; 7773 } 7774 7775 /* Same as above, but specify the name of the parallel type by appending 7776 SUFFIX to the name of TYPE. */ 7777 7778 struct type * 7779 ada_find_parallel_type (struct type *type, const char *suffix) 7780 { 7781 char *name; 7782 const char *typename = ada_type_name (type); 7783 int len; 7784 7785 if (typename == NULL) 7786 return NULL; 7787 7788 len = strlen (typename); 7789 7790 name = (char *) alloca (len + strlen (suffix) + 1); 7791 7792 strcpy (name, typename); 7793 strcpy (name + len, suffix); 7794 7795 return ada_find_parallel_type_with_name (type, name); 7796 } 7797 7798 /* If TYPE is a variable-size record type, return the corresponding template 7799 type describing its fields. Otherwise, return NULL. */ 7800 7801 static struct type * 7802 dynamic_template_type (struct type *type) 7803 { 7804 type = ada_check_typedef (type); 7805 7806 if (type == NULL || TYPE_CODE (type) != TYPE_CODE_STRUCT 7807 || ada_type_name (type) == NULL) 7808 return NULL; 7809 else 7810 { 7811 int len = strlen (ada_type_name (type)); 7812 7813 if (len > 6 && strcmp (ada_type_name (type) + len - 6, "___XVE") == 0) 7814 return type; 7815 else 7816 return ada_find_parallel_type (type, "___XVE"); 7817 } 7818 } 7819 7820 /* Assuming that TEMPL_TYPE is a union or struct type, returns 7821 non-zero iff field FIELD_NUM of TEMPL_TYPE has dynamic size. */ 7822 7823 static int 7824 is_dynamic_field (struct type *templ_type, int field_num) 7825 { 7826 const char *name = TYPE_FIELD_NAME (templ_type, field_num); 7827 7828 return name != NULL 7829 && TYPE_CODE (TYPE_FIELD_TYPE (templ_type, field_num)) == TYPE_CODE_PTR 7830 && strstr (name, "___XVL") != NULL; 7831 } 7832 7833 /* The index of the variant field of TYPE, or -1 if TYPE does not 7834 represent a variant record type. */ 7835 7836 static int 7837 variant_field_index (struct type *type) 7838 { 7839 int f; 7840 7841 if (type == NULL || TYPE_CODE (type) != TYPE_CODE_STRUCT) 7842 return -1; 7843 7844 for (f = 0; f < TYPE_NFIELDS (type); f += 1) 7845 { 7846 if (ada_is_variant_part (type, f)) 7847 return f; 7848 } 7849 return -1; 7850 } 7851 7852 /* A record type with no fields. */ 7853 7854 static struct type * 7855 empty_record (struct type *template) 7856 { 7857 struct type *type = alloc_type_copy (template); 7858 7859 TYPE_CODE (type) = TYPE_CODE_STRUCT; 7860 TYPE_NFIELDS (type) = 0; 7861 TYPE_FIELDS (type) = NULL; 7862 INIT_CPLUS_SPECIFIC (type); 7863 TYPE_NAME (type) = "<empty>"; 7864 TYPE_TAG_NAME (type) = NULL; 7865 TYPE_LENGTH (type) = 0; 7866 return type; 7867 } 7868 7869 /* An ordinary record type (with fixed-length fields) that describes 7870 the value of type TYPE at VALADDR or ADDRESS (see comments at 7871 the beginning of this section) VAL according to GNAT conventions. 7872 DVAL0 should describe the (portion of a) record that contains any 7873 necessary discriminants. It should be NULL if value_type (VAL) is 7874 an outer-level type (i.e., as opposed to a branch of a variant.) A 7875 variant field (unless unchecked) is replaced by a particular branch 7876 of the variant. 7877 7878 If not KEEP_DYNAMIC_FIELDS, then all fields whose position or 7879 length are not statically known are discarded. As a consequence, 7880 VALADDR, ADDRESS and DVAL0 are ignored. 7881 7882 NOTE: Limitations: For now, we assume that dynamic fields and 7883 variants occupy whole numbers of bytes. However, they need not be 7884 byte-aligned. */ 7885 7886 struct type * 7887 ada_template_to_fixed_record_type_1 (struct type *type, 7888 const gdb_byte *valaddr, 7889 CORE_ADDR address, struct value *dval0, 7890 int keep_dynamic_fields) 7891 { 7892 struct value *mark = value_mark (); 7893 struct value *dval; 7894 struct type *rtype; 7895 int nfields, bit_len; 7896 int variant_field; 7897 long off; 7898 int fld_bit_len; 7899 int f; 7900 7901 /* Compute the number of fields in this record type that are going 7902 to be processed: unless keep_dynamic_fields, this includes only 7903 fields whose position and length are static will be processed. */ 7904 if (keep_dynamic_fields) 7905 nfields = TYPE_NFIELDS (type); 7906 else 7907 { 7908 nfields = 0; 7909 while (nfields < TYPE_NFIELDS (type) 7910 && !ada_is_variant_part (type, nfields) 7911 && !is_dynamic_field (type, nfields)) 7912 nfields++; 7913 } 7914 7915 rtype = alloc_type_copy (type); 7916 TYPE_CODE (rtype) = TYPE_CODE_STRUCT; 7917 INIT_CPLUS_SPECIFIC (rtype); 7918 TYPE_NFIELDS (rtype) = nfields; 7919 TYPE_FIELDS (rtype) = (struct field *) 7920 TYPE_ALLOC (rtype, nfields * sizeof (struct field)); 7921 memset (TYPE_FIELDS (rtype), 0, sizeof (struct field) * nfields); 7922 TYPE_NAME (rtype) = ada_type_name (type); 7923 TYPE_TAG_NAME (rtype) = NULL; 7924 TYPE_FIXED_INSTANCE (rtype) = 1; 7925 7926 off = 0; 7927 bit_len = 0; 7928 variant_field = -1; 7929 7930 for (f = 0; f < nfields; f += 1) 7931 { 7932 off = align_value (off, field_alignment (type, f)) 7933 + TYPE_FIELD_BITPOS (type, f); 7934 SET_FIELD_BITPOS (TYPE_FIELD (rtype, f), off); 7935 TYPE_FIELD_BITSIZE (rtype, f) = 0; 7936 7937 if (ada_is_variant_part (type, f)) 7938 { 7939 variant_field = f; 7940 fld_bit_len = 0; 7941 } 7942 else if (is_dynamic_field (type, f)) 7943 { 7944 const gdb_byte *field_valaddr = valaddr; 7945 CORE_ADDR field_address = address; 7946 struct type *field_type = 7947 TYPE_TARGET_TYPE (TYPE_FIELD_TYPE (type, f)); 7948 7949 if (dval0 == NULL) 7950 { 7951 /* rtype's length is computed based on the run-time 7952 value of discriminants. If the discriminants are not 7953 initialized, the type size may be completely bogus and 7954 GDB may fail to allocate a value for it. So check the 7955 size first before creating the value. */ 7956 ada_ensure_varsize_limit (rtype); 7957 /* Using plain value_from_contents_and_address here 7958 causes problems because we will end up trying to 7959 resolve a type that is currently being 7960 constructed. */ 7961 dval = value_from_contents_and_address_unresolved (rtype, 7962 valaddr, 7963 address); 7964 rtype = value_type (dval); 7965 } 7966 else 7967 dval = dval0; 7968 7969 /* If the type referenced by this field is an aligner type, we need 7970 to unwrap that aligner type, because its size might not be set. 7971 Keeping the aligner type would cause us to compute the wrong 7972 size for this field, impacting the offset of the all the fields 7973 that follow this one. */ 7974 if (ada_is_aligner_type (field_type)) 7975 { 7976 long field_offset = TYPE_FIELD_BITPOS (field_type, f); 7977 7978 field_valaddr = cond_offset_host (field_valaddr, field_offset); 7979 field_address = cond_offset_target (field_address, field_offset); 7980 field_type = ada_aligned_type (field_type); 7981 } 7982 7983 field_valaddr = cond_offset_host (field_valaddr, 7984 off / TARGET_CHAR_BIT); 7985 field_address = cond_offset_target (field_address, 7986 off / TARGET_CHAR_BIT); 7987 7988 /* Get the fixed type of the field. Note that, in this case, 7989 we do not want to get the real type out of the tag: if 7990 the current field is the parent part of a tagged record, 7991 we will get the tag of the object. Clearly wrong: the real 7992 type of the parent is not the real type of the child. We 7993 would end up in an infinite loop. */ 7994 field_type = ada_get_base_type (field_type); 7995 field_type = ada_to_fixed_type (field_type, field_valaddr, 7996 field_address, dval, 0); 7997 /* If the field size is already larger than the maximum 7998 object size, then the record itself will necessarily 7999 be larger than the maximum object size. We need to make 8000 this check now, because the size might be so ridiculously 8001 large (due to an uninitialized variable in the inferior) 8002 that it would cause an overflow when adding it to the 8003 record size. */ 8004 ada_ensure_varsize_limit (field_type); 8005 8006 TYPE_FIELD_TYPE (rtype, f) = field_type; 8007 TYPE_FIELD_NAME (rtype, f) = TYPE_FIELD_NAME (type, f); 8008 /* The multiplication can potentially overflow. But because 8009 the field length has been size-checked just above, and 8010 assuming that the maximum size is a reasonable value, 8011 an overflow should not happen in practice. So rather than 8012 adding overflow recovery code to this already complex code, 8013 we just assume that it's not going to happen. */ 8014 fld_bit_len = 8015 TYPE_LENGTH (TYPE_FIELD_TYPE (rtype, f)) * TARGET_CHAR_BIT; 8016 } 8017 else 8018 { 8019 /* Note: If this field's type is a typedef, it is important 8020 to preserve the typedef layer. 8021 8022 Otherwise, we might be transforming a typedef to a fat 8023 pointer (encoding a pointer to an unconstrained array), 8024 into a basic fat pointer (encoding an unconstrained 8025 array). As both types are implemented using the same 8026 structure, the typedef is the only clue which allows us 8027 to distinguish between the two options. Stripping it 8028 would prevent us from printing this field appropriately. */ 8029 TYPE_FIELD_TYPE (rtype, f) = TYPE_FIELD_TYPE (type, f); 8030 TYPE_FIELD_NAME (rtype, f) = TYPE_FIELD_NAME (type, f); 8031 if (TYPE_FIELD_BITSIZE (type, f) > 0) 8032 fld_bit_len = 8033 TYPE_FIELD_BITSIZE (rtype, f) = TYPE_FIELD_BITSIZE (type, f); 8034 else 8035 { 8036 struct type *field_type = TYPE_FIELD_TYPE (type, f); 8037 8038 /* We need to be careful of typedefs when computing 8039 the length of our field. If this is a typedef, 8040 get the length of the target type, not the length 8041 of the typedef. */ 8042 if (TYPE_CODE (field_type) == TYPE_CODE_TYPEDEF) 8043 field_type = ada_typedef_target_type (field_type); 8044 8045 fld_bit_len = 8046 TYPE_LENGTH (ada_check_typedef (field_type)) * TARGET_CHAR_BIT; 8047 } 8048 } 8049 if (off + fld_bit_len > bit_len) 8050 bit_len = off + fld_bit_len; 8051 off += fld_bit_len; 8052 TYPE_LENGTH (rtype) = 8053 align_value (bit_len, TARGET_CHAR_BIT) / TARGET_CHAR_BIT; 8054 } 8055 8056 /* We handle the variant part, if any, at the end because of certain 8057 odd cases in which it is re-ordered so as NOT to be the last field of 8058 the record. This can happen in the presence of representation 8059 clauses. */ 8060 if (variant_field >= 0) 8061 { 8062 struct type *branch_type; 8063 8064 off = TYPE_FIELD_BITPOS (rtype, variant_field); 8065 8066 if (dval0 == NULL) 8067 { 8068 /* Using plain value_from_contents_and_address here causes 8069 problems because we will end up trying to resolve a type 8070 that is currently being constructed. */ 8071 dval = value_from_contents_and_address_unresolved (rtype, valaddr, 8072 address); 8073 rtype = value_type (dval); 8074 } 8075 else 8076 dval = dval0; 8077 8078 branch_type = 8079 to_fixed_variant_branch_type 8080 (TYPE_FIELD_TYPE (type, variant_field), 8081 cond_offset_host (valaddr, off / TARGET_CHAR_BIT), 8082 cond_offset_target (address, off / TARGET_CHAR_BIT), dval); 8083 if (branch_type == NULL) 8084 { 8085 for (f = variant_field + 1; f < TYPE_NFIELDS (rtype); f += 1) 8086 TYPE_FIELDS (rtype)[f - 1] = TYPE_FIELDS (rtype)[f]; 8087 TYPE_NFIELDS (rtype) -= 1; 8088 } 8089 else 8090 { 8091 TYPE_FIELD_TYPE (rtype, variant_field) = branch_type; 8092 TYPE_FIELD_NAME (rtype, variant_field) = "S"; 8093 fld_bit_len = 8094 TYPE_LENGTH (TYPE_FIELD_TYPE (rtype, variant_field)) * 8095 TARGET_CHAR_BIT; 8096 if (off + fld_bit_len > bit_len) 8097 bit_len = off + fld_bit_len; 8098 TYPE_LENGTH (rtype) = 8099 align_value (bit_len, TARGET_CHAR_BIT) / TARGET_CHAR_BIT; 8100 } 8101 } 8102 8103 /* According to exp_dbug.ads, the size of TYPE for variable-size records 8104 should contain the alignment of that record, which should be a strictly 8105 positive value. If null or negative, then something is wrong, most 8106 probably in the debug info. In that case, we don't round up the size 8107 of the resulting type. If this record is not part of another structure, 8108 the current RTYPE length might be good enough for our purposes. */ 8109 if (TYPE_LENGTH (type) <= 0) 8110 { 8111 if (TYPE_NAME (rtype)) 8112 warning (_("Invalid type size for `%s' detected: %d."), 8113 TYPE_NAME (rtype), TYPE_LENGTH (type)); 8114 else 8115 warning (_("Invalid type size for <unnamed> detected: %d."), 8116 TYPE_LENGTH (type)); 8117 } 8118 else 8119 { 8120 TYPE_LENGTH (rtype) = align_value (TYPE_LENGTH (rtype), 8121 TYPE_LENGTH (type)); 8122 } 8123 8124 value_free_to_mark (mark); 8125 if (TYPE_LENGTH (rtype) > varsize_limit) 8126 error (_("record type with dynamic size is larger than varsize-limit")); 8127 return rtype; 8128 } 8129 8130 /* As for ada_template_to_fixed_record_type_1 with KEEP_DYNAMIC_FIELDS 8131 of 1. */ 8132 8133 static struct type * 8134 template_to_fixed_record_type (struct type *type, const gdb_byte *valaddr, 8135 CORE_ADDR address, struct value *dval0) 8136 { 8137 return ada_template_to_fixed_record_type_1 (type, valaddr, 8138 address, dval0, 1); 8139 } 8140 8141 /* An ordinary record type in which ___XVL-convention fields and 8142 ___XVU- and ___XVN-convention field types in TYPE0 are replaced with 8143 static approximations, containing all possible fields. Uses 8144 no runtime values. Useless for use in values, but that's OK, 8145 since the results are used only for type determinations. Works on both 8146 structs and unions. Representation note: to save space, we memorize 8147 the result of this function in the TYPE_TARGET_TYPE of the 8148 template type. */ 8149 8150 static struct type * 8151 template_to_static_fixed_type (struct type *type0) 8152 { 8153 struct type *type; 8154 int nfields; 8155 int f; 8156 8157 if (TYPE_TARGET_TYPE (type0) != NULL) 8158 return TYPE_TARGET_TYPE (type0); 8159 8160 nfields = TYPE_NFIELDS (type0); 8161 type = type0; 8162 8163 for (f = 0; f < nfields; f += 1) 8164 { 8165 struct type *field_type = ada_check_typedef (TYPE_FIELD_TYPE (type0, f)); 8166 struct type *new_type; 8167 8168 if (is_dynamic_field (type0, f)) 8169 new_type = to_static_fixed_type (TYPE_TARGET_TYPE (field_type)); 8170 else 8171 new_type = static_unwrap_type (field_type); 8172 if (type == type0 && new_type != field_type) 8173 { 8174 TYPE_TARGET_TYPE (type0) = type = alloc_type_copy (type0); 8175 TYPE_CODE (type) = TYPE_CODE (type0); 8176 INIT_CPLUS_SPECIFIC (type); 8177 TYPE_NFIELDS (type) = nfields; 8178 TYPE_FIELDS (type) = (struct field *) 8179 TYPE_ALLOC (type, nfields * sizeof (struct field)); 8180 memcpy (TYPE_FIELDS (type), TYPE_FIELDS (type0), 8181 sizeof (struct field) * nfields); 8182 TYPE_NAME (type) = ada_type_name (type0); 8183 TYPE_TAG_NAME (type) = NULL; 8184 TYPE_FIXED_INSTANCE (type) = 1; 8185 TYPE_LENGTH (type) = 0; 8186 } 8187 TYPE_FIELD_TYPE (type, f) = new_type; 8188 TYPE_FIELD_NAME (type, f) = TYPE_FIELD_NAME (type0, f); 8189 } 8190 return type; 8191 } 8192 8193 /* Given an object of type TYPE whose contents are at VALADDR and 8194 whose address in memory is ADDRESS, returns a revision of TYPE, 8195 which should be a non-dynamic-sized record, in which the variant 8196 part, if any, is replaced with the appropriate branch. Looks 8197 for discriminant values in DVAL0, which can be NULL if the record 8198 contains the necessary discriminant values. */ 8199 8200 static struct type * 8201 to_record_with_fixed_variant_part (struct type *type, const gdb_byte *valaddr, 8202 CORE_ADDR address, struct value *dval0) 8203 { 8204 struct value *mark = value_mark (); 8205 struct value *dval; 8206 struct type *rtype; 8207 struct type *branch_type; 8208 int nfields = TYPE_NFIELDS (type); 8209 int variant_field = variant_field_index (type); 8210 8211 if (variant_field == -1) 8212 return type; 8213 8214 if (dval0 == NULL) 8215 { 8216 dval = value_from_contents_and_address (type, valaddr, address); 8217 type = value_type (dval); 8218 } 8219 else 8220 dval = dval0; 8221 8222 rtype = alloc_type_copy (type); 8223 TYPE_CODE (rtype) = TYPE_CODE_STRUCT; 8224 INIT_CPLUS_SPECIFIC (rtype); 8225 TYPE_NFIELDS (rtype) = nfields; 8226 TYPE_FIELDS (rtype) = 8227 (struct field *) TYPE_ALLOC (rtype, nfields * sizeof (struct field)); 8228 memcpy (TYPE_FIELDS (rtype), TYPE_FIELDS (type), 8229 sizeof (struct field) * nfields); 8230 TYPE_NAME (rtype) = ada_type_name (type); 8231 TYPE_TAG_NAME (rtype) = NULL; 8232 TYPE_FIXED_INSTANCE (rtype) = 1; 8233 TYPE_LENGTH (rtype) = TYPE_LENGTH (type); 8234 8235 branch_type = to_fixed_variant_branch_type 8236 (TYPE_FIELD_TYPE (type, variant_field), 8237 cond_offset_host (valaddr, 8238 TYPE_FIELD_BITPOS (type, variant_field) 8239 / TARGET_CHAR_BIT), 8240 cond_offset_target (address, 8241 TYPE_FIELD_BITPOS (type, variant_field) 8242 / TARGET_CHAR_BIT), dval); 8243 if (branch_type == NULL) 8244 { 8245 int f; 8246 8247 for (f = variant_field + 1; f < nfields; f += 1) 8248 TYPE_FIELDS (rtype)[f - 1] = TYPE_FIELDS (rtype)[f]; 8249 TYPE_NFIELDS (rtype) -= 1; 8250 } 8251 else 8252 { 8253 TYPE_FIELD_TYPE (rtype, variant_field) = branch_type; 8254 TYPE_FIELD_NAME (rtype, variant_field) = "S"; 8255 TYPE_FIELD_BITSIZE (rtype, variant_field) = 0; 8256 TYPE_LENGTH (rtype) += TYPE_LENGTH (branch_type); 8257 } 8258 TYPE_LENGTH (rtype) -= TYPE_LENGTH (TYPE_FIELD_TYPE (type, variant_field)); 8259 8260 value_free_to_mark (mark); 8261 return rtype; 8262 } 8263 8264 /* An ordinary record type (with fixed-length fields) that describes 8265 the value at (TYPE0, VALADDR, ADDRESS) [see explanation at 8266 beginning of this section]. Any necessary discriminants' values 8267 should be in DVAL, a record value; it may be NULL if the object 8268 at ADDR itself contains any necessary discriminant values. 8269 Additionally, VALADDR and ADDRESS may also be NULL if no discriminant 8270 values from the record are needed. Except in the case that DVAL, 8271 VALADDR, and ADDRESS are all 0 or NULL, a variant field (unless 8272 unchecked) is replaced by a particular branch of the variant. 8273 8274 NOTE: the case in which DVAL and VALADDR are NULL and ADDRESS is 0 8275 is questionable and may be removed. It can arise during the 8276 processing of an unconstrained-array-of-record type where all the 8277 variant branches have exactly the same size. This is because in 8278 such cases, the compiler does not bother to use the XVS convention 8279 when encoding the record. I am currently dubious of this 8280 shortcut and suspect the compiler should be altered. FIXME. */ 8281 8282 static struct type * 8283 to_fixed_record_type (struct type *type0, const gdb_byte *valaddr, 8284 CORE_ADDR address, struct value *dval) 8285 { 8286 struct type *templ_type; 8287 8288 if (TYPE_FIXED_INSTANCE (type0)) 8289 return type0; 8290 8291 templ_type = dynamic_template_type (type0); 8292 8293 if (templ_type != NULL) 8294 return template_to_fixed_record_type (templ_type, valaddr, address, dval); 8295 else if (variant_field_index (type0) >= 0) 8296 { 8297 if (dval == NULL && valaddr == NULL && address == 0) 8298 return type0; 8299 return to_record_with_fixed_variant_part (type0, valaddr, address, 8300 dval); 8301 } 8302 else 8303 { 8304 TYPE_FIXED_INSTANCE (type0) = 1; 8305 return type0; 8306 } 8307 8308 } 8309 8310 /* An ordinary record type (with fixed-length fields) that describes 8311 the value at (VAR_TYPE0, VALADDR, ADDRESS), where VAR_TYPE0 is a 8312 union type. Any necessary discriminants' values should be in DVAL, 8313 a record value. That is, this routine selects the appropriate 8314 branch of the union at ADDR according to the discriminant value 8315 indicated in the union's type name. Returns VAR_TYPE0 itself if 8316 it represents a variant subject to a pragma Unchecked_Union. */ 8317 8318 static struct type * 8319 to_fixed_variant_branch_type (struct type *var_type0, const gdb_byte *valaddr, 8320 CORE_ADDR address, struct value *dval) 8321 { 8322 int which; 8323 struct type *templ_type; 8324 struct type *var_type; 8325 8326 if (TYPE_CODE (var_type0) == TYPE_CODE_PTR) 8327 var_type = TYPE_TARGET_TYPE (var_type0); 8328 else 8329 var_type = var_type0; 8330 8331 templ_type = ada_find_parallel_type (var_type, "___XVU"); 8332 8333 if (templ_type != NULL) 8334 var_type = templ_type; 8335 8336 if (is_unchecked_variant (var_type, value_type (dval))) 8337 return var_type0; 8338 which = 8339 ada_which_variant_applies (var_type, 8340 value_type (dval), value_contents (dval)); 8341 8342 if (which < 0) 8343 return empty_record (var_type); 8344 else if (is_dynamic_field (var_type, which)) 8345 return to_fixed_record_type 8346 (TYPE_TARGET_TYPE (TYPE_FIELD_TYPE (var_type, which)), 8347 valaddr, address, dval); 8348 else if (variant_field_index (TYPE_FIELD_TYPE (var_type, which)) >= 0) 8349 return 8350 to_fixed_record_type 8351 (TYPE_FIELD_TYPE (var_type, which), valaddr, address, dval); 8352 else 8353 return TYPE_FIELD_TYPE (var_type, which); 8354 } 8355 8356 /* Assuming RANGE_TYPE is a TYPE_CODE_RANGE, return nonzero if 8357 ENCODING_TYPE, a type following the GNAT conventions for discrete 8358 type encodings, only carries redundant information. */ 8359 8360 static int 8361 ada_is_redundant_range_encoding (struct type *range_type, 8362 struct type *encoding_type) 8363 { 8364 struct type *fixed_range_type; 8365 char *bounds_str; 8366 int n; 8367 LONGEST lo, hi; 8368 8369 gdb_assert (TYPE_CODE (range_type) == TYPE_CODE_RANGE); 8370 8371 if (TYPE_CODE (get_base_type (range_type)) 8372 != TYPE_CODE (get_base_type (encoding_type))) 8373 { 8374 /* The compiler probably used a simple base type to describe 8375 the range type instead of the range's actual base type, 8376 expecting us to get the real base type from the encoding 8377 anyway. In this situation, the encoding cannot be ignored 8378 as redundant. */ 8379 return 0; 8380 } 8381 8382 if (is_dynamic_type (range_type)) 8383 return 0; 8384 8385 if (TYPE_NAME (encoding_type) == NULL) 8386 return 0; 8387 8388 bounds_str = strstr (TYPE_NAME (encoding_type), "___XDLU_"); 8389 if (bounds_str == NULL) 8390 return 0; 8391 8392 n = 8; /* Skip "___XDLU_". */ 8393 if (!ada_scan_number (bounds_str, n, &lo, &n)) 8394 return 0; 8395 if (TYPE_LOW_BOUND (range_type) != lo) 8396 return 0; 8397 8398 n += 2; /* Skip the "__" separator between the two bounds. */ 8399 if (!ada_scan_number (bounds_str, n, &hi, &n)) 8400 return 0; 8401 if (TYPE_HIGH_BOUND (range_type) != hi) 8402 return 0; 8403 8404 return 1; 8405 } 8406 8407 /* Given the array type ARRAY_TYPE, return nonzero if DESC_TYPE, 8408 a type following the GNAT encoding for describing array type 8409 indices, only carries redundant information. */ 8410 8411 static int 8412 ada_is_redundant_index_type_desc (struct type *array_type, 8413 struct type *desc_type) 8414 { 8415 struct type *this_layer = check_typedef (array_type); 8416 int i; 8417 8418 for (i = 0; i < TYPE_NFIELDS (desc_type); i++) 8419 { 8420 if (!ada_is_redundant_range_encoding (TYPE_INDEX_TYPE (this_layer), 8421 TYPE_FIELD_TYPE (desc_type, i))) 8422 return 0; 8423 this_layer = check_typedef (TYPE_TARGET_TYPE (this_layer)); 8424 } 8425 8426 return 1; 8427 } 8428 8429 /* Assuming that TYPE0 is an array type describing the type of a value 8430 at ADDR, and that DVAL describes a record containing any 8431 discriminants used in TYPE0, returns a type for the value that 8432 contains no dynamic components (that is, no components whose sizes 8433 are determined by run-time quantities). Unless IGNORE_TOO_BIG is 8434 true, gives an error message if the resulting type's size is over 8435 varsize_limit. */ 8436 8437 static struct type * 8438 to_fixed_array_type (struct type *type0, struct value *dval, 8439 int ignore_too_big) 8440 { 8441 struct type *index_type_desc; 8442 struct type *result; 8443 int constrained_packed_array_p; 8444 8445 type0 = ada_check_typedef (type0); 8446 if (TYPE_FIXED_INSTANCE (type0)) 8447 return type0; 8448 8449 constrained_packed_array_p = ada_is_constrained_packed_array_type (type0); 8450 if (constrained_packed_array_p) 8451 type0 = decode_constrained_packed_array_type (type0); 8452 8453 index_type_desc = ada_find_parallel_type (type0, "___XA"); 8454 ada_fixup_array_indexes_type (index_type_desc); 8455 if (index_type_desc != NULL 8456 && ada_is_redundant_index_type_desc (type0, index_type_desc)) 8457 { 8458 /* Ignore this ___XA parallel type, as it does not bring any 8459 useful information. This allows us to avoid creating fixed 8460 versions of the array's index types, which would be identical 8461 to the original ones. This, in turn, can also help avoid 8462 the creation of fixed versions of the array itself. */ 8463 index_type_desc = NULL; 8464 } 8465 8466 if (index_type_desc == NULL) 8467 { 8468 struct type *elt_type0 = ada_check_typedef (TYPE_TARGET_TYPE (type0)); 8469 8470 /* NOTE: elt_type---the fixed version of elt_type0---should never 8471 depend on the contents of the array in properly constructed 8472 debugging data. */ 8473 /* Create a fixed version of the array element type. 8474 We're not providing the address of an element here, 8475 and thus the actual object value cannot be inspected to do 8476 the conversion. This should not be a problem, since arrays of 8477 unconstrained objects are not allowed. In particular, all 8478 the elements of an array of a tagged type should all be of 8479 the same type specified in the debugging info. No need to 8480 consult the object tag. */ 8481 struct type *elt_type = ada_to_fixed_type (elt_type0, 0, 0, dval, 1); 8482 8483 /* Make sure we always create a new array type when dealing with 8484 packed array types, since we're going to fix-up the array 8485 type length and element bitsize a little further down. */ 8486 if (elt_type0 == elt_type && !constrained_packed_array_p) 8487 result = type0; 8488 else 8489 result = create_array_type (alloc_type_copy (type0), 8490 elt_type, TYPE_INDEX_TYPE (type0)); 8491 } 8492 else 8493 { 8494 int i; 8495 struct type *elt_type0; 8496 8497 elt_type0 = type0; 8498 for (i = TYPE_NFIELDS (index_type_desc); i > 0; i -= 1) 8499 elt_type0 = TYPE_TARGET_TYPE (elt_type0); 8500 8501 /* NOTE: result---the fixed version of elt_type0---should never 8502 depend on the contents of the array in properly constructed 8503 debugging data. */ 8504 /* Create a fixed version of the array element type. 8505 We're not providing the address of an element here, 8506 and thus the actual object value cannot be inspected to do 8507 the conversion. This should not be a problem, since arrays of 8508 unconstrained objects are not allowed. In particular, all 8509 the elements of an array of a tagged type should all be of 8510 the same type specified in the debugging info. No need to 8511 consult the object tag. */ 8512 result = 8513 ada_to_fixed_type (ada_check_typedef (elt_type0), 0, 0, dval, 1); 8514 8515 elt_type0 = type0; 8516 for (i = TYPE_NFIELDS (index_type_desc) - 1; i >= 0; i -= 1) 8517 { 8518 struct type *range_type = 8519 to_fixed_range_type (TYPE_FIELD_TYPE (index_type_desc, i), dval); 8520 8521 result = create_array_type (alloc_type_copy (elt_type0), 8522 result, range_type); 8523 elt_type0 = TYPE_TARGET_TYPE (elt_type0); 8524 } 8525 if (!ignore_too_big && TYPE_LENGTH (result) > varsize_limit) 8526 error (_("array type with dynamic size is larger than varsize-limit")); 8527 } 8528 8529 /* We want to preserve the type name. This can be useful when 8530 trying to get the type name of a value that has already been 8531 printed (for instance, if the user did "print VAR; whatis $". */ 8532 TYPE_NAME (result) = TYPE_NAME (type0); 8533 8534 if (constrained_packed_array_p) 8535 { 8536 /* So far, the resulting type has been created as if the original 8537 type was a regular (non-packed) array type. As a result, the 8538 bitsize of the array elements needs to be set again, and the array 8539 length needs to be recomputed based on that bitsize. */ 8540 int len = TYPE_LENGTH (result) / TYPE_LENGTH (TYPE_TARGET_TYPE (result)); 8541 int elt_bitsize = TYPE_FIELD_BITSIZE (type0, 0); 8542 8543 TYPE_FIELD_BITSIZE (result, 0) = TYPE_FIELD_BITSIZE (type0, 0); 8544 TYPE_LENGTH (result) = len * elt_bitsize / HOST_CHAR_BIT; 8545 if (TYPE_LENGTH (result) * HOST_CHAR_BIT < len * elt_bitsize) 8546 TYPE_LENGTH (result)++; 8547 } 8548 8549 TYPE_FIXED_INSTANCE (result) = 1; 8550 return result; 8551 } 8552 8553 8554 /* A standard type (containing no dynamically sized components) 8555 corresponding to TYPE for the value (TYPE, VALADDR, ADDRESS) 8556 DVAL describes a record containing any discriminants used in TYPE0, 8557 and may be NULL if there are none, or if the object of type TYPE at 8558 ADDRESS or in VALADDR contains these discriminants. 8559 8560 If CHECK_TAG is not null, in the case of tagged types, this function 8561 attempts to locate the object's tag and use it to compute the actual 8562 type. However, when ADDRESS is null, we cannot use it to determine the 8563 location of the tag, and therefore compute the tagged type's actual type. 8564 So we return the tagged type without consulting the tag. */ 8565 8566 static struct type * 8567 ada_to_fixed_type_1 (struct type *type, const gdb_byte *valaddr, 8568 CORE_ADDR address, struct value *dval, int check_tag) 8569 { 8570 type = ada_check_typedef (type); 8571 switch (TYPE_CODE (type)) 8572 { 8573 default: 8574 return type; 8575 case TYPE_CODE_STRUCT: 8576 { 8577 struct type *static_type = to_static_fixed_type (type); 8578 struct type *fixed_record_type = 8579 to_fixed_record_type (type, valaddr, address, NULL); 8580 8581 /* If STATIC_TYPE is a tagged type and we know the object's address, 8582 then we can determine its tag, and compute the object's actual 8583 type from there. Note that we have to use the fixed record 8584 type (the parent part of the record may have dynamic fields 8585 and the way the location of _tag is expressed may depend on 8586 them). */ 8587 8588 if (check_tag && address != 0 && ada_is_tagged_type (static_type, 0)) 8589 { 8590 struct value *tag = 8591 value_tag_from_contents_and_address 8592 (fixed_record_type, 8593 valaddr, 8594 address); 8595 struct type *real_type = type_from_tag (tag); 8596 struct value *obj = 8597 value_from_contents_and_address (fixed_record_type, 8598 valaddr, 8599 address); 8600 fixed_record_type = value_type (obj); 8601 if (real_type != NULL) 8602 return to_fixed_record_type 8603 (real_type, NULL, 8604 value_address (ada_tag_value_at_base_address (obj)), NULL); 8605 } 8606 8607 /* Check to see if there is a parallel ___XVZ variable. 8608 If there is, then it provides the actual size of our type. */ 8609 else if (ada_type_name (fixed_record_type) != NULL) 8610 { 8611 const char *name = ada_type_name (fixed_record_type); 8612 char *xvz_name = alloca (strlen (name) + 7 /* "___XVZ\0" */); 8613 int xvz_found = 0; 8614 LONGEST size; 8615 8616 xsnprintf (xvz_name, strlen (name) + 7, "%s___XVZ", name); 8617 size = get_int_var_value (xvz_name, &xvz_found); 8618 if (xvz_found && TYPE_LENGTH (fixed_record_type) != size) 8619 { 8620 fixed_record_type = copy_type (fixed_record_type); 8621 TYPE_LENGTH (fixed_record_type) = size; 8622 8623 /* The FIXED_RECORD_TYPE may have be a stub. We have 8624 observed this when the debugging info is STABS, and 8625 apparently it is something that is hard to fix. 8626 8627 In practice, we don't need the actual type definition 8628 at all, because the presence of the XVZ variable allows us 8629 to assume that there must be a XVS type as well, which we 8630 should be able to use later, when we need the actual type 8631 definition. 8632 8633 In the meantime, pretend that the "fixed" type we are 8634 returning is NOT a stub, because this can cause trouble 8635 when using this type to create new types targeting it. 8636 Indeed, the associated creation routines often check 8637 whether the target type is a stub and will try to replace 8638 it, thus using a type with the wrong size. This, in turn, 8639 might cause the new type to have the wrong size too. 8640 Consider the case of an array, for instance, where the size 8641 of the array is computed from the number of elements in 8642 our array multiplied by the size of its element. */ 8643 TYPE_STUB (fixed_record_type) = 0; 8644 } 8645 } 8646 return fixed_record_type; 8647 } 8648 case TYPE_CODE_ARRAY: 8649 return to_fixed_array_type (type, dval, 1); 8650 case TYPE_CODE_UNION: 8651 if (dval == NULL) 8652 return type; 8653 else 8654 return to_fixed_variant_branch_type (type, valaddr, address, dval); 8655 } 8656 } 8657 8658 /* The same as ada_to_fixed_type_1, except that it preserves the type 8659 if it is a TYPE_CODE_TYPEDEF of a type that is already fixed. 8660 8661 The typedef layer needs be preserved in order to differentiate between 8662 arrays and array pointers when both types are implemented using the same 8663 fat pointer. In the array pointer case, the pointer is encoded as 8664 a typedef of the pointer type. For instance, considering: 8665 8666 type String_Access is access String; 8667 S1 : String_Access := null; 8668 8669 To the debugger, S1 is defined as a typedef of type String. But 8670 to the user, it is a pointer. So if the user tries to print S1, 8671 we should not dereference the array, but print the array address 8672 instead. 8673 8674 If we didn't preserve the typedef layer, we would lose the fact that 8675 the type is to be presented as a pointer (needs de-reference before 8676 being printed). And we would also use the source-level type name. */ 8677 8678 struct type * 8679 ada_to_fixed_type (struct type *type, const gdb_byte *valaddr, 8680 CORE_ADDR address, struct value *dval, int check_tag) 8681 8682 { 8683 struct type *fixed_type = 8684 ada_to_fixed_type_1 (type, valaddr, address, dval, check_tag); 8685 8686 /* If TYPE is a typedef and its target type is the same as the FIXED_TYPE, 8687 then preserve the typedef layer. 8688 8689 Implementation note: We can only check the main-type portion of 8690 the TYPE and FIXED_TYPE, because eliminating the typedef layer 8691 from TYPE now returns a type that has the same instance flags 8692 as TYPE. For instance, if TYPE is a "typedef const", and its 8693 target type is a "struct", then the typedef elimination will return 8694 a "const" version of the target type. See check_typedef for more 8695 details about how the typedef layer elimination is done. 8696 8697 brobecker/2010-11-19: It seems to me that the only case where it is 8698 useful to preserve the typedef layer is when dealing with fat pointers. 8699 Perhaps, we could add a check for that and preserve the typedef layer 8700 only in that situation. But this seems unecessary so far, probably 8701 because we call check_typedef/ada_check_typedef pretty much everywhere. 8702 */ 8703 if (TYPE_CODE (type) == TYPE_CODE_TYPEDEF 8704 && (TYPE_MAIN_TYPE (ada_typedef_target_type (type)) 8705 == TYPE_MAIN_TYPE (fixed_type))) 8706 return type; 8707 8708 return fixed_type; 8709 } 8710 8711 /* A standard (static-sized) type corresponding as well as possible to 8712 TYPE0, but based on no runtime data. */ 8713 8714 static struct type * 8715 to_static_fixed_type (struct type *type0) 8716 { 8717 struct type *type; 8718 8719 if (type0 == NULL) 8720 return NULL; 8721 8722 if (TYPE_FIXED_INSTANCE (type0)) 8723 return type0; 8724 8725 type0 = ada_check_typedef (type0); 8726 8727 switch (TYPE_CODE (type0)) 8728 { 8729 default: 8730 return type0; 8731 case TYPE_CODE_STRUCT: 8732 type = dynamic_template_type (type0); 8733 if (type != NULL) 8734 return template_to_static_fixed_type (type); 8735 else 8736 return template_to_static_fixed_type (type0); 8737 case TYPE_CODE_UNION: 8738 type = ada_find_parallel_type (type0, "___XVU"); 8739 if (type != NULL) 8740 return template_to_static_fixed_type (type); 8741 else 8742 return template_to_static_fixed_type (type0); 8743 } 8744 } 8745 8746 /* A static approximation of TYPE with all type wrappers removed. */ 8747 8748 static struct type * 8749 static_unwrap_type (struct type *type) 8750 { 8751 if (ada_is_aligner_type (type)) 8752 { 8753 struct type *type1 = TYPE_FIELD_TYPE (ada_check_typedef (type), 0); 8754 if (ada_type_name (type1) == NULL) 8755 TYPE_NAME (type1) = ada_type_name (type); 8756 8757 return static_unwrap_type (type1); 8758 } 8759 else 8760 { 8761 struct type *raw_real_type = ada_get_base_type (type); 8762 8763 if (raw_real_type == type) 8764 return type; 8765 else 8766 return to_static_fixed_type (raw_real_type); 8767 } 8768 } 8769 8770 /* In some cases, incomplete and private types require 8771 cross-references that are not resolved as records (for example, 8772 type Foo; 8773 type FooP is access Foo; 8774 V: FooP; 8775 type Foo is array ...; 8776 ). In these cases, since there is no mechanism for producing 8777 cross-references to such types, we instead substitute for FooP a 8778 stub enumeration type that is nowhere resolved, and whose tag is 8779 the name of the actual type. Call these types "non-record stubs". */ 8780 8781 /* A type equivalent to TYPE that is not a non-record stub, if one 8782 exists, otherwise TYPE. */ 8783 8784 struct type * 8785 ada_check_typedef (struct type *type) 8786 { 8787 if (type == NULL) 8788 return NULL; 8789 8790 /* If our type is a typedef type of a fat pointer, then we're done. 8791 We don't want to strip the TYPE_CODE_TYPDEF layer, because this is 8792 what allows us to distinguish between fat pointers that represent 8793 array types, and fat pointers that represent array access types 8794 (in both cases, the compiler implements them as fat pointers). */ 8795 if (TYPE_CODE (type) == TYPE_CODE_TYPEDEF 8796 && is_thick_pntr (ada_typedef_target_type (type))) 8797 return type; 8798 8799 CHECK_TYPEDEF (type); 8800 if (type == NULL || TYPE_CODE (type) != TYPE_CODE_ENUM 8801 || !TYPE_STUB (type) 8802 || TYPE_TAG_NAME (type) == NULL) 8803 return type; 8804 else 8805 { 8806 const char *name = TYPE_TAG_NAME (type); 8807 struct type *type1 = ada_find_any_type (name); 8808 8809 if (type1 == NULL) 8810 return type; 8811 8812 /* TYPE1 might itself be a TYPE_CODE_TYPEDEF (this can happen with 8813 stubs pointing to arrays, as we don't create symbols for array 8814 types, only for the typedef-to-array types). If that's the case, 8815 strip the typedef layer. */ 8816 if (TYPE_CODE (type1) == TYPE_CODE_TYPEDEF) 8817 type1 = ada_check_typedef (type1); 8818 8819 return type1; 8820 } 8821 } 8822 8823 /* A value representing the data at VALADDR/ADDRESS as described by 8824 type TYPE0, but with a standard (static-sized) type that correctly 8825 describes it. If VAL0 is not NULL and TYPE0 already is a standard 8826 type, then return VAL0 [this feature is simply to avoid redundant 8827 creation of struct values]. */ 8828 8829 static struct value * 8830 ada_to_fixed_value_create (struct type *type0, CORE_ADDR address, 8831 struct value *val0) 8832 { 8833 struct type *type = ada_to_fixed_type (type0, 0, address, NULL, 1); 8834 8835 if (type == type0 && val0 != NULL) 8836 return val0; 8837 else 8838 return value_from_contents_and_address (type, 0, address); 8839 } 8840 8841 /* A value representing VAL, but with a standard (static-sized) type 8842 that correctly describes it. Does not necessarily create a new 8843 value. */ 8844 8845 struct value * 8846 ada_to_fixed_value (struct value *val) 8847 { 8848 val = unwrap_value (val); 8849 val = ada_to_fixed_value_create (value_type (val), 8850 value_address (val), 8851 val); 8852 return val; 8853 } 8854 8855 8856 /* Attributes */ 8857 8858 /* Table mapping attribute numbers to names. 8859 NOTE: Keep up to date with enum ada_attribute definition in ada-lang.h. */ 8860 8861 static const char *attribute_names[] = { 8862 "<?>", 8863 8864 "first", 8865 "last", 8866 "length", 8867 "image", 8868 "max", 8869 "min", 8870 "modulus", 8871 "pos", 8872 "size", 8873 "tag", 8874 "val", 8875 0 8876 }; 8877 8878 const char * 8879 ada_attribute_name (enum exp_opcode n) 8880 { 8881 if (n >= OP_ATR_FIRST && n <= (int) OP_ATR_VAL) 8882 return attribute_names[n - OP_ATR_FIRST + 1]; 8883 else 8884 return attribute_names[0]; 8885 } 8886 8887 /* Evaluate the 'POS attribute applied to ARG. */ 8888 8889 static LONGEST 8890 pos_atr (struct value *arg) 8891 { 8892 struct value *val = coerce_ref (arg); 8893 struct type *type = value_type (val); 8894 8895 if (!discrete_type_p (type)) 8896 error (_("'POS only defined on discrete types")); 8897 8898 if (TYPE_CODE (type) == TYPE_CODE_ENUM) 8899 { 8900 int i; 8901 LONGEST v = value_as_long (val); 8902 8903 for (i = 0; i < TYPE_NFIELDS (type); i += 1) 8904 { 8905 if (v == TYPE_FIELD_ENUMVAL (type, i)) 8906 return i; 8907 } 8908 error (_("enumeration value is invalid: can't find 'POS")); 8909 } 8910 else 8911 return value_as_long (val); 8912 } 8913 8914 static struct value * 8915 value_pos_atr (struct type *type, struct value *arg) 8916 { 8917 return value_from_longest (type, pos_atr (arg)); 8918 } 8919 8920 /* Evaluate the TYPE'VAL attribute applied to ARG. */ 8921 8922 static struct value * 8923 value_val_atr (struct type *type, struct value *arg) 8924 { 8925 if (!discrete_type_p (type)) 8926 error (_("'VAL only defined on discrete types")); 8927 if (!integer_type_p (value_type (arg))) 8928 error (_("'VAL requires integral argument")); 8929 8930 if (TYPE_CODE (type) == TYPE_CODE_ENUM) 8931 { 8932 long pos = value_as_long (arg); 8933 8934 if (pos < 0 || pos >= TYPE_NFIELDS (type)) 8935 error (_("argument to 'VAL out of range")); 8936 return value_from_longest (type, TYPE_FIELD_ENUMVAL (type, pos)); 8937 } 8938 else 8939 return value_from_longest (type, value_as_long (arg)); 8940 } 8941 8942 8943 /* Evaluation */ 8944 8945 /* True if TYPE appears to be an Ada character type. 8946 [At the moment, this is true only for Character and Wide_Character; 8947 It is a heuristic test that could stand improvement]. */ 8948 8949 int 8950 ada_is_character_type (struct type *type) 8951 { 8952 const char *name; 8953 8954 /* If the type code says it's a character, then assume it really is, 8955 and don't check any further. */ 8956 if (TYPE_CODE (type) == TYPE_CODE_CHAR) 8957 return 1; 8958 8959 /* Otherwise, assume it's a character type iff it is a discrete type 8960 with a known character type name. */ 8961 name = ada_type_name (type); 8962 return (name != NULL 8963 && (TYPE_CODE (type) == TYPE_CODE_INT 8964 || TYPE_CODE (type) == TYPE_CODE_RANGE) 8965 && (strcmp (name, "character") == 0 8966 || strcmp (name, "wide_character") == 0 8967 || strcmp (name, "wide_wide_character") == 0 8968 || strcmp (name, "unsigned char") == 0)); 8969 } 8970 8971 /* True if TYPE appears to be an Ada string type. */ 8972 8973 int 8974 ada_is_string_type (struct type *type) 8975 { 8976 type = ada_check_typedef (type); 8977 if (type != NULL 8978 && TYPE_CODE (type) != TYPE_CODE_PTR 8979 && (ada_is_simple_array_type (type) 8980 || ada_is_array_descriptor_type (type)) 8981 && ada_array_arity (type) == 1) 8982 { 8983 struct type *elttype = ada_array_element_type (type, 1); 8984 8985 return ada_is_character_type (elttype); 8986 } 8987 else 8988 return 0; 8989 } 8990 8991 /* The compiler sometimes provides a parallel XVS type for a given 8992 PAD type. Normally, it is safe to follow the PAD type directly, 8993 but older versions of the compiler have a bug that causes the offset 8994 of its "F" field to be wrong. Following that field in that case 8995 would lead to incorrect results, but this can be worked around 8996 by ignoring the PAD type and using the associated XVS type instead. 8997 8998 Set to True if the debugger should trust the contents of PAD types. 8999 Otherwise, ignore the PAD type if there is a parallel XVS type. */ 9000 static int trust_pad_over_xvs = 1; 9001 9002 /* True if TYPE is a struct type introduced by the compiler to force the 9003 alignment of a value. Such types have a single field with a 9004 distinctive name. */ 9005 9006 int 9007 ada_is_aligner_type (struct type *type) 9008 { 9009 type = ada_check_typedef (type); 9010 9011 if (!trust_pad_over_xvs && ada_find_parallel_type (type, "___XVS") != NULL) 9012 return 0; 9013 9014 return (TYPE_CODE (type) == TYPE_CODE_STRUCT 9015 && TYPE_NFIELDS (type) == 1 9016 && strcmp (TYPE_FIELD_NAME (type, 0), "F") == 0); 9017 } 9018 9019 /* If there is an ___XVS-convention type parallel to SUBTYPE, return 9020 the parallel type. */ 9021 9022 struct type * 9023 ada_get_base_type (struct type *raw_type) 9024 { 9025 struct type *real_type_namer; 9026 struct type *raw_real_type; 9027 9028 if (raw_type == NULL || TYPE_CODE (raw_type) != TYPE_CODE_STRUCT) 9029 return raw_type; 9030 9031 if (ada_is_aligner_type (raw_type)) 9032 /* The encoding specifies that we should always use the aligner type. 9033 So, even if this aligner type has an associated XVS type, we should 9034 simply ignore it. 9035 9036 According to the compiler gurus, an XVS type parallel to an aligner 9037 type may exist because of a stabs limitation. In stabs, aligner 9038 types are empty because the field has a variable-sized type, and 9039 thus cannot actually be used as an aligner type. As a result, 9040 we need the associated parallel XVS type to decode the type. 9041 Since the policy in the compiler is to not change the internal 9042 representation based on the debugging info format, we sometimes 9043 end up having a redundant XVS type parallel to the aligner type. */ 9044 return raw_type; 9045 9046 real_type_namer = ada_find_parallel_type (raw_type, "___XVS"); 9047 if (real_type_namer == NULL 9048 || TYPE_CODE (real_type_namer) != TYPE_CODE_STRUCT 9049 || TYPE_NFIELDS (real_type_namer) != 1) 9050 return raw_type; 9051 9052 if (TYPE_CODE (TYPE_FIELD_TYPE (real_type_namer, 0)) != TYPE_CODE_REF) 9053 { 9054 /* This is an older encoding form where the base type needs to be 9055 looked up by name. We prefer the newer enconding because it is 9056 more efficient. */ 9057 raw_real_type = ada_find_any_type (TYPE_FIELD_NAME (real_type_namer, 0)); 9058 if (raw_real_type == NULL) 9059 return raw_type; 9060 else 9061 return raw_real_type; 9062 } 9063 9064 /* The field in our XVS type is a reference to the base type. */ 9065 return TYPE_TARGET_TYPE (TYPE_FIELD_TYPE (real_type_namer, 0)); 9066 } 9067 9068 /* The type of value designated by TYPE, with all aligners removed. */ 9069 9070 struct type * 9071 ada_aligned_type (struct type *type) 9072 { 9073 if (ada_is_aligner_type (type)) 9074 return ada_aligned_type (TYPE_FIELD_TYPE (type, 0)); 9075 else 9076 return ada_get_base_type (type); 9077 } 9078 9079 9080 /* The address of the aligned value in an object at address VALADDR 9081 having type TYPE. Assumes ada_is_aligner_type (TYPE). */ 9082 9083 const gdb_byte * 9084 ada_aligned_value_addr (struct type *type, const gdb_byte *valaddr) 9085 { 9086 if (ada_is_aligner_type (type)) 9087 return ada_aligned_value_addr (TYPE_FIELD_TYPE (type, 0), 9088 valaddr + 9089 TYPE_FIELD_BITPOS (type, 9090 0) / TARGET_CHAR_BIT); 9091 else 9092 return valaddr; 9093 } 9094 9095 9096 9097 /* The printed representation of an enumeration literal with encoded 9098 name NAME. The value is good to the next call of ada_enum_name. */ 9099 const char * 9100 ada_enum_name (const char *name) 9101 { 9102 static char *result; 9103 static size_t result_len = 0; 9104 char *tmp; 9105 9106 /* First, unqualify the enumeration name: 9107 1. Search for the last '.' character. If we find one, then skip 9108 all the preceding characters, the unqualified name starts 9109 right after that dot. 9110 2. Otherwise, we may be debugging on a target where the compiler 9111 translates dots into "__". Search forward for double underscores, 9112 but stop searching when we hit an overloading suffix, which is 9113 of the form "__" followed by digits. */ 9114 9115 tmp = strrchr (name, '.'); 9116 if (tmp != NULL) 9117 name = tmp + 1; 9118 else 9119 { 9120 while ((tmp = strstr (name, "__")) != NULL) 9121 { 9122 if (isdigit (tmp[2])) 9123 break; 9124 else 9125 name = tmp + 2; 9126 } 9127 } 9128 9129 if (name[0] == 'Q') 9130 { 9131 int v; 9132 9133 if (name[1] == 'U' || name[1] == 'W') 9134 { 9135 if (sscanf (name + 2, "%x", &v) != 1) 9136 return name; 9137 } 9138 else 9139 return name; 9140 9141 GROW_VECT (result, result_len, 16); 9142 if (isascii (v) && isprint (v)) 9143 xsnprintf (result, result_len, "'%c'", v); 9144 else if (name[1] == 'U') 9145 xsnprintf (result, result_len, "[\"%02x\"]", v); 9146 else 9147 xsnprintf (result, result_len, "[\"%04x\"]", v); 9148 9149 return result; 9150 } 9151 else 9152 { 9153 tmp = strstr (name, "__"); 9154 if (tmp == NULL) 9155 tmp = strstr (name, "$"); 9156 if (tmp != NULL) 9157 { 9158 GROW_VECT (result, result_len, tmp - name + 1); 9159 strncpy (result, name, tmp - name); 9160 result[tmp - name] = '\0'; 9161 return result; 9162 } 9163 9164 return name; 9165 } 9166 } 9167 9168 /* Evaluate the subexpression of EXP starting at *POS as for 9169 evaluate_type, updating *POS to point just past the evaluated 9170 expression. */ 9171 9172 static struct value * 9173 evaluate_subexp_type (struct expression *exp, int *pos) 9174 { 9175 return evaluate_subexp (NULL_TYPE, exp, pos, EVAL_AVOID_SIDE_EFFECTS); 9176 } 9177 9178 /* If VAL is wrapped in an aligner or subtype wrapper, return the 9179 value it wraps. */ 9180 9181 static struct value * 9182 unwrap_value (struct value *val) 9183 { 9184 struct type *type = ada_check_typedef (value_type (val)); 9185 9186 if (ada_is_aligner_type (type)) 9187 { 9188 struct value *v = ada_value_struct_elt (val, "F", 0); 9189 struct type *val_type = ada_check_typedef (value_type (v)); 9190 9191 if (ada_type_name (val_type) == NULL) 9192 TYPE_NAME (val_type) = ada_type_name (type); 9193 9194 return unwrap_value (v); 9195 } 9196 else 9197 { 9198 struct type *raw_real_type = 9199 ada_check_typedef (ada_get_base_type (type)); 9200 9201 /* If there is no parallel XVS or XVE type, then the value is 9202 already unwrapped. Return it without further modification. */ 9203 if ((type == raw_real_type) 9204 && ada_find_parallel_type (type, "___XVE") == NULL) 9205 return val; 9206 9207 return 9208 coerce_unspec_val_to_type 9209 (val, ada_to_fixed_type (raw_real_type, 0, 9210 value_address (val), 9211 NULL, 1)); 9212 } 9213 } 9214 9215 static struct value * 9216 cast_to_fixed (struct type *type, struct value *arg) 9217 { 9218 LONGEST val; 9219 9220 if (type == value_type (arg)) 9221 return arg; 9222 else if (ada_is_fixed_point_type (value_type (arg))) 9223 val = ada_float_to_fixed (type, 9224 ada_fixed_to_float (value_type (arg), 9225 value_as_long (arg))); 9226 else 9227 { 9228 DOUBLEST argd = value_as_double (arg); 9229 9230 val = ada_float_to_fixed (type, argd); 9231 } 9232 9233 return value_from_longest (type, val); 9234 } 9235 9236 static struct value * 9237 cast_from_fixed (struct type *type, struct value *arg) 9238 { 9239 DOUBLEST val = ada_fixed_to_float (value_type (arg), 9240 value_as_long (arg)); 9241 9242 return value_from_double (type, val); 9243 } 9244 9245 /* Given two array types T1 and T2, return nonzero iff both arrays 9246 contain the same number of elements. */ 9247 9248 static int 9249 ada_same_array_size_p (struct type *t1, struct type *t2) 9250 { 9251 LONGEST lo1, hi1, lo2, hi2; 9252 9253 /* Get the array bounds in order to verify that the size of 9254 the two arrays match. */ 9255 if (!get_array_bounds (t1, &lo1, &hi1) 9256 || !get_array_bounds (t2, &lo2, &hi2)) 9257 error (_("unable to determine array bounds")); 9258 9259 /* To make things easier for size comparison, normalize a bit 9260 the case of empty arrays by making sure that the difference 9261 between upper bound and lower bound is always -1. */ 9262 if (lo1 > hi1) 9263 hi1 = lo1 - 1; 9264 if (lo2 > hi2) 9265 hi2 = lo2 - 1; 9266 9267 return (hi1 - lo1 == hi2 - lo2); 9268 } 9269 9270 /* Assuming that VAL is an array of integrals, and TYPE represents 9271 an array with the same number of elements, but with wider integral 9272 elements, return an array "casted" to TYPE. In practice, this 9273 means that the returned array is built by casting each element 9274 of the original array into TYPE's (wider) element type. */ 9275 9276 static struct value * 9277 ada_promote_array_of_integrals (struct type *type, struct value *val) 9278 { 9279 struct type *elt_type = TYPE_TARGET_TYPE (type); 9280 LONGEST lo, hi; 9281 struct value *res; 9282 LONGEST i; 9283 9284 /* Verify that both val and type are arrays of scalars, and 9285 that the size of val's elements is smaller than the size 9286 of type's element. */ 9287 gdb_assert (TYPE_CODE (type) == TYPE_CODE_ARRAY); 9288 gdb_assert (is_integral_type (TYPE_TARGET_TYPE (type))); 9289 gdb_assert (TYPE_CODE (value_type (val)) == TYPE_CODE_ARRAY); 9290 gdb_assert (is_integral_type (TYPE_TARGET_TYPE (value_type (val)))); 9291 gdb_assert (TYPE_LENGTH (TYPE_TARGET_TYPE (type)) 9292 > TYPE_LENGTH (TYPE_TARGET_TYPE (value_type (val)))); 9293 9294 if (!get_array_bounds (type, &lo, &hi)) 9295 error (_("unable to determine array bounds")); 9296 9297 res = allocate_value (type); 9298 9299 /* Promote each array element. */ 9300 for (i = 0; i < hi - lo + 1; i++) 9301 { 9302 struct value *elt = value_cast (elt_type, value_subscript (val, lo + i)); 9303 9304 memcpy (value_contents_writeable (res) + (i * TYPE_LENGTH (elt_type)), 9305 value_contents_all (elt), TYPE_LENGTH (elt_type)); 9306 } 9307 9308 return res; 9309 } 9310 9311 /* Coerce VAL as necessary for assignment to an lval of type TYPE, and 9312 return the converted value. */ 9313 9314 static struct value * 9315 coerce_for_assign (struct type *type, struct value *val) 9316 { 9317 struct type *type2 = value_type (val); 9318 9319 if (type == type2) 9320 return val; 9321 9322 type2 = ada_check_typedef (type2); 9323 type = ada_check_typedef (type); 9324 9325 if (TYPE_CODE (type2) == TYPE_CODE_PTR 9326 && TYPE_CODE (type) == TYPE_CODE_ARRAY) 9327 { 9328 val = ada_value_ind (val); 9329 type2 = value_type (val); 9330 } 9331 9332 if (TYPE_CODE (type2) == TYPE_CODE_ARRAY 9333 && TYPE_CODE (type) == TYPE_CODE_ARRAY) 9334 { 9335 if (!ada_same_array_size_p (type, type2)) 9336 error (_("cannot assign arrays of different length")); 9337 9338 if (is_integral_type (TYPE_TARGET_TYPE (type)) 9339 && is_integral_type (TYPE_TARGET_TYPE (type2)) 9340 && TYPE_LENGTH (TYPE_TARGET_TYPE (type2)) 9341 < TYPE_LENGTH (TYPE_TARGET_TYPE (type))) 9342 { 9343 /* Allow implicit promotion of the array elements to 9344 a wider type. */ 9345 return ada_promote_array_of_integrals (type, val); 9346 } 9347 9348 if (TYPE_LENGTH (TYPE_TARGET_TYPE (type2)) 9349 != TYPE_LENGTH (TYPE_TARGET_TYPE (type))) 9350 error (_("Incompatible types in assignment")); 9351 deprecated_set_value_type (val, type); 9352 } 9353 return val; 9354 } 9355 9356 static struct value * 9357 ada_value_binop (struct value *arg1, struct value *arg2, enum exp_opcode op) 9358 { 9359 struct value *val; 9360 struct type *type1, *type2; 9361 LONGEST v, v1, v2; 9362 9363 arg1 = coerce_ref (arg1); 9364 arg2 = coerce_ref (arg2); 9365 type1 = get_base_type (ada_check_typedef (value_type (arg1))); 9366 type2 = get_base_type (ada_check_typedef (value_type (arg2))); 9367 9368 if (TYPE_CODE (type1) != TYPE_CODE_INT 9369 || TYPE_CODE (type2) != TYPE_CODE_INT) 9370 return value_binop (arg1, arg2, op); 9371 9372 switch (op) 9373 { 9374 case BINOP_MOD: 9375 case BINOP_DIV: 9376 case BINOP_REM: 9377 break; 9378 default: 9379 return value_binop (arg1, arg2, op); 9380 } 9381 9382 v2 = value_as_long (arg2); 9383 if (v2 == 0) 9384 error (_("second operand of %s must not be zero."), op_string (op)); 9385 9386 if (TYPE_UNSIGNED (type1) || op == BINOP_MOD) 9387 return value_binop (arg1, arg2, op); 9388 9389 v1 = value_as_long (arg1); 9390 switch (op) 9391 { 9392 case BINOP_DIV: 9393 v = v1 / v2; 9394 if (!TRUNCATION_TOWARDS_ZERO && v1 * (v1 % v2) < 0) 9395 v += v > 0 ? -1 : 1; 9396 break; 9397 case BINOP_REM: 9398 v = v1 % v2; 9399 if (v * v1 < 0) 9400 v -= v2; 9401 break; 9402 default: 9403 /* Should not reach this point. */ 9404 v = 0; 9405 } 9406 9407 val = allocate_value (type1); 9408 store_unsigned_integer (value_contents_raw (val), 9409 TYPE_LENGTH (value_type (val)), 9410 gdbarch_byte_order (get_type_arch (type1)), v); 9411 return val; 9412 } 9413 9414 static int 9415 ada_value_equal (struct value *arg1, struct value *arg2) 9416 { 9417 if (ada_is_direct_array_type (value_type (arg1)) 9418 || ada_is_direct_array_type (value_type (arg2))) 9419 { 9420 /* Automatically dereference any array reference before 9421 we attempt to perform the comparison. */ 9422 arg1 = ada_coerce_ref (arg1); 9423 arg2 = ada_coerce_ref (arg2); 9424 9425 arg1 = ada_coerce_to_simple_array (arg1); 9426 arg2 = ada_coerce_to_simple_array (arg2); 9427 if (TYPE_CODE (value_type (arg1)) != TYPE_CODE_ARRAY 9428 || TYPE_CODE (value_type (arg2)) != TYPE_CODE_ARRAY) 9429 error (_("Attempt to compare array with non-array")); 9430 /* FIXME: The following works only for types whose 9431 representations use all bits (no padding or undefined bits) 9432 and do not have user-defined equality. */ 9433 return 9434 TYPE_LENGTH (value_type (arg1)) == TYPE_LENGTH (value_type (arg2)) 9435 && memcmp (value_contents (arg1), value_contents (arg2), 9436 TYPE_LENGTH (value_type (arg1))) == 0; 9437 } 9438 return value_equal (arg1, arg2); 9439 } 9440 9441 /* Total number of component associations in the aggregate starting at 9442 index PC in EXP. Assumes that index PC is the start of an 9443 OP_AGGREGATE. */ 9444 9445 static int 9446 num_component_specs (struct expression *exp, int pc) 9447 { 9448 int n, m, i; 9449 9450 m = exp->elts[pc + 1].longconst; 9451 pc += 3; 9452 n = 0; 9453 for (i = 0; i < m; i += 1) 9454 { 9455 switch (exp->elts[pc].opcode) 9456 { 9457 default: 9458 n += 1; 9459 break; 9460 case OP_CHOICES: 9461 n += exp->elts[pc + 1].longconst; 9462 break; 9463 } 9464 ada_evaluate_subexp (NULL, exp, &pc, EVAL_SKIP); 9465 } 9466 return n; 9467 } 9468 9469 /* Assign the result of evaluating EXP starting at *POS to the INDEXth 9470 component of LHS (a simple array or a record), updating *POS past 9471 the expression, assuming that LHS is contained in CONTAINER. Does 9472 not modify the inferior's memory, nor does it modify LHS (unless 9473 LHS == CONTAINER). */ 9474 9475 static void 9476 assign_component (struct value *container, struct value *lhs, LONGEST index, 9477 struct expression *exp, int *pos) 9478 { 9479 struct value *mark = value_mark (); 9480 struct value *elt; 9481 9482 if (TYPE_CODE (value_type (lhs)) == TYPE_CODE_ARRAY) 9483 { 9484 struct type *index_type = builtin_type (exp->gdbarch)->builtin_int; 9485 struct value *index_val = value_from_longest (index_type, index); 9486 9487 elt = unwrap_value (ada_value_subscript (lhs, 1, &index_val)); 9488 } 9489 else 9490 { 9491 elt = ada_index_struct_field (index, lhs, 0, value_type (lhs)); 9492 elt = ada_to_fixed_value (elt); 9493 } 9494 9495 if (exp->elts[*pos].opcode == OP_AGGREGATE) 9496 assign_aggregate (container, elt, exp, pos, EVAL_NORMAL); 9497 else 9498 value_assign_to_component (container, elt, 9499 ada_evaluate_subexp (NULL, exp, pos, 9500 EVAL_NORMAL)); 9501 9502 value_free_to_mark (mark); 9503 } 9504 9505 /* Assuming that LHS represents an lvalue having a record or array 9506 type, and EXP->ELTS[*POS] is an OP_AGGREGATE, evaluate an assignment 9507 of that aggregate's value to LHS, advancing *POS past the 9508 aggregate. NOSIDE is as for evaluate_subexp. CONTAINER is an 9509 lvalue containing LHS (possibly LHS itself). Does not modify 9510 the inferior's memory, nor does it modify the contents of 9511 LHS (unless == CONTAINER). Returns the modified CONTAINER. */ 9512 9513 static struct value * 9514 assign_aggregate (struct value *container, 9515 struct value *lhs, struct expression *exp, 9516 int *pos, enum noside noside) 9517 { 9518 struct type *lhs_type; 9519 int n = exp->elts[*pos+1].longconst; 9520 LONGEST low_index, high_index; 9521 int num_specs; 9522 LONGEST *indices; 9523 int max_indices, num_indices; 9524 int i; 9525 9526 *pos += 3; 9527 if (noside != EVAL_NORMAL) 9528 { 9529 for (i = 0; i < n; i += 1) 9530 ada_evaluate_subexp (NULL, exp, pos, noside); 9531 return container; 9532 } 9533 9534 container = ada_coerce_ref (container); 9535 if (ada_is_direct_array_type (value_type (container))) 9536 container = ada_coerce_to_simple_array (container); 9537 lhs = ada_coerce_ref (lhs); 9538 if (!deprecated_value_modifiable (lhs)) 9539 error (_("Left operand of assignment is not a modifiable lvalue.")); 9540 9541 lhs_type = value_type (lhs); 9542 if (ada_is_direct_array_type (lhs_type)) 9543 { 9544 lhs = ada_coerce_to_simple_array (lhs); 9545 lhs_type = value_type (lhs); 9546 low_index = TYPE_ARRAY_LOWER_BOUND_VALUE (lhs_type); 9547 high_index = TYPE_ARRAY_UPPER_BOUND_VALUE (lhs_type); 9548 } 9549 else if (TYPE_CODE (lhs_type) == TYPE_CODE_STRUCT) 9550 { 9551 low_index = 0; 9552 high_index = num_visible_fields (lhs_type) - 1; 9553 } 9554 else 9555 error (_("Left-hand side must be array or record.")); 9556 9557 num_specs = num_component_specs (exp, *pos - 3); 9558 max_indices = 4 * num_specs + 4; 9559 indices = alloca (max_indices * sizeof (indices[0])); 9560 indices[0] = indices[1] = low_index - 1; 9561 indices[2] = indices[3] = high_index + 1; 9562 num_indices = 4; 9563 9564 for (i = 0; i < n; i += 1) 9565 { 9566 switch (exp->elts[*pos].opcode) 9567 { 9568 case OP_CHOICES: 9569 aggregate_assign_from_choices (container, lhs, exp, pos, indices, 9570 &num_indices, max_indices, 9571 low_index, high_index); 9572 break; 9573 case OP_POSITIONAL: 9574 aggregate_assign_positional (container, lhs, exp, pos, indices, 9575 &num_indices, max_indices, 9576 low_index, high_index); 9577 break; 9578 case OP_OTHERS: 9579 if (i != n-1) 9580 error (_("Misplaced 'others' clause")); 9581 aggregate_assign_others (container, lhs, exp, pos, indices, 9582 num_indices, low_index, high_index); 9583 break; 9584 default: 9585 error (_("Internal error: bad aggregate clause")); 9586 } 9587 } 9588 9589 return container; 9590 } 9591 9592 /* Assign into the component of LHS indexed by the OP_POSITIONAL 9593 construct at *POS, updating *POS past the construct, given that 9594 the positions are relative to lower bound LOW, where HIGH is the 9595 upper bound. Record the position in INDICES[0 .. MAX_INDICES-1] 9596 updating *NUM_INDICES as needed. CONTAINER is as for 9597 assign_aggregate. */ 9598 static void 9599 aggregate_assign_positional (struct value *container, 9600 struct value *lhs, struct expression *exp, 9601 int *pos, LONGEST *indices, int *num_indices, 9602 int max_indices, LONGEST low, LONGEST high) 9603 { 9604 LONGEST ind = longest_to_int (exp->elts[*pos + 1].longconst) + low; 9605 9606 if (ind - 1 == high) 9607 warning (_("Extra components in aggregate ignored.")); 9608 if (ind <= high) 9609 { 9610 add_component_interval (ind, ind, indices, num_indices, max_indices); 9611 *pos += 3; 9612 assign_component (container, lhs, ind, exp, pos); 9613 } 9614 else 9615 ada_evaluate_subexp (NULL, exp, pos, EVAL_SKIP); 9616 } 9617 9618 /* Assign into the components of LHS indexed by the OP_CHOICES 9619 construct at *POS, updating *POS past the construct, given that 9620 the allowable indices are LOW..HIGH. Record the indices assigned 9621 to in INDICES[0 .. MAX_INDICES-1], updating *NUM_INDICES as 9622 needed. CONTAINER is as for assign_aggregate. */ 9623 static void 9624 aggregate_assign_from_choices (struct value *container, 9625 struct value *lhs, struct expression *exp, 9626 int *pos, LONGEST *indices, int *num_indices, 9627 int max_indices, LONGEST low, LONGEST high) 9628 { 9629 int j; 9630 int n_choices = longest_to_int (exp->elts[*pos+1].longconst); 9631 int choice_pos, expr_pc; 9632 int is_array = ada_is_direct_array_type (value_type (lhs)); 9633 9634 choice_pos = *pos += 3; 9635 9636 for (j = 0; j < n_choices; j += 1) 9637 ada_evaluate_subexp (NULL, exp, pos, EVAL_SKIP); 9638 expr_pc = *pos; 9639 ada_evaluate_subexp (NULL, exp, pos, EVAL_SKIP); 9640 9641 for (j = 0; j < n_choices; j += 1) 9642 { 9643 LONGEST lower, upper; 9644 enum exp_opcode op = exp->elts[choice_pos].opcode; 9645 9646 if (op == OP_DISCRETE_RANGE) 9647 { 9648 choice_pos += 1; 9649 lower = value_as_long (ada_evaluate_subexp (NULL, exp, pos, 9650 EVAL_NORMAL)); 9651 upper = value_as_long (ada_evaluate_subexp (NULL, exp, pos, 9652 EVAL_NORMAL)); 9653 } 9654 else if (is_array) 9655 { 9656 lower = value_as_long (ada_evaluate_subexp (NULL, exp, &choice_pos, 9657 EVAL_NORMAL)); 9658 upper = lower; 9659 } 9660 else 9661 { 9662 int ind; 9663 const char *name; 9664 9665 switch (op) 9666 { 9667 case OP_NAME: 9668 name = &exp->elts[choice_pos + 2].string; 9669 break; 9670 case OP_VAR_VALUE: 9671 name = SYMBOL_NATURAL_NAME (exp->elts[choice_pos + 2].symbol); 9672 break; 9673 default: 9674 error (_("Invalid record component association.")); 9675 } 9676 ada_evaluate_subexp (NULL, exp, &choice_pos, EVAL_SKIP); 9677 ind = 0; 9678 if (! find_struct_field (name, value_type (lhs), 0, 9679 NULL, NULL, NULL, NULL, &ind)) 9680 error (_("Unknown component name: %s."), name); 9681 lower = upper = ind; 9682 } 9683 9684 if (lower <= upper && (lower < low || upper > high)) 9685 error (_("Index in component association out of bounds.")); 9686 9687 add_component_interval (lower, upper, indices, num_indices, 9688 max_indices); 9689 while (lower <= upper) 9690 { 9691 int pos1; 9692 9693 pos1 = expr_pc; 9694 assign_component (container, lhs, lower, exp, &pos1); 9695 lower += 1; 9696 } 9697 } 9698 } 9699 9700 /* Assign the value of the expression in the OP_OTHERS construct in 9701 EXP at *POS into the components of LHS indexed from LOW .. HIGH that 9702 have not been previously assigned. The index intervals already assigned 9703 are in INDICES[0 .. NUM_INDICES-1]. Updates *POS to after the 9704 OP_OTHERS clause. CONTAINER is as for assign_aggregate. */ 9705 static void 9706 aggregate_assign_others (struct value *container, 9707 struct value *lhs, struct expression *exp, 9708 int *pos, LONGEST *indices, int num_indices, 9709 LONGEST low, LONGEST high) 9710 { 9711 int i; 9712 int expr_pc = *pos + 1; 9713 9714 for (i = 0; i < num_indices - 2; i += 2) 9715 { 9716 LONGEST ind; 9717 9718 for (ind = indices[i + 1] + 1; ind < indices[i + 2]; ind += 1) 9719 { 9720 int localpos; 9721 9722 localpos = expr_pc; 9723 assign_component (container, lhs, ind, exp, &localpos); 9724 } 9725 } 9726 ada_evaluate_subexp (NULL, exp, pos, EVAL_SKIP); 9727 } 9728 9729 /* Add the interval [LOW .. HIGH] to the sorted set of intervals 9730 [ INDICES[0] .. INDICES[1] ],..., [ INDICES[*SIZE-2] .. INDICES[*SIZE-1] ], 9731 modifying *SIZE as needed. It is an error if *SIZE exceeds 9732 MAX_SIZE. The resulting intervals do not overlap. */ 9733 static void 9734 add_component_interval (LONGEST low, LONGEST high, 9735 LONGEST* indices, int *size, int max_size) 9736 { 9737 int i, j; 9738 9739 for (i = 0; i < *size; i += 2) { 9740 if (high >= indices[i] && low <= indices[i + 1]) 9741 { 9742 int kh; 9743 9744 for (kh = i + 2; kh < *size; kh += 2) 9745 if (high < indices[kh]) 9746 break; 9747 if (low < indices[i]) 9748 indices[i] = low; 9749 indices[i + 1] = indices[kh - 1]; 9750 if (high > indices[i + 1]) 9751 indices[i + 1] = high; 9752 memcpy (indices + i + 2, indices + kh, *size - kh); 9753 *size -= kh - i - 2; 9754 return; 9755 } 9756 else if (high < indices[i]) 9757 break; 9758 } 9759 9760 if (*size == max_size) 9761 error (_("Internal error: miscounted aggregate components.")); 9762 *size += 2; 9763 for (j = *size-1; j >= i+2; j -= 1) 9764 indices[j] = indices[j - 2]; 9765 indices[i] = low; 9766 indices[i + 1] = high; 9767 } 9768 9769 /* Perform and Ada cast of ARG2 to type TYPE if the type of ARG2 9770 is different. */ 9771 9772 static struct value * 9773 ada_value_cast (struct type *type, struct value *arg2, enum noside noside) 9774 { 9775 if (type == ada_check_typedef (value_type (arg2))) 9776 return arg2; 9777 9778 if (ada_is_fixed_point_type (type)) 9779 return (cast_to_fixed (type, arg2)); 9780 9781 if (ada_is_fixed_point_type (value_type (arg2))) 9782 return cast_from_fixed (type, arg2); 9783 9784 return value_cast (type, arg2); 9785 } 9786 9787 /* Evaluating Ada expressions, and printing their result. 9788 ------------------------------------------------------ 9789 9790 1. Introduction: 9791 ---------------- 9792 9793 We usually evaluate an Ada expression in order to print its value. 9794 We also evaluate an expression in order to print its type, which 9795 happens during the EVAL_AVOID_SIDE_EFFECTS phase of the evaluation, 9796 but we'll focus mostly on the EVAL_NORMAL phase. In practice, the 9797 EVAL_AVOID_SIDE_EFFECTS phase allows us to simplify certain aspects of 9798 the evaluation compared to the EVAL_NORMAL, but is otherwise very 9799 similar. 9800 9801 Evaluating expressions is a little more complicated for Ada entities 9802 than it is for entities in languages such as C. The main reason for 9803 this is that Ada provides types whose definition might be dynamic. 9804 One example of such types is variant records. Or another example 9805 would be an array whose bounds can only be known at run time. 9806 9807 The following description is a general guide as to what should be 9808 done (and what should NOT be done) in order to evaluate an expression 9809 involving such types, and when. This does not cover how the semantic 9810 information is encoded by GNAT as this is covered separatly. For the 9811 document used as the reference for the GNAT encoding, see exp_dbug.ads 9812 in the GNAT sources. 9813 9814 Ideally, we should embed each part of this description next to its 9815 associated code. Unfortunately, the amount of code is so vast right 9816 now that it's hard to see whether the code handling a particular 9817 situation might be duplicated or not. One day, when the code is 9818 cleaned up, this guide might become redundant with the comments 9819 inserted in the code, and we might want to remove it. 9820 9821 2. ``Fixing'' an Entity, the Simple Case: 9822 ----------------------------------------- 9823 9824 When evaluating Ada expressions, the tricky issue is that they may 9825 reference entities whose type contents and size are not statically 9826 known. Consider for instance a variant record: 9827 9828 type Rec (Empty : Boolean := True) is record 9829 case Empty is 9830 when True => null; 9831 when False => Value : Integer; 9832 end case; 9833 end record; 9834 Yes : Rec := (Empty => False, Value => 1); 9835 No : Rec := (empty => True); 9836 9837 The size and contents of that record depends on the value of the 9838 descriminant (Rec.Empty). At this point, neither the debugging 9839 information nor the associated type structure in GDB are able to 9840 express such dynamic types. So what the debugger does is to create 9841 "fixed" versions of the type that applies to the specific object. 9842 We also informally refer to this opperation as "fixing" an object, 9843 which means creating its associated fixed type. 9844 9845 Example: when printing the value of variable "Yes" above, its fixed 9846 type would look like this: 9847 9848 type Rec is record 9849 Empty : Boolean; 9850 Value : Integer; 9851 end record; 9852 9853 On the other hand, if we printed the value of "No", its fixed type 9854 would become: 9855 9856 type Rec is record 9857 Empty : Boolean; 9858 end record; 9859 9860 Things become a little more complicated when trying to fix an entity 9861 with a dynamic type that directly contains another dynamic type, 9862 such as an array of variant records, for instance. There are 9863 two possible cases: Arrays, and records. 9864 9865 3. ``Fixing'' Arrays: 9866 --------------------- 9867 9868 The type structure in GDB describes an array in terms of its bounds, 9869 and the type of its elements. By design, all elements in the array 9870 have the same type and we cannot represent an array of variant elements 9871 using the current type structure in GDB. When fixing an array, 9872 we cannot fix the array element, as we would potentially need one 9873 fixed type per element of the array. As a result, the best we can do 9874 when fixing an array is to produce an array whose bounds and size 9875 are correct (allowing us to read it from memory), but without having 9876 touched its element type. Fixing each element will be done later, 9877 when (if) necessary. 9878 9879 Arrays are a little simpler to handle than records, because the same 9880 amount of memory is allocated for each element of the array, even if 9881 the amount of space actually used by each element differs from element 9882 to element. Consider for instance the following array of type Rec: 9883 9884 type Rec_Array is array (1 .. 2) of Rec; 9885 9886 The actual amount of memory occupied by each element might be different 9887 from element to element, depending on the value of their discriminant. 9888 But the amount of space reserved for each element in the array remains 9889 fixed regardless. So we simply need to compute that size using 9890 the debugging information available, from which we can then determine 9891 the array size (we multiply the number of elements of the array by 9892 the size of each element). 9893 9894 The simplest case is when we have an array of a constrained element 9895 type. For instance, consider the following type declarations: 9896 9897 type Bounded_String (Max_Size : Integer) is 9898 Length : Integer; 9899 Buffer : String (1 .. Max_Size); 9900 end record; 9901 type Bounded_String_Array is array (1 ..2) of Bounded_String (80); 9902 9903 In this case, the compiler describes the array as an array of 9904 variable-size elements (identified by its XVS suffix) for which 9905 the size can be read in the parallel XVZ variable. 9906 9907 In the case of an array of an unconstrained element type, the compiler 9908 wraps the array element inside a private PAD type. This type should not 9909 be shown to the user, and must be "unwrap"'ed before printing. Note 9910 that we also use the adjective "aligner" in our code to designate 9911 these wrapper types. 9912 9913 In some cases, the size allocated for each element is statically 9914 known. In that case, the PAD type already has the correct size, 9915 and the array element should remain unfixed. 9916 9917 But there are cases when this size is not statically known. 9918 For instance, assuming that "Five" is an integer variable: 9919 9920 type Dynamic is array (1 .. Five) of Integer; 9921 type Wrapper (Has_Length : Boolean := False) is record 9922 Data : Dynamic; 9923 case Has_Length is 9924 when True => Length : Integer; 9925 when False => null; 9926 end case; 9927 end record; 9928 type Wrapper_Array is array (1 .. 2) of Wrapper; 9929 9930 Hello : Wrapper_Array := (others => (Has_Length => True, 9931 Data => (others => 17), 9932 Length => 1)); 9933 9934 9935 The debugging info would describe variable Hello as being an 9936 array of a PAD type. The size of that PAD type is not statically 9937 known, but can be determined using a parallel XVZ variable. 9938 In that case, a copy of the PAD type with the correct size should 9939 be used for the fixed array. 9940 9941 3. ``Fixing'' record type objects: 9942 ---------------------------------- 9943 9944 Things are slightly different from arrays in the case of dynamic 9945 record types. In this case, in order to compute the associated 9946 fixed type, we need to determine the size and offset of each of 9947 its components. This, in turn, requires us to compute the fixed 9948 type of each of these components. 9949 9950 Consider for instance the example: 9951 9952 type Bounded_String (Max_Size : Natural) is record 9953 Str : String (1 .. Max_Size); 9954 Length : Natural; 9955 end record; 9956 My_String : Bounded_String (Max_Size => 10); 9957 9958 In that case, the position of field "Length" depends on the size 9959 of field Str, which itself depends on the value of the Max_Size 9960 discriminant. In order to fix the type of variable My_String, 9961 we need to fix the type of field Str. Therefore, fixing a variant 9962 record requires us to fix each of its components. 9963 9964 However, if a component does not have a dynamic size, the component 9965 should not be fixed. In particular, fields that use a PAD type 9966 should not fixed. Here is an example where this might happen 9967 (assuming type Rec above): 9968 9969 type Container (Big : Boolean) is record 9970 First : Rec; 9971 After : Integer; 9972 case Big is 9973 when True => Another : Integer; 9974 when False => null; 9975 end case; 9976 end record; 9977 My_Container : Container := (Big => False, 9978 First => (Empty => True), 9979 After => 42); 9980 9981 In that example, the compiler creates a PAD type for component First, 9982 whose size is constant, and then positions the component After just 9983 right after it. The offset of component After is therefore constant 9984 in this case. 9985 9986 The debugger computes the position of each field based on an algorithm 9987 that uses, among other things, the actual position and size of the field 9988 preceding it. Let's now imagine that the user is trying to print 9989 the value of My_Container. If the type fixing was recursive, we would 9990 end up computing the offset of field After based on the size of the 9991 fixed version of field First. And since in our example First has 9992 only one actual field, the size of the fixed type is actually smaller 9993 than the amount of space allocated to that field, and thus we would 9994 compute the wrong offset of field After. 9995 9996 To make things more complicated, we need to watch out for dynamic 9997 components of variant records (identified by the ___XVL suffix in 9998 the component name). Even if the target type is a PAD type, the size 9999 of that type might not be statically known. So the PAD type needs 10000 to be unwrapped and the resulting type needs to be fixed. Otherwise, 10001 we might end up with the wrong size for our component. This can be 10002 observed with the following type declarations: 10003 10004 type Octal is new Integer range 0 .. 7; 10005 type Octal_Array is array (Positive range <>) of Octal; 10006 pragma Pack (Octal_Array); 10007 10008 type Octal_Buffer (Size : Positive) is record 10009 Buffer : Octal_Array (1 .. Size); 10010 Length : Integer; 10011 end record; 10012 10013 In that case, Buffer is a PAD type whose size is unset and needs 10014 to be computed by fixing the unwrapped type. 10015 10016 4. When to ``Fix'' un-``Fixed'' sub-elements of an entity: 10017 ---------------------------------------------------------- 10018 10019 Lastly, when should the sub-elements of an entity that remained unfixed 10020 thus far, be actually fixed? 10021 10022 The answer is: Only when referencing that element. For instance 10023 when selecting one component of a record, this specific component 10024 should be fixed at that point in time. Or when printing the value 10025 of a record, each component should be fixed before its value gets 10026 printed. Similarly for arrays, the element of the array should be 10027 fixed when printing each element of the array, or when extracting 10028 one element out of that array. On the other hand, fixing should 10029 not be performed on the elements when taking a slice of an array! 10030 10031 Note that one of the side-effects of miscomputing the offset and 10032 size of each field is that we end up also miscomputing the size 10033 of the containing type. This can have adverse results when computing 10034 the value of an entity. GDB fetches the value of an entity based 10035 on the size of its type, and thus a wrong size causes GDB to fetch 10036 the wrong amount of memory. In the case where the computed size is 10037 too small, GDB fetches too little data to print the value of our 10038 entiry. Results in this case as unpredicatble, as we usually read 10039 past the buffer containing the data =:-o. */ 10040 10041 /* Implement the evaluate_exp routine in the exp_descriptor structure 10042 for the Ada language. */ 10043 10044 static struct value * 10045 ada_evaluate_subexp (struct type *expect_type, struct expression *exp, 10046 int *pos, enum noside noside) 10047 { 10048 enum exp_opcode op; 10049 int tem; 10050 int pc; 10051 int preeval_pos; 10052 struct value *arg1 = NULL, *arg2 = NULL, *arg3; 10053 struct type *type; 10054 int nargs, oplen; 10055 struct value **argvec; 10056 10057 pc = *pos; 10058 *pos += 1; 10059 op = exp->elts[pc].opcode; 10060 10061 switch (op) 10062 { 10063 default: 10064 *pos -= 1; 10065 arg1 = evaluate_subexp_standard (expect_type, exp, pos, noside); 10066 10067 if (noside == EVAL_NORMAL) 10068 arg1 = unwrap_value (arg1); 10069 10070 /* If evaluating an OP_DOUBLE and an EXPECT_TYPE was provided, 10071 then we need to perform the conversion manually, because 10072 evaluate_subexp_standard doesn't do it. This conversion is 10073 necessary in Ada because the different kinds of float/fixed 10074 types in Ada have different representations. 10075 10076 Similarly, we need to perform the conversion from OP_LONG 10077 ourselves. */ 10078 if ((op == OP_DOUBLE || op == OP_LONG) && expect_type != NULL) 10079 arg1 = ada_value_cast (expect_type, arg1, noside); 10080 10081 return arg1; 10082 10083 case OP_STRING: 10084 { 10085 struct value *result; 10086 10087 *pos -= 1; 10088 result = evaluate_subexp_standard (expect_type, exp, pos, noside); 10089 /* The result type will have code OP_STRING, bashed there from 10090 OP_ARRAY. Bash it back. */ 10091 if (TYPE_CODE (value_type (result)) == TYPE_CODE_STRING) 10092 TYPE_CODE (value_type (result)) = TYPE_CODE_ARRAY; 10093 return result; 10094 } 10095 10096 case UNOP_CAST: 10097 (*pos) += 2; 10098 type = exp->elts[pc + 1].type; 10099 arg1 = evaluate_subexp (type, exp, pos, noside); 10100 if (noside == EVAL_SKIP) 10101 goto nosideret; 10102 arg1 = ada_value_cast (type, arg1, noside); 10103 return arg1; 10104 10105 case UNOP_QUAL: 10106 (*pos) += 2; 10107 type = exp->elts[pc + 1].type; 10108 return ada_evaluate_subexp (type, exp, pos, noside); 10109 10110 case BINOP_ASSIGN: 10111 arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside); 10112 if (exp->elts[*pos].opcode == OP_AGGREGATE) 10113 { 10114 arg1 = assign_aggregate (arg1, arg1, exp, pos, noside); 10115 if (noside == EVAL_SKIP || noside == EVAL_AVOID_SIDE_EFFECTS) 10116 return arg1; 10117 return ada_value_assign (arg1, arg1); 10118 } 10119 /* Force the evaluation of the rhs ARG2 to the type of the lhs ARG1, 10120 except if the lhs of our assignment is a convenience variable. 10121 In the case of assigning to a convenience variable, the lhs 10122 should be exactly the result of the evaluation of the rhs. */ 10123 type = value_type (arg1); 10124 if (VALUE_LVAL (arg1) == lval_internalvar) 10125 type = NULL; 10126 arg2 = evaluate_subexp (type, exp, pos, noside); 10127 if (noside == EVAL_SKIP || noside == EVAL_AVOID_SIDE_EFFECTS) 10128 return arg1; 10129 if (ada_is_fixed_point_type (value_type (arg1))) 10130 arg2 = cast_to_fixed (value_type (arg1), arg2); 10131 else if (ada_is_fixed_point_type (value_type (arg2))) 10132 error 10133 (_("Fixed-point values must be assigned to fixed-point variables")); 10134 else 10135 arg2 = coerce_for_assign (value_type (arg1), arg2); 10136 return ada_value_assign (arg1, arg2); 10137 10138 case BINOP_ADD: 10139 arg1 = evaluate_subexp_with_coercion (exp, pos, noside); 10140 arg2 = evaluate_subexp_with_coercion (exp, pos, noside); 10141 if (noside == EVAL_SKIP) 10142 goto nosideret; 10143 if (TYPE_CODE (value_type (arg1)) == TYPE_CODE_PTR) 10144 return (value_from_longest 10145 (value_type (arg1), 10146 value_as_long (arg1) + value_as_long (arg2))); 10147 if (TYPE_CODE (value_type (arg2)) == TYPE_CODE_PTR) 10148 return (value_from_longest 10149 (value_type (arg2), 10150 value_as_long (arg1) + value_as_long (arg2))); 10151 if ((ada_is_fixed_point_type (value_type (arg1)) 10152 || ada_is_fixed_point_type (value_type (arg2))) 10153 && value_type (arg1) != value_type (arg2)) 10154 error (_("Operands of fixed-point addition must have the same type")); 10155 /* Do the addition, and cast the result to the type of the first 10156 argument. We cannot cast the result to a reference type, so if 10157 ARG1 is a reference type, find its underlying type. */ 10158 type = value_type (arg1); 10159 while (TYPE_CODE (type) == TYPE_CODE_REF) 10160 type = TYPE_TARGET_TYPE (type); 10161 binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2); 10162 return value_cast (type, value_binop (arg1, arg2, BINOP_ADD)); 10163 10164 case BINOP_SUB: 10165 arg1 = evaluate_subexp_with_coercion (exp, pos, noside); 10166 arg2 = evaluate_subexp_with_coercion (exp, pos, noside); 10167 if (noside == EVAL_SKIP) 10168 goto nosideret; 10169 if (TYPE_CODE (value_type (arg1)) == TYPE_CODE_PTR) 10170 return (value_from_longest 10171 (value_type (arg1), 10172 value_as_long (arg1) - value_as_long (arg2))); 10173 if (TYPE_CODE (value_type (arg2)) == TYPE_CODE_PTR) 10174 return (value_from_longest 10175 (value_type (arg2), 10176 value_as_long (arg1) - value_as_long (arg2))); 10177 if ((ada_is_fixed_point_type (value_type (arg1)) 10178 || ada_is_fixed_point_type (value_type (arg2))) 10179 && value_type (arg1) != value_type (arg2)) 10180 error (_("Operands of fixed-point subtraction " 10181 "must have the same type")); 10182 /* Do the substraction, and cast the result to the type of the first 10183 argument. We cannot cast the result to a reference type, so if 10184 ARG1 is a reference type, find its underlying type. */ 10185 type = value_type (arg1); 10186 while (TYPE_CODE (type) == TYPE_CODE_REF) 10187 type = TYPE_TARGET_TYPE (type); 10188 binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2); 10189 return value_cast (type, value_binop (arg1, arg2, BINOP_SUB)); 10190 10191 case BINOP_MUL: 10192 case BINOP_DIV: 10193 case BINOP_REM: 10194 case BINOP_MOD: 10195 arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside); 10196 arg2 = evaluate_subexp (NULL_TYPE, exp, pos, noside); 10197 if (noside == EVAL_SKIP) 10198 goto nosideret; 10199 else if (noside == EVAL_AVOID_SIDE_EFFECTS) 10200 { 10201 binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2); 10202 return value_zero (value_type (arg1), not_lval); 10203 } 10204 else 10205 { 10206 type = builtin_type (exp->gdbarch)->builtin_double; 10207 if (ada_is_fixed_point_type (value_type (arg1))) 10208 arg1 = cast_from_fixed (type, arg1); 10209 if (ada_is_fixed_point_type (value_type (arg2))) 10210 arg2 = cast_from_fixed (type, arg2); 10211 binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2); 10212 return ada_value_binop (arg1, arg2, op); 10213 } 10214 10215 case BINOP_EQUAL: 10216 case BINOP_NOTEQUAL: 10217 arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside); 10218 arg2 = evaluate_subexp (value_type (arg1), exp, pos, noside); 10219 if (noside == EVAL_SKIP) 10220 goto nosideret; 10221 if (noside == EVAL_AVOID_SIDE_EFFECTS) 10222 tem = 0; 10223 else 10224 { 10225 binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2); 10226 tem = ada_value_equal (arg1, arg2); 10227 } 10228 if (op == BINOP_NOTEQUAL) 10229 tem = !tem; 10230 type = language_bool_type (exp->language_defn, exp->gdbarch); 10231 return value_from_longest (type, (LONGEST) tem); 10232 10233 case UNOP_NEG: 10234 arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside); 10235 if (noside == EVAL_SKIP) 10236 goto nosideret; 10237 else if (ada_is_fixed_point_type (value_type (arg1))) 10238 return value_cast (value_type (arg1), value_neg (arg1)); 10239 else 10240 { 10241 unop_promote (exp->language_defn, exp->gdbarch, &arg1); 10242 return value_neg (arg1); 10243 } 10244 10245 case BINOP_LOGICAL_AND: 10246 case BINOP_LOGICAL_OR: 10247 case UNOP_LOGICAL_NOT: 10248 { 10249 struct value *val; 10250 10251 *pos -= 1; 10252 val = evaluate_subexp_standard (expect_type, exp, pos, noside); 10253 type = language_bool_type (exp->language_defn, exp->gdbarch); 10254 return value_cast (type, val); 10255 } 10256 10257 case BINOP_BITWISE_AND: 10258 case BINOP_BITWISE_IOR: 10259 case BINOP_BITWISE_XOR: 10260 { 10261 struct value *val; 10262 10263 arg1 = evaluate_subexp (NULL_TYPE, exp, pos, EVAL_AVOID_SIDE_EFFECTS); 10264 *pos = pc; 10265 val = evaluate_subexp_standard (expect_type, exp, pos, noside); 10266 10267 return value_cast (value_type (arg1), val); 10268 } 10269 10270 case OP_VAR_VALUE: 10271 *pos -= 1; 10272 10273 if (noside == EVAL_SKIP) 10274 { 10275 *pos += 4; 10276 goto nosideret; 10277 } 10278 10279 if (SYMBOL_DOMAIN (exp->elts[pc + 2].symbol) == UNDEF_DOMAIN) 10280 /* Only encountered when an unresolved symbol occurs in a 10281 context other than a function call, in which case, it is 10282 invalid. */ 10283 error (_("Unexpected unresolved symbol, %s, during evaluation"), 10284 SYMBOL_PRINT_NAME (exp->elts[pc + 2].symbol)); 10285 10286 if (noside == EVAL_AVOID_SIDE_EFFECTS) 10287 { 10288 type = static_unwrap_type (SYMBOL_TYPE (exp->elts[pc + 2].symbol)); 10289 /* Check to see if this is a tagged type. We also need to handle 10290 the case where the type is a reference to a tagged type, but 10291 we have to be careful to exclude pointers to tagged types. 10292 The latter should be shown as usual (as a pointer), whereas 10293 a reference should mostly be transparent to the user. */ 10294 if (ada_is_tagged_type (type, 0) 10295 || (TYPE_CODE (type) == TYPE_CODE_REF 10296 && ada_is_tagged_type (TYPE_TARGET_TYPE (type), 0))) 10297 { 10298 /* Tagged types are a little special in the fact that the real 10299 type is dynamic and can only be determined by inspecting the 10300 object's tag. This means that we need to get the object's 10301 value first (EVAL_NORMAL) and then extract the actual object 10302 type from its tag. 10303 10304 Note that we cannot skip the final step where we extract 10305 the object type from its tag, because the EVAL_NORMAL phase 10306 results in dynamic components being resolved into fixed ones. 10307 This can cause problems when trying to print the type 10308 description of tagged types whose parent has a dynamic size: 10309 We use the type name of the "_parent" component in order 10310 to print the name of the ancestor type in the type description. 10311 If that component had a dynamic size, the resolution into 10312 a fixed type would result in the loss of that type name, 10313 thus preventing us from printing the name of the ancestor 10314 type in the type description. */ 10315 arg1 = evaluate_subexp (NULL_TYPE, exp, pos, EVAL_NORMAL); 10316 10317 if (TYPE_CODE (type) != TYPE_CODE_REF) 10318 { 10319 struct type *actual_type; 10320 10321 actual_type = type_from_tag (ada_value_tag (arg1)); 10322 if (actual_type == NULL) 10323 /* If, for some reason, we were unable to determine 10324 the actual type from the tag, then use the static 10325 approximation that we just computed as a fallback. 10326 This can happen if the debugging information is 10327 incomplete, for instance. */ 10328 actual_type = type; 10329 return value_zero (actual_type, not_lval); 10330 } 10331 else 10332 { 10333 /* In the case of a ref, ada_coerce_ref takes care 10334 of determining the actual type. But the evaluation 10335 should return a ref as it should be valid to ask 10336 for its address; so rebuild a ref after coerce. */ 10337 arg1 = ada_coerce_ref (arg1); 10338 return value_ref (arg1); 10339 } 10340 } 10341 10342 /* Records and unions for which GNAT encodings have been 10343 generated need to be statically fixed as well. 10344 Otherwise, non-static fixing produces a type where 10345 all dynamic properties are removed, which prevents "ptype" 10346 from being able to completely describe the type. 10347 For instance, a case statement in a variant record would be 10348 replaced by the relevant components based on the actual 10349 value of the discriminants. */ 10350 if ((TYPE_CODE (type) == TYPE_CODE_STRUCT 10351 && dynamic_template_type (type) != NULL) 10352 || (TYPE_CODE (type) == TYPE_CODE_UNION 10353 && ada_find_parallel_type (type, "___XVU") != NULL)) 10354 { 10355 *pos += 4; 10356 return value_zero (to_static_fixed_type (type), not_lval); 10357 } 10358 } 10359 10360 arg1 = evaluate_subexp_standard (expect_type, exp, pos, noside); 10361 return ada_to_fixed_value (arg1); 10362 10363 case OP_FUNCALL: 10364 (*pos) += 2; 10365 10366 /* Allocate arg vector, including space for the function to be 10367 called in argvec[0] and a terminating NULL. */ 10368 nargs = longest_to_int (exp->elts[pc + 1].longconst); 10369 argvec = 10370 (struct value **) alloca (sizeof (struct value *) * (nargs + 2)); 10371 10372 if (exp->elts[*pos].opcode == OP_VAR_VALUE 10373 && SYMBOL_DOMAIN (exp->elts[pc + 5].symbol) == UNDEF_DOMAIN) 10374 error (_("Unexpected unresolved symbol, %s, during evaluation"), 10375 SYMBOL_PRINT_NAME (exp->elts[pc + 5].symbol)); 10376 else 10377 { 10378 for (tem = 0; tem <= nargs; tem += 1) 10379 argvec[tem] = evaluate_subexp (NULL_TYPE, exp, pos, noside); 10380 argvec[tem] = 0; 10381 10382 if (noside == EVAL_SKIP) 10383 goto nosideret; 10384 } 10385 10386 if (ada_is_constrained_packed_array_type 10387 (desc_base_type (value_type (argvec[0])))) 10388 argvec[0] = ada_coerce_to_simple_array (argvec[0]); 10389 else if (TYPE_CODE (value_type (argvec[0])) == TYPE_CODE_ARRAY 10390 && TYPE_FIELD_BITSIZE (value_type (argvec[0]), 0) != 0) 10391 /* This is a packed array that has already been fixed, and 10392 therefore already coerced to a simple array. Nothing further 10393 to do. */ 10394 ; 10395 else if (TYPE_CODE (value_type (argvec[0])) == TYPE_CODE_REF 10396 || (TYPE_CODE (value_type (argvec[0])) == TYPE_CODE_ARRAY 10397 && VALUE_LVAL (argvec[0]) == lval_memory)) 10398 argvec[0] = value_addr (argvec[0]); 10399 10400 type = ada_check_typedef (value_type (argvec[0])); 10401 10402 /* Ada allows us to implicitly dereference arrays when subscripting 10403 them. So, if this is an array typedef (encoding use for array 10404 access types encoded as fat pointers), strip it now. */ 10405 if (TYPE_CODE (type) == TYPE_CODE_TYPEDEF) 10406 type = ada_typedef_target_type (type); 10407 10408 if (TYPE_CODE (type) == TYPE_CODE_PTR) 10409 { 10410 switch (TYPE_CODE (ada_check_typedef (TYPE_TARGET_TYPE (type)))) 10411 { 10412 case TYPE_CODE_FUNC: 10413 type = ada_check_typedef (TYPE_TARGET_TYPE (type)); 10414 break; 10415 case TYPE_CODE_ARRAY: 10416 break; 10417 case TYPE_CODE_STRUCT: 10418 if (noside != EVAL_AVOID_SIDE_EFFECTS) 10419 argvec[0] = ada_value_ind (argvec[0]); 10420 type = ada_check_typedef (TYPE_TARGET_TYPE (type)); 10421 break; 10422 default: 10423 error (_("cannot subscript or call something of type `%s'"), 10424 ada_type_name (value_type (argvec[0]))); 10425 break; 10426 } 10427 } 10428 10429 switch (TYPE_CODE (type)) 10430 { 10431 case TYPE_CODE_FUNC: 10432 if (noside == EVAL_AVOID_SIDE_EFFECTS) 10433 { 10434 struct type *rtype = TYPE_TARGET_TYPE (type); 10435 10436 if (TYPE_GNU_IFUNC (type)) 10437 return allocate_value (TYPE_TARGET_TYPE (rtype)); 10438 return allocate_value (rtype); 10439 } 10440 return call_function_by_hand (argvec[0], nargs, argvec + 1); 10441 case TYPE_CODE_INTERNAL_FUNCTION: 10442 if (noside == EVAL_AVOID_SIDE_EFFECTS) 10443 /* We don't know anything about what the internal 10444 function might return, but we have to return 10445 something. */ 10446 return value_zero (builtin_type (exp->gdbarch)->builtin_int, 10447 not_lval); 10448 else 10449 return call_internal_function (exp->gdbarch, exp->language_defn, 10450 argvec[0], nargs, argvec + 1); 10451 10452 case TYPE_CODE_STRUCT: 10453 { 10454 int arity; 10455 10456 arity = ada_array_arity (type); 10457 type = ada_array_element_type (type, nargs); 10458 if (type == NULL) 10459 error (_("cannot subscript or call a record")); 10460 if (arity != nargs) 10461 error (_("wrong number of subscripts; expecting %d"), arity); 10462 if (noside == EVAL_AVOID_SIDE_EFFECTS) 10463 return value_zero (ada_aligned_type (type), lval_memory); 10464 return 10465 unwrap_value (ada_value_subscript 10466 (argvec[0], nargs, argvec + 1)); 10467 } 10468 case TYPE_CODE_ARRAY: 10469 if (noside == EVAL_AVOID_SIDE_EFFECTS) 10470 { 10471 type = ada_array_element_type (type, nargs); 10472 if (type == NULL) 10473 error (_("element type of array unknown")); 10474 else 10475 return value_zero (ada_aligned_type (type), lval_memory); 10476 } 10477 return 10478 unwrap_value (ada_value_subscript 10479 (ada_coerce_to_simple_array (argvec[0]), 10480 nargs, argvec + 1)); 10481 case TYPE_CODE_PTR: /* Pointer to array */ 10482 if (noside == EVAL_AVOID_SIDE_EFFECTS) 10483 { 10484 type = to_fixed_array_type (TYPE_TARGET_TYPE (type), NULL, 1); 10485 type = ada_array_element_type (type, nargs); 10486 if (type == NULL) 10487 error (_("element type of array unknown")); 10488 else 10489 return value_zero (ada_aligned_type (type), lval_memory); 10490 } 10491 return 10492 unwrap_value (ada_value_ptr_subscript (argvec[0], 10493 nargs, argvec + 1)); 10494 10495 default: 10496 error (_("Attempt to index or call something other than an " 10497 "array or function")); 10498 } 10499 10500 case TERNOP_SLICE: 10501 { 10502 struct value *array = evaluate_subexp (NULL_TYPE, exp, pos, noside); 10503 struct value *low_bound_val = 10504 evaluate_subexp (NULL_TYPE, exp, pos, noside); 10505 struct value *high_bound_val = 10506 evaluate_subexp (NULL_TYPE, exp, pos, noside); 10507 LONGEST low_bound; 10508 LONGEST high_bound; 10509 10510 low_bound_val = coerce_ref (low_bound_val); 10511 high_bound_val = coerce_ref (high_bound_val); 10512 low_bound = pos_atr (low_bound_val); 10513 high_bound = pos_atr (high_bound_val); 10514 10515 if (noside == EVAL_SKIP) 10516 goto nosideret; 10517 10518 /* If this is a reference to an aligner type, then remove all 10519 the aligners. */ 10520 if (TYPE_CODE (value_type (array)) == TYPE_CODE_REF 10521 && ada_is_aligner_type (TYPE_TARGET_TYPE (value_type (array)))) 10522 TYPE_TARGET_TYPE (value_type (array)) = 10523 ada_aligned_type (TYPE_TARGET_TYPE (value_type (array))); 10524 10525 if (ada_is_constrained_packed_array_type (value_type (array))) 10526 error (_("cannot slice a packed array")); 10527 10528 /* If this is a reference to an array or an array lvalue, 10529 convert to a pointer. */ 10530 if (TYPE_CODE (value_type (array)) == TYPE_CODE_REF 10531 || (TYPE_CODE (value_type (array)) == TYPE_CODE_ARRAY 10532 && VALUE_LVAL (array) == lval_memory)) 10533 array = value_addr (array); 10534 10535 if (noside == EVAL_AVOID_SIDE_EFFECTS 10536 && ada_is_array_descriptor_type (ada_check_typedef 10537 (value_type (array)))) 10538 return empty_array (ada_type_of_array (array, 0), low_bound); 10539 10540 array = ada_coerce_to_simple_array_ptr (array); 10541 10542 /* If we have more than one level of pointer indirection, 10543 dereference the value until we get only one level. */ 10544 while (TYPE_CODE (value_type (array)) == TYPE_CODE_PTR 10545 && (TYPE_CODE (TYPE_TARGET_TYPE (value_type (array))) 10546 == TYPE_CODE_PTR)) 10547 array = value_ind (array); 10548 10549 /* Make sure we really do have an array type before going further, 10550 to avoid a SEGV when trying to get the index type or the target 10551 type later down the road if the debug info generated by 10552 the compiler is incorrect or incomplete. */ 10553 if (!ada_is_simple_array_type (value_type (array))) 10554 error (_("cannot take slice of non-array")); 10555 10556 if (TYPE_CODE (ada_check_typedef (value_type (array))) 10557 == TYPE_CODE_PTR) 10558 { 10559 struct type *type0 = ada_check_typedef (value_type (array)); 10560 10561 if (high_bound < low_bound || noside == EVAL_AVOID_SIDE_EFFECTS) 10562 return empty_array (TYPE_TARGET_TYPE (type0), low_bound); 10563 else 10564 { 10565 struct type *arr_type0 = 10566 to_fixed_array_type (TYPE_TARGET_TYPE (type0), NULL, 1); 10567 10568 return ada_value_slice_from_ptr (array, arr_type0, 10569 longest_to_int (low_bound), 10570 longest_to_int (high_bound)); 10571 } 10572 } 10573 else if (noside == EVAL_AVOID_SIDE_EFFECTS) 10574 return array; 10575 else if (high_bound < low_bound) 10576 return empty_array (value_type (array), low_bound); 10577 else 10578 return ada_value_slice (array, longest_to_int (low_bound), 10579 longest_to_int (high_bound)); 10580 } 10581 10582 case UNOP_IN_RANGE: 10583 (*pos) += 2; 10584 arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside); 10585 type = check_typedef (exp->elts[pc + 1].type); 10586 10587 if (noside == EVAL_SKIP) 10588 goto nosideret; 10589 10590 switch (TYPE_CODE (type)) 10591 { 10592 default: 10593 lim_warning (_("Membership test incompletely implemented; " 10594 "always returns true")); 10595 type = language_bool_type (exp->language_defn, exp->gdbarch); 10596 return value_from_longest (type, (LONGEST) 1); 10597 10598 case TYPE_CODE_RANGE: 10599 arg2 = value_from_longest (type, TYPE_LOW_BOUND (type)); 10600 arg3 = value_from_longest (type, TYPE_HIGH_BOUND (type)); 10601 binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2); 10602 binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg3); 10603 type = language_bool_type (exp->language_defn, exp->gdbarch); 10604 return 10605 value_from_longest (type, 10606 (value_less (arg1, arg3) 10607 || value_equal (arg1, arg3)) 10608 && (value_less (arg2, arg1) 10609 || value_equal (arg2, arg1))); 10610 } 10611 10612 case BINOP_IN_BOUNDS: 10613 (*pos) += 2; 10614 arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside); 10615 arg2 = evaluate_subexp (NULL_TYPE, exp, pos, noside); 10616 10617 if (noside == EVAL_SKIP) 10618 goto nosideret; 10619 10620 if (noside == EVAL_AVOID_SIDE_EFFECTS) 10621 { 10622 type = language_bool_type (exp->language_defn, exp->gdbarch); 10623 return value_zero (type, not_lval); 10624 } 10625 10626 tem = longest_to_int (exp->elts[pc + 1].longconst); 10627 10628 type = ada_index_type (value_type (arg2), tem, "range"); 10629 if (!type) 10630 type = value_type (arg1); 10631 10632 arg3 = value_from_longest (type, ada_array_bound (arg2, tem, 1)); 10633 arg2 = value_from_longest (type, ada_array_bound (arg2, tem, 0)); 10634 10635 binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2); 10636 binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg3); 10637 type = language_bool_type (exp->language_defn, exp->gdbarch); 10638 return 10639 value_from_longest (type, 10640 (value_less (arg1, arg3) 10641 || value_equal (arg1, arg3)) 10642 && (value_less (arg2, arg1) 10643 || value_equal (arg2, arg1))); 10644 10645 case TERNOP_IN_RANGE: 10646 arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside); 10647 arg2 = evaluate_subexp (NULL_TYPE, exp, pos, noside); 10648 arg3 = evaluate_subexp (NULL_TYPE, exp, pos, noside); 10649 10650 if (noside == EVAL_SKIP) 10651 goto nosideret; 10652 10653 binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2); 10654 binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg3); 10655 type = language_bool_type (exp->language_defn, exp->gdbarch); 10656 return 10657 value_from_longest (type, 10658 (value_less (arg1, arg3) 10659 || value_equal (arg1, arg3)) 10660 && (value_less (arg2, arg1) 10661 || value_equal (arg2, arg1))); 10662 10663 case OP_ATR_FIRST: 10664 case OP_ATR_LAST: 10665 case OP_ATR_LENGTH: 10666 { 10667 struct type *type_arg; 10668 10669 if (exp->elts[*pos].opcode == OP_TYPE) 10670 { 10671 evaluate_subexp (NULL_TYPE, exp, pos, EVAL_SKIP); 10672 arg1 = NULL; 10673 type_arg = check_typedef (exp->elts[pc + 2].type); 10674 } 10675 else 10676 { 10677 arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside); 10678 type_arg = NULL; 10679 } 10680 10681 if (exp->elts[*pos].opcode != OP_LONG) 10682 error (_("Invalid operand to '%s"), ada_attribute_name (op)); 10683 tem = longest_to_int (exp->elts[*pos + 2].longconst); 10684 *pos += 4; 10685 10686 if (noside == EVAL_SKIP) 10687 goto nosideret; 10688 10689 if (type_arg == NULL) 10690 { 10691 arg1 = ada_coerce_ref (arg1); 10692 10693 if (ada_is_constrained_packed_array_type (value_type (arg1))) 10694 arg1 = ada_coerce_to_simple_array (arg1); 10695 10696 if (op == OP_ATR_LENGTH) 10697 type = builtin_type (exp->gdbarch)->builtin_int; 10698 else 10699 { 10700 type = ada_index_type (value_type (arg1), tem, 10701 ada_attribute_name (op)); 10702 if (type == NULL) 10703 type = builtin_type (exp->gdbarch)->builtin_int; 10704 } 10705 10706 if (noside == EVAL_AVOID_SIDE_EFFECTS) 10707 return allocate_value (type); 10708 10709 switch (op) 10710 { 10711 default: /* Should never happen. */ 10712 error (_("unexpected attribute encountered")); 10713 case OP_ATR_FIRST: 10714 return value_from_longest 10715 (type, ada_array_bound (arg1, tem, 0)); 10716 case OP_ATR_LAST: 10717 return value_from_longest 10718 (type, ada_array_bound (arg1, tem, 1)); 10719 case OP_ATR_LENGTH: 10720 return value_from_longest 10721 (type, ada_array_length (arg1, tem)); 10722 } 10723 } 10724 else if (discrete_type_p (type_arg)) 10725 { 10726 struct type *range_type; 10727 const char *name = ada_type_name (type_arg); 10728 10729 range_type = NULL; 10730 if (name != NULL && TYPE_CODE (type_arg) != TYPE_CODE_ENUM) 10731 range_type = to_fixed_range_type (type_arg, NULL); 10732 if (range_type == NULL) 10733 range_type = type_arg; 10734 switch (op) 10735 { 10736 default: 10737 error (_("unexpected attribute encountered")); 10738 case OP_ATR_FIRST: 10739 return value_from_longest 10740 (range_type, ada_discrete_type_low_bound (range_type)); 10741 case OP_ATR_LAST: 10742 return value_from_longest 10743 (range_type, ada_discrete_type_high_bound (range_type)); 10744 case OP_ATR_LENGTH: 10745 error (_("the 'length attribute applies only to array types")); 10746 } 10747 } 10748 else if (TYPE_CODE (type_arg) == TYPE_CODE_FLT) 10749 error (_("unimplemented type attribute")); 10750 else 10751 { 10752 LONGEST low, high; 10753 10754 if (ada_is_constrained_packed_array_type (type_arg)) 10755 type_arg = decode_constrained_packed_array_type (type_arg); 10756 10757 if (op == OP_ATR_LENGTH) 10758 type = builtin_type (exp->gdbarch)->builtin_int; 10759 else 10760 { 10761 type = ada_index_type (type_arg, tem, ada_attribute_name (op)); 10762 if (type == NULL) 10763 type = builtin_type (exp->gdbarch)->builtin_int; 10764 } 10765 10766 if (noside == EVAL_AVOID_SIDE_EFFECTS) 10767 return allocate_value (type); 10768 10769 switch (op) 10770 { 10771 default: 10772 error (_("unexpected attribute encountered")); 10773 case OP_ATR_FIRST: 10774 low = ada_array_bound_from_type (type_arg, tem, 0); 10775 return value_from_longest (type, low); 10776 case OP_ATR_LAST: 10777 high = ada_array_bound_from_type (type_arg, tem, 1); 10778 return value_from_longest (type, high); 10779 case OP_ATR_LENGTH: 10780 low = ada_array_bound_from_type (type_arg, tem, 0); 10781 high = ada_array_bound_from_type (type_arg, tem, 1); 10782 return value_from_longest (type, high - low + 1); 10783 } 10784 } 10785 } 10786 10787 case OP_ATR_TAG: 10788 arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside); 10789 if (noside == EVAL_SKIP) 10790 goto nosideret; 10791 10792 if (noside == EVAL_AVOID_SIDE_EFFECTS) 10793 return value_zero (ada_tag_type (arg1), not_lval); 10794 10795 return ada_value_tag (arg1); 10796 10797 case OP_ATR_MIN: 10798 case OP_ATR_MAX: 10799 evaluate_subexp (NULL_TYPE, exp, pos, EVAL_SKIP); 10800 arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside); 10801 arg2 = evaluate_subexp (NULL_TYPE, exp, pos, noside); 10802 if (noside == EVAL_SKIP) 10803 goto nosideret; 10804 else if (noside == EVAL_AVOID_SIDE_EFFECTS) 10805 return value_zero (value_type (arg1), not_lval); 10806 else 10807 { 10808 binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2); 10809 return value_binop (arg1, arg2, 10810 op == OP_ATR_MIN ? BINOP_MIN : BINOP_MAX); 10811 } 10812 10813 case OP_ATR_MODULUS: 10814 { 10815 struct type *type_arg = check_typedef (exp->elts[pc + 2].type); 10816 10817 evaluate_subexp (NULL_TYPE, exp, pos, EVAL_SKIP); 10818 if (noside == EVAL_SKIP) 10819 goto nosideret; 10820 10821 if (!ada_is_modular_type (type_arg)) 10822 error (_("'modulus must be applied to modular type")); 10823 10824 return value_from_longest (TYPE_TARGET_TYPE (type_arg), 10825 ada_modulus (type_arg)); 10826 } 10827 10828 10829 case OP_ATR_POS: 10830 evaluate_subexp (NULL_TYPE, exp, pos, EVAL_SKIP); 10831 arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside); 10832 if (noside == EVAL_SKIP) 10833 goto nosideret; 10834 type = builtin_type (exp->gdbarch)->builtin_int; 10835 if (noside == EVAL_AVOID_SIDE_EFFECTS) 10836 return value_zero (type, not_lval); 10837 else 10838 return value_pos_atr (type, arg1); 10839 10840 case OP_ATR_SIZE: 10841 arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside); 10842 type = value_type (arg1); 10843 10844 /* If the argument is a reference, then dereference its type, since 10845 the user is really asking for the size of the actual object, 10846 not the size of the pointer. */ 10847 if (TYPE_CODE (type) == TYPE_CODE_REF) 10848 type = TYPE_TARGET_TYPE (type); 10849 10850 if (noside == EVAL_SKIP) 10851 goto nosideret; 10852 else if (noside == EVAL_AVOID_SIDE_EFFECTS) 10853 return value_zero (builtin_type (exp->gdbarch)->builtin_int, not_lval); 10854 else 10855 return value_from_longest (builtin_type (exp->gdbarch)->builtin_int, 10856 TARGET_CHAR_BIT * TYPE_LENGTH (type)); 10857 10858 case OP_ATR_VAL: 10859 evaluate_subexp (NULL_TYPE, exp, pos, EVAL_SKIP); 10860 arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside); 10861 type = exp->elts[pc + 2].type; 10862 if (noside == EVAL_SKIP) 10863 goto nosideret; 10864 else if (noside == EVAL_AVOID_SIDE_EFFECTS) 10865 return value_zero (type, not_lval); 10866 else 10867 return value_val_atr (type, arg1); 10868 10869 case BINOP_EXP: 10870 arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside); 10871 arg2 = evaluate_subexp (NULL_TYPE, exp, pos, noside); 10872 if (noside == EVAL_SKIP) 10873 goto nosideret; 10874 else if (noside == EVAL_AVOID_SIDE_EFFECTS) 10875 return value_zero (value_type (arg1), not_lval); 10876 else 10877 { 10878 /* For integer exponentiation operations, 10879 only promote the first argument. */ 10880 if (is_integral_type (value_type (arg2))) 10881 unop_promote (exp->language_defn, exp->gdbarch, &arg1); 10882 else 10883 binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2); 10884 10885 return value_binop (arg1, arg2, op); 10886 } 10887 10888 case UNOP_PLUS: 10889 arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside); 10890 if (noside == EVAL_SKIP) 10891 goto nosideret; 10892 else 10893 return arg1; 10894 10895 case UNOP_ABS: 10896 arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside); 10897 if (noside == EVAL_SKIP) 10898 goto nosideret; 10899 unop_promote (exp->language_defn, exp->gdbarch, &arg1); 10900 if (value_less (arg1, value_zero (value_type (arg1), not_lval))) 10901 return value_neg (arg1); 10902 else 10903 return arg1; 10904 10905 case UNOP_IND: 10906 preeval_pos = *pos; 10907 arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside); 10908 if (noside == EVAL_SKIP) 10909 goto nosideret; 10910 type = ada_check_typedef (value_type (arg1)); 10911 if (noside == EVAL_AVOID_SIDE_EFFECTS) 10912 { 10913 if (ada_is_array_descriptor_type (type)) 10914 /* GDB allows dereferencing GNAT array descriptors. */ 10915 { 10916 struct type *arrType = ada_type_of_array (arg1, 0); 10917 10918 if (arrType == NULL) 10919 error (_("Attempt to dereference null array pointer.")); 10920 return value_at_lazy (arrType, 0); 10921 } 10922 else if (TYPE_CODE (type) == TYPE_CODE_PTR 10923 || TYPE_CODE (type) == TYPE_CODE_REF 10924 /* In C you can dereference an array to get the 1st elt. */ 10925 || TYPE_CODE (type) == TYPE_CODE_ARRAY) 10926 { 10927 /* As mentioned in the OP_VAR_VALUE case, tagged types can 10928 only be determined by inspecting the object's tag. 10929 This means that we need to evaluate completely the 10930 expression in order to get its type. */ 10931 10932 if ((TYPE_CODE (type) == TYPE_CODE_REF 10933 || TYPE_CODE (type) == TYPE_CODE_PTR) 10934 && ada_is_tagged_type (TYPE_TARGET_TYPE (type), 0)) 10935 { 10936 arg1 = evaluate_subexp (NULL_TYPE, exp, &preeval_pos, 10937 EVAL_NORMAL); 10938 type = value_type (ada_value_ind (arg1)); 10939 } 10940 else 10941 { 10942 type = to_static_fixed_type 10943 (ada_aligned_type 10944 (ada_check_typedef (TYPE_TARGET_TYPE (type)))); 10945 } 10946 ada_ensure_varsize_limit (type); 10947 return value_zero (type, lval_memory); 10948 } 10949 else if (TYPE_CODE (type) == TYPE_CODE_INT) 10950 { 10951 /* GDB allows dereferencing an int. */ 10952 if (expect_type == NULL) 10953 return value_zero (builtin_type (exp->gdbarch)->builtin_int, 10954 lval_memory); 10955 else 10956 { 10957 expect_type = 10958 to_static_fixed_type (ada_aligned_type (expect_type)); 10959 return value_zero (expect_type, lval_memory); 10960 } 10961 } 10962 else 10963 error (_("Attempt to take contents of a non-pointer value.")); 10964 } 10965 arg1 = ada_coerce_ref (arg1); /* FIXME: What is this for?? */ 10966 type = ada_check_typedef (value_type (arg1)); 10967 10968 if (TYPE_CODE (type) == TYPE_CODE_INT) 10969 /* GDB allows dereferencing an int. If we were given 10970 the expect_type, then use that as the target type. 10971 Otherwise, assume that the target type is an int. */ 10972 { 10973 if (expect_type != NULL) 10974 return ada_value_ind (value_cast (lookup_pointer_type (expect_type), 10975 arg1)); 10976 else 10977 return value_at_lazy (builtin_type (exp->gdbarch)->builtin_int, 10978 (CORE_ADDR) value_as_address (arg1)); 10979 } 10980 10981 if (ada_is_array_descriptor_type (type)) 10982 /* GDB allows dereferencing GNAT array descriptors. */ 10983 return ada_coerce_to_simple_array (arg1); 10984 else 10985 return ada_value_ind (arg1); 10986 10987 case STRUCTOP_STRUCT: 10988 tem = longest_to_int (exp->elts[pc + 1].longconst); 10989 (*pos) += 3 + BYTES_TO_EXP_ELEM (tem + 1); 10990 preeval_pos = *pos; 10991 arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside); 10992 if (noside == EVAL_SKIP) 10993 goto nosideret; 10994 if (noside == EVAL_AVOID_SIDE_EFFECTS) 10995 { 10996 struct type *type1 = value_type (arg1); 10997 10998 if (ada_is_tagged_type (type1, 1)) 10999 { 11000 type = ada_lookup_struct_elt_type (type1, 11001 &exp->elts[pc + 2].string, 11002 1, 1, NULL); 11003 11004 /* If the field is not found, check if it exists in the 11005 extension of this object's type. This means that we 11006 need to evaluate completely the expression. */ 11007 11008 if (type == NULL) 11009 { 11010 arg1 = evaluate_subexp (NULL_TYPE, exp, &preeval_pos, 11011 EVAL_NORMAL); 11012 arg1 = ada_value_struct_elt (arg1, 11013 &exp->elts[pc + 2].string, 11014 0); 11015 arg1 = unwrap_value (arg1); 11016 type = value_type (ada_to_fixed_value (arg1)); 11017 } 11018 } 11019 else 11020 type = 11021 ada_lookup_struct_elt_type (type1, &exp->elts[pc + 2].string, 1, 11022 0, NULL); 11023 11024 return value_zero (ada_aligned_type (type), lval_memory); 11025 } 11026 else 11027 arg1 = ada_value_struct_elt (arg1, &exp->elts[pc + 2].string, 0); 11028 arg1 = unwrap_value (arg1); 11029 return ada_to_fixed_value (arg1); 11030 11031 case OP_TYPE: 11032 /* The value is not supposed to be used. This is here to make it 11033 easier to accommodate expressions that contain types. */ 11034 (*pos) += 2; 11035 if (noside == EVAL_SKIP) 11036 goto nosideret; 11037 else if (noside == EVAL_AVOID_SIDE_EFFECTS) 11038 return allocate_value (exp->elts[pc + 1].type); 11039 else 11040 error (_("Attempt to use a type name as an expression")); 11041 11042 case OP_AGGREGATE: 11043 case OP_CHOICES: 11044 case OP_OTHERS: 11045 case OP_DISCRETE_RANGE: 11046 case OP_POSITIONAL: 11047 case OP_NAME: 11048 if (noside == EVAL_NORMAL) 11049 switch (op) 11050 { 11051 case OP_NAME: 11052 error (_("Undefined name, ambiguous name, or renaming used in " 11053 "component association: %s."), &exp->elts[pc+2].string); 11054 case OP_AGGREGATE: 11055 error (_("Aggregates only allowed on the right of an assignment")); 11056 default: 11057 internal_error (__FILE__, __LINE__, 11058 _("aggregate apparently mangled")); 11059 } 11060 11061 ada_forward_operator_length (exp, pc, &oplen, &nargs); 11062 *pos += oplen - 1; 11063 for (tem = 0; tem < nargs; tem += 1) 11064 ada_evaluate_subexp (NULL, exp, pos, noside); 11065 goto nosideret; 11066 } 11067 11068 nosideret: 11069 return value_from_longest (builtin_type (exp->gdbarch)->builtin_int, 1); 11070 } 11071 11072 11073 /* Fixed point */ 11074 11075 /* If TYPE encodes an Ada fixed-point type, return the suffix of the 11076 type name that encodes the 'small and 'delta information. 11077 Otherwise, return NULL. */ 11078 11079 static const char * 11080 fixed_type_info (struct type *type) 11081 { 11082 const char *name = ada_type_name (type); 11083 enum type_code code = (type == NULL) ? TYPE_CODE_UNDEF : TYPE_CODE (type); 11084 11085 if ((code == TYPE_CODE_INT || code == TYPE_CODE_RANGE) && name != NULL) 11086 { 11087 const char *tail = strstr (name, "___XF_"); 11088 11089 if (tail == NULL) 11090 return NULL; 11091 else 11092 return tail + 5; 11093 } 11094 else if (code == TYPE_CODE_RANGE && TYPE_TARGET_TYPE (type) != type) 11095 return fixed_type_info (TYPE_TARGET_TYPE (type)); 11096 else 11097 return NULL; 11098 } 11099 11100 /* Returns non-zero iff TYPE represents an Ada fixed-point type. */ 11101 11102 int 11103 ada_is_fixed_point_type (struct type *type) 11104 { 11105 return fixed_type_info (type) != NULL; 11106 } 11107 11108 /* Return non-zero iff TYPE represents a System.Address type. */ 11109 11110 int 11111 ada_is_system_address_type (struct type *type) 11112 { 11113 return (TYPE_NAME (type) 11114 && strcmp (TYPE_NAME (type), "system__address") == 0); 11115 } 11116 11117 /* Assuming that TYPE is the representation of an Ada fixed-point 11118 type, return its delta, or -1 if the type is malformed and the 11119 delta cannot be determined. */ 11120 11121 DOUBLEST 11122 ada_delta (struct type *type) 11123 { 11124 const char *encoding = fixed_type_info (type); 11125 DOUBLEST num, den; 11126 11127 /* Strictly speaking, num and den are encoded as integer. However, 11128 they may not fit into a long, and they will have to be converted 11129 to DOUBLEST anyway. So scan them as DOUBLEST. */ 11130 if (sscanf (encoding, "_%" DOUBLEST_SCAN_FORMAT "_%" DOUBLEST_SCAN_FORMAT, 11131 &num, &den) < 2) 11132 return -1.0; 11133 else 11134 return num / den; 11135 } 11136 11137 /* Assuming that ada_is_fixed_point_type (TYPE), return the scaling 11138 factor ('SMALL value) associated with the type. */ 11139 11140 static DOUBLEST 11141 scaling_factor (struct type *type) 11142 { 11143 const char *encoding = fixed_type_info (type); 11144 DOUBLEST num0, den0, num1, den1; 11145 int n; 11146 11147 /* Strictly speaking, num's and den's are encoded as integer. However, 11148 they may not fit into a long, and they will have to be converted 11149 to DOUBLEST anyway. So scan them as DOUBLEST. */ 11150 n = sscanf (encoding, 11151 "_%" DOUBLEST_SCAN_FORMAT "_%" DOUBLEST_SCAN_FORMAT 11152 "_%" DOUBLEST_SCAN_FORMAT "_%" DOUBLEST_SCAN_FORMAT, 11153 &num0, &den0, &num1, &den1); 11154 11155 if (n < 2) 11156 return 1.0; 11157 else if (n == 4) 11158 return num1 / den1; 11159 else 11160 return num0 / den0; 11161 } 11162 11163 11164 /* Assuming that X is the representation of a value of fixed-point 11165 type TYPE, return its floating-point equivalent. */ 11166 11167 DOUBLEST 11168 ada_fixed_to_float (struct type *type, LONGEST x) 11169 { 11170 return (DOUBLEST) x *scaling_factor (type); 11171 } 11172 11173 /* The representation of a fixed-point value of type TYPE 11174 corresponding to the value X. */ 11175 11176 LONGEST 11177 ada_float_to_fixed (struct type *type, DOUBLEST x) 11178 { 11179 return (LONGEST) (x / scaling_factor (type) + 0.5); 11180 } 11181 11182 11183 11184 /* Range types */ 11185 11186 /* Scan STR beginning at position K for a discriminant name, and 11187 return the value of that discriminant field of DVAL in *PX. If 11188 PNEW_K is not null, put the position of the character beyond the 11189 name scanned in *PNEW_K. Return 1 if successful; return 0 and do 11190 not alter *PX and *PNEW_K if unsuccessful. */ 11191 11192 static int 11193 scan_discrim_bound (char *str, int k, struct value *dval, LONGEST * px, 11194 int *pnew_k) 11195 { 11196 static char *bound_buffer = NULL; 11197 static size_t bound_buffer_len = 0; 11198 char *bound; 11199 char *pend; 11200 struct value *bound_val; 11201 11202 if (dval == NULL || str == NULL || str[k] == '\0') 11203 return 0; 11204 11205 pend = strstr (str + k, "__"); 11206 if (pend == NULL) 11207 { 11208 bound = str + k; 11209 k += strlen (bound); 11210 } 11211 else 11212 { 11213 GROW_VECT (bound_buffer, bound_buffer_len, pend - (str + k) + 1); 11214 bound = bound_buffer; 11215 strncpy (bound_buffer, str + k, pend - (str + k)); 11216 bound[pend - (str + k)] = '\0'; 11217 k = pend - str; 11218 } 11219 11220 bound_val = ada_search_struct_field (bound, dval, 0, value_type (dval)); 11221 if (bound_val == NULL) 11222 return 0; 11223 11224 *px = value_as_long (bound_val); 11225 if (pnew_k != NULL) 11226 *pnew_k = k; 11227 return 1; 11228 } 11229 11230 /* Value of variable named NAME in the current environment. If 11231 no such variable found, then if ERR_MSG is null, returns 0, and 11232 otherwise causes an error with message ERR_MSG. */ 11233 11234 static struct value * 11235 get_var_value (char *name, char *err_msg) 11236 { 11237 struct ada_symbol_info *syms; 11238 int nsyms; 11239 11240 nsyms = ada_lookup_symbol_list (name, get_selected_block (0), VAR_DOMAIN, 11241 &syms); 11242 11243 if (nsyms != 1) 11244 { 11245 if (err_msg == NULL) 11246 return 0; 11247 else 11248 error (("%s"), err_msg); 11249 } 11250 11251 return value_of_variable (syms[0].sym, syms[0].block); 11252 } 11253 11254 /* Value of integer variable named NAME in the current environment. If 11255 no such variable found, returns 0, and sets *FLAG to 0. If 11256 successful, sets *FLAG to 1. */ 11257 11258 LONGEST 11259 get_int_var_value (char *name, int *flag) 11260 { 11261 struct value *var_val = get_var_value (name, 0); 11262 11263 if (var_val == 0) 11264 { 11265 if (flag != NULL) 11266 *flag = 0; 11267 return 0; 11268 } 11269 else 11270 { 11271 if (flag != NULL) 11272 *flag = 1; 11273 return value_as_long (var_val); 11274 } 11275 } 11276 11277 11278 /* Return a range type whose base type is that of the range type named 11279 NAME in the current environment, and whose bounds are calculated 11280 from NAME according to the GNAT range encoding conventions. 11281 Extract discriminant values, if needed, from DVAL. ORIG_TYPE is the 11282 corresponding range type from debug information; fall back to using it 11283 if symbol lookup fails. If a new type must be created, allocate it 11284 like ORIG_TYPE was. The bounds information, in general, is encoded 11285 in NAME, the base type given in the named range type. */ 11286 11287 static struct type * 11288 to_fixed_range_type (struct type *raw_type, struct value *dval) 11289 { 11290 const char *name; 11291 struct type *base_type; 11292 char *subtype_info; 11293 11294 gdb_assert (raw_type != NULL); 11295 gdb_assert (TYPE_NAME (raw_type) != NULL); 11296 11297 if (TYPE_CODE (raw_type) == TYPE_CODE_RANGE) 11298 base_type = TYPE_TARGET_TYPE (raw_type); 11299 else 11300 base_type = raw_type; 11301 11302 name = TYPE_NAME (raw_type); 11303 subtype_info = strstr (name, "___XD"); 11304 if (subtype_info == NULL) 11305 { 11306 LONGEST L = ada_discrete_type_low_bound (raw_type); 11307 LONGEST U = ada_discrete_type_high_bound (raw_type); 11308 11309 if (L < INT_MIN || U > INT_MAX) 11310 return raw_type; 11311 else 11312 return create_static_range_type (alloc_type_copy (raw_type), raw_type, 11313 L, U); 11314 } 11315 else 11316 { 11317 static char *name_buf = NULL; 11318 static size_t name_len = 0; 11319 int prefix_len = subtype_info - name; 11320 LONGEST L, U; 11321 struct type *type; 11322 char *bounds_str; 11323 int n; 11324 11325 GROW_VECT (name_buf, name_len, prefix_len + 5); 11326 strncpy (name_buf, name, prefix_len); 11327 name_buf[prefix_len] = '\0'; 11328 11329 subtype_info += 5; 11330 bounds_str = strchr (subtype_info, '_'); 11331 n = 1; 11332 11333 if (*subtype_info == 'L') 11334 { 11335 if (!ada_scan_number (bounds_str, n, &L, &n) 11336 && !scan_discrim_bound (bounds_str, n, dval, &L, &n)) 11337 return raw_type; 11338 if (bounds_str[n] == '_') 11339 n += 2; 11340 else if (bounds_str[n] == '.') /* FIXME? SGI Workshop kludge. */ 11341 n += 1; 11342 subtype_info += 1; 11343 } 11344 else 11345 { 11346 int ok; 11347 11348 strcpy (name_buf + prefix_len, "___L"); 11349 L = get_int_var_value (name_buf, &ok); 11350 if (!ok) 11351 { 11352 lim_warning (_("Unknown lower bound, using 1.")); 11353 L = 1; 11354 } 11355 } 11356 11357 if (*subtype_info == 'U') 11358 { 11359 if (!ada_scan_number (bounds_str, n, &U, &n) 11360 && !scan_discrim_bound (bounds_str, n, dval, &U, &n)) 11361 return raw_type; 11362 } 11363 else 11364 { 11365 int ok; 11366 11367 strcpy (name_buf + prefix_len, "___U"); 11368 U = get_int_var_value (name_buf, &ok); 11369 if (!ok) 11370 { 11371 lim_warning (_("Unknown upper bound, using %ld."), (long) L); 11372 U = L; 11373 } 11374 } 11375 11376 type = create_static_range_type (alloc_type_copy (raw_type), 11377 base_type, L, U); 11378 TYPE_NAME (type) = name; 11379 return type; 11380 } 11381 } 11382 11383 /* True iff NAME is the name of a range type. */ 11384 11385 int 11386 ada_is_range_type_name (const char *name) 11387 { 11388 return (name != NULL && strstr (name, "___XD")); 11389 } 11390 11391 11392 /* Modular types */ 11393 11394 /* True iff TYPE is an Ada modular type. */ 11395 11396 int 11397 ada_is_modular_type (struct type *type) 11398 { 11399 struct type *subranged_type = get_base_type (type); 11400 11401 return (subranged_type != NULL && TYPE_CODE (type) == TYPE_CODE_RANGE 11402 && TYPE_CODE (subranged_type) == TYPE_CODE_INT 11403 && TYPE_UNSIGNED (subranged_type)); 11404 } 11405 11406 /* Assuming ada_is_modular_type (TYPE), the modulus of TYPE. */ 11407 11408 ULONGEST 11409 ada_modulus (struct type *type) 11410 { 11411 return (ULONGEST) TYPE_HIGH_BOUND (type) + 1; 11412 } 11413 11414 11415 /* Ada exception catchpoint support: 11416 --------------------------------- 11417 11418 We support 3 kinds of exception catchpoints: 11419 . catchpoints on Ada exceptions 11420 . catchpoints on unhandled Ada exceptions 11421 . catchpoints on failed assertions 11422 11423 Exceptions raised during failed assertions, or unhandled exceptions 11424 could perfectly be caught with the general catchpoint on Ada exceptions. 11425 However, we can easily differentiate these two special cases, and having 11426 the option to distinguish these two cases from the rest can be useful 11427 to zero-in on certain situations. 11428 11429 Exception catchpoints are a specialized form of breakpoint, 11430 since they rely on inserting breakpoints inside known routines 11431 of the GNAT runtime. The implementation therefore uses a standard 11432 breakpoint structure of the BP_BREAKPOINT type, but with its own set 11433 of breakpoint_ops. 11434 11435 Support in the runtime for exception catchpoints have been changed 11436 a few times already, and these changes affect the implementation 11437 of these catchpoints. In order to be able to support several 11438 variants of the runtime, we use a sniffer that will determine 11439 the runtime variant used by the program being debugged. */ 11440 11441 /* Ada's standard exceptions. 11442 11443 The Ada 83 standard also defined Numeric_Error. But there so many 11444 situations where it was unclear from the Ada 83 Reference Manual 11445 (RM) whether Constraint_Error or Numeric_Error should be raised, 11446 that the ARG (Ada Rapporteur Group) eventually issued a Binding 11447 Interpretation saying that anytime the RM says that Numeric_Error 11448 should be raised, the implementation may raise Constraint_Error. 11449 Ada 95 went one step further and pretty much removed Numeric_Error 11450 from the list of standard exceptions (it made it a renaming of 11451 Constraint_Error, to help preserve compatibility when compiling 11452 an Ada83 compiler). As such, we do not include Numeric_Error from 11453 this list of standard exceptions. */ 11454 11455 static char *standard_exc[] = { 11456 "constraint_error", 11457 "program_error", 11458 "storage_error", 11459 "tasking_error" 11460 }; 11461 11462 typedef CORE_ADDR (ada_unhandled_exception_name_addr_ftype) (void); 11463 11464 /* A structure that describes how to support exception catchpoints 11465 for a given executable. */ 11466 11467 struct exception_support_info 11468 { 11469 /* The name of the symbol to break on in order to insert 11470 a catchpoint on exceptions. */ 11471 const char *catch_exception_sym; 11472 11473 /* The name of the symbol to break on in order to insert 11474 a catchpoint on unhandled exceptions. */ 11475 const char *catch_exception_unhandled_sym; 11476 11477 /* The name of the symbol to break on in order to insert 11478 a catchpoint on failed assertions. */ 11479 const char *catch_assert_sym; 11480 11481 /* Assuming that the inferior just triggered an unhandled exception 11482 catchpoint, this function is responsible for returning the address 11483 in inferior memory where the name of that exception is stored. 11484 Return zero if the address could not be computed. */ 11485 ada_unhandled_exception_name_addr_ftype *unhandled_exception_name_addr; 11486 }; 11487 11488 static CORE_ADDR ada_unhandled_exception_name_addr (void); 11489 static CORE_ADDR ada_unhandled_exception_name_addr_from_raise (void); 11490 11491 /* The following exception support info structure describes how to 11492 implement exception catchpoints with the latest version of the 11493 Ada runtime (as of 2007-03-06). */ 11494 11495 static const struct exception_support_info default_exception_support_info = 11496 { 11497 "__gnat_debug_raise_exception", /* catch_exception_sym */ 11498 "__gnat_unhandled_exception", /* catch_exception_unhandled_sym */ 11499 "__gnat_debug_raise_assert_failure", /* catch_assert_sym */ 11500 ada_unhandled_exception_name_addr 11501 }; 11502 11503 /* The following exception support info structure describes how to 11504 implement exception catchpoints with a slightly older version 11505 of the Ada runtime. */ 11506 11507 static const struct exception_support_info exception_support_info_fallback = 11508 { 11509 "__gnat_raise_nodefer_with_msg", /* catch_exception_sym */ 11510 "__gnat_unhandled_exception", /* catch_exception_unhandled_sym */ 11511 "system__assertions__raise_assert_failure", /* catch_assert_sym */ 11512 ada_unhandled_exception_name_addr_from_raise 11513 }; 11514 11515 /* Return nonzero if we can detect the exception support routines 11516 described in EINFO. 11517 11518 This function errors out if an abnormal situation is detected 11519 (for instance, if we find the exception support routines, but 11520 that support is found to be incomplete). */ 11521 11522 static int 11523 ada_has_this_exception_support (const struct exception_support_info *einfo) 11524 { 11525 struct symbol *sym; 11526 11527 /* The symbol we're looking up is provided by a unit in the GNAT runtime 11528 that should be compiled with debugging information. As a result, we 11529 expect to find that symbol in the symtabs. */ 11530 11531 sym = standard_lookup (einfo->catch_exception_sym, NULL, VAR_DOMAIN); 11532 if (sym == NULL) 11533 { 11534 /* Perhaps we did not find our symbol because the Ada runtime was 11535 compiled without debugging info, or simply stripped of it. 11536 It happens on some GNU/Linux distributions for instance, where 11537 users have to install a separate debug package in order to get 11538 the runtime's debugging info. In that situation, let the user 11539 know why we cannot insert an Ada exception catchpoint. 11540 11541 Note: Just for the purpose of inserting our Ada exception 11542 catchpoint, we could rely purely on the associated minimal symbol. 11543 But we would be operating in degraded mode anyway, since we are 11544 still lacking the debugging info needed later on to extract 11545 the name of the exception being raised (this name is printed in 11546 the catchpoint message, and is also used when trying to catch 11547 a specific exception). We do not handle this case for now. */ 11548 struct bound_minimal_symbol msym 11549 = lookup_minimal_symbol (einfo->catch_exception_sym, NULL, NULL); 11550 11551 if (msym.minsym && MSYMBOL_TYPE (msym.minsym) != mst_solib_trampoline) 11552 error (_("Your Ada runtime appears to be missing some debugging " 11553 "information.\nCannot insert Ada exception catchpoint " 11554 "in this configuration.")); 11555 11556 return 0; 11557 } 11558 11559 /* Make sure that the symbol we found corresponds to a function. */ 11560 11561 if (SYMBOL_CLASS (sym) != LOC_BLOCK) 11562 error (_("Symbol \"%s\" is not a function (class = %d)"), 11563 SYMBOL_LINKAGE_NAME (sym), SYMBOL_CLASS (sym)); 11564 11565 return 1; 11566 } 11567 11568 /* Inspect the Ada runtime and determine which exception info structure 11569 should be used to provide support for exception catchpoints. 11570 11571 This function will always set the per-inferior exception_info, 11572 or raise an error. */ 11573 11574 static void 11575 ada_exception_support_info_sniffer (void) 11576 { 11577 struct ada_inferior_data *data = get_ada_inferior_data (current_inferior ()); 11578 11579 /* If the exception info is already known, then no need to recompute it. */ 11580 if (data->exception_info != NULL) 11581 return; 11582 11583 /* Check the latest (default) exception support info. */ 11584 if (ada_has_this_exception_support (&default_exception_support_info)) 11585 { 11586 data->exception_info = &default_exception_support_info; 11587 return; 11588 } 11589 11590 /* Try our fallback exception suport info. */ 11591 if (ada_has_this_exception_support (&exception_support_info_fallback)) 11592 { 11593 data->exception_info = &exception_support_info_fallback; 11594 return; 11595 } 11596 11597 /* Sometimes, it is normal for us to not be able to find the routine 11598 we are looking for. This happens when the program is linked with 11599 the shared version of the GNAT runtime, and the program has not been 11600 started yet. Inform the user of these two possible causes if 11601 applicable. */ 11602 11603 if (ada_update_initial_language (language_unknown) != language_ada) 11604 error (_("Unable to insert catchpoint. Is this an Ada main program?")); 11605 11606 /* If the symbol does not exist, then check that the program is 11607 already started, to make sure that shared libraries have been 11608 loaded. If it is not started, this may mean that the symbol is 11609 in a shared library. */ 11610 11611 if (ptid_get_pid (inferior_ptid) == 0) 11612 error (_("Unable to insert catchpoint. Try to start the program first.")); 11613 11614 /* At this point, we know that we are debugging an Ada program and 11615 that the inferior has been started, but we still are not able to 11616 find the run-time symbols. That can mean that we are in 11617 configurable run time mode, or that a-except as been optimized 11618 out by the linker... In any case, at this point it is not worth 11619 supporting this feature. */ 11620 11621 error (_("Cannot insert Ada exception catchpoints in this configuration.")); 11622 } 11623 11624 /* True iff FRAME is very likely to be that of a function that is 11625 part of the runtime system. This is all very heuristic, but is 11626 intended to be used as advice as to what frames are uninteresting 11627 to most users. */ 11628 11629 static int 11630 is_known_support_routine (struct frame_info *frame) 11631 { 11632 struct symtab_and_line sal; 11633 char *func_name; 11634 enum language func_lang; 11635 int i; 11636 const char *fullname; 11637 11638 /* If this code does not have any debugging information (no symtab), 11639 This cannot be any user code. */ 11640 11641 find_frame_sal (frame, &sal); 11642 if (sal.symtab == NULL) 11643 return 1; 11644 11645 /* If there is a symtab, but the associated source file cannot be 11646 located, then assume this is not user code: Selecting a frame 11647 for which we cannot display the code would not be very helpful 11648 for the user. This should also take care of case such as VxWorks 11649 where the kernel has some debugging info provided for a few units. */ 11650 11651 fullname = symtab_to_fullname (sal.symtab); 11652 if (access (fullname, R_OK) != 0) 11653 return 1; 11654 11655 /* Check the unit filename againt the Ada runtime file naming. 11656 We also check the name of the objfile against the name of some 11657 known system libraries that sometimes come with debugging info 11658 too. */ 11659 11660 for (i = 0; known_runtime_file_name_patterns[i] != NULL; i += 1) 11661 { 11662 re_comp (known_runtime_file_name_patterns[i]); 11663 if (re_exec (lbasename (sal.symtab->filename))) 11664 return 1; 11665 if (SYMTAB_OBJFILE (sal.symtab) != NULL 11666 && re_exec (objfile_name (SYMTAB_OBJFILE (sal.symtab)))) 11667 return 1; 11668 } 11669 11670 /* Check whether the function is a GNAT-generated entity. */ 11671 11672 find_frame_funname (frame, &func_name, &func_lang, NULL); 11673 if (func_name == NULL) 11674 return 1; 11675 11676 for (i = 0; known_auxiliary_function_name_patterns[i] != NULL; i += 1) 11677 { 11678 re_comp (known_auxiliary_function_name_patterns[i]); 11679 if (re_exec (func_name)) 11680 { 11681 xfree (func_name); 11682 return 1; 11683 } 11684 } 11685 11686 xfree (func_name); 11687 return 0; 11688 } 11689 11690 /* Find the first frame that contains debugging information and that is not 11691 part of the Ada run-time, starting from FI and moving upward. */ 11692 11693 void 11694 ada_find_printable_frame (struct frame_info *fi) 11695 { 11696 for (; fi != NULL; fi = get_prev_frame (fi)) 11697 { 11698 if (!is_known_support_routine (fi)) 11699 { 11700 select_frame (fi); 11701 break; 11702 } 11703 } 11704 11705 } 11706 11707 /* Assuming that the inferior just triggered an unhandled exception 11708 catchpoint, return the address in inferior memory where the name 11709 of the exception is stored. 11710 11711 Return zero if the address could not be computed. */ 11712 11713 static CORE_ADDR 11714 ada_unhandled_exception_name_addr (void) 11715 { 11716 return parse_and_eval_address ("e.full_name"); 11717 } 11718 11719 /* Same as ada_unhandled_exception_name_addr, except that this function 11720 should be used when the inferior uses an older version of the runtime, 11721 where the exception name needs to be extracted from a specific frame 11722 several frames up in the callstack. */ 11723 11724 static CORE_ADDR 11725 ada_unhandled_exception_name_addr_from_raise (void) 11726 { 11727 int frame_level; 11728 struct frame_info *fi; 11729 struct ada_inferior_data *data = get_ada_inferior_data (current_inferior ()); 11730 struct cleanup *old_chain; 11731 11732 /* To determine the name of this exception, we need to select 11733 the frame corresponding to RAISE_SYM_NAME. This frame is 11734 at least 3 levels up, so we simply skip the first 3 frames 11735 without checking the name of their associated function. */ 11736 fi = get_current_frame (); 11737 for (frame_level = 0; frame_level < 3; frame_level += 1) 11738 if (fi != NULL) 11739 fi = get_prev_frame (fi); 11740 11741 old_chain = make_cleanup (null_cleanup, NULL); 11742 while (fi != NULL) 11743 { 11744 char *func_name; 11745 enum language func_lang; 11746 11747 find_frame_funname (fi, &func_name, &func_lang, NULL); 11748 if (func_name != NULL) 11749 { 11750 make_cleanup (xfree, func_name); 11751 11752 if (strcmp (func_name, 11753 data->exception_info->catch_exception_sym) == 0) 11754 break; /* We found the frame we were looking for... */ 11755 fi = get_prev_frame (fi); 11756 } 11757 } 11758 do_cleanups (old_chain); 11759 11760 if (fi == NULL) 11761 return 0; 11762 11763 select_frame (fi); 11764 return parse_and_eval_address ("id.full_name"); 11765 } 11766 11767 /* Assuming the inferior just triggered an Ada exception catchpoint 11768 (of any type), return the address in inferior memory where the name 11769 of the exception is stored, if applicable. 11770 11771 Return zero if the address could not be computed, or if not relevant. */ 11772 11773 static CORE_ADDR 11774 ada_exception_name_addr_1 (enum ada_exception_catchpoint_kind ex, 11775 struct breakpoint *b) 11776 { 11777 struct ada_inferior_data *data = get_ada_inferior_data (current_inferior ()); 11778 11779 switch (ex) 11780 { 11781 case ada_catch_exception: 11782 return (parse_and_eval_address ("e.full_name")); 11783 break; 11784 11785 case ada_catch_exception_unhandled: 11786 return data->exception_info->unhandled_exception_name_addr (); 11787 break; 11788 11789 case ada_catch_assert: 11790 return 0; /* Exception name is not relevant in this case. */ 11791 break; 11792 11793 default: 11794 internal_error (__FILE__, __LINE__, _("unexpected catchpoint type")); 11795 break; 11796 } 11797 11798 return 0; /* Should never be reached. */ 11799 } 11800 11801 /* Same as ada_exception_name_addr_1, except that it intercepts and contains 11802 any error that ada_exception_name_addr_1 might cause to be thrown. 11803 When an error is intercepted, a warning with the error message is printed, 11804 and zero is returned. */ 11805 11806 static CORE_ADDR 11807 ada_exception_name_addr (enum ada_exception_catchpoint_kind ex, 11808 struct breakpoint *b) 11809 { 11810 volatile struct gdb_exception e; 11811 CORE_ADDR result = 0; 11812 11813 TRY_CATCH (e, RETURN_MASK_ERROR) 11814 { 11815 result = ada_exception_name_addr_1 (ex, b); 11816 } 11817 11818 if (e.reason < 0) 11819 { 11820 warning (_("failed to get exception name: %s"), e.message); 11821 return 0; 11822 } 11823 11824 return result; 11825 } 11826 11827 static char *ada_exception_catchpoint_cond_string (const char *excep_string); 11828 11829 /* Ada catchpoints. 11830 11831 In the case of catchpoints on Ada exceptions, the catchpoint will 11832 stop the target on every exception the program throws. When a user 11833 specifies the name of a specific exception, we translate this 11834 request into a condition expression (in text form), and then parse 11835 it into an expression stored in each of the catchpoint's locations. 11836 We then use this condition to check whether the exception that was 11837 raised is the one the user is interested in. If not, then the 11838 target is resumed again. We store the name of the requested 11839 exception, in order to be able to re-set the condition expression 11840 when symbols change. */ 11841 11842 /* An instance of this type is used to represent an Ada catchpoint 11843 breakpoint location. It includes a "struct bp_location" as a kind 11844 of base class; users downcast to "struct bp_location *" when 11845 needed. */ 11846 11847 struct ada_catchpoint_location 11848 { 11849 /* The base class. */ 11850 struct bp_location base; 11851 11852 /* The condition that checks whether the exception that was raised 11853 is the specific exception the user specified on catchpoint 11854 creation. */ 11855 struct expression *excep_cond_expr; 11856 }; 11857 11858 /* Implement the DTOR method in the bp_location_ops structure for all 11859 Ada exception catchpoint kinds. */ 11860 11861 static void 11862 ada_catchpoint_location_dtor (struct bp_location *bl) 11863 { 11864 struct ada_catchpoint_location *al = (struct ada_catchpoint_location *) bl; 11865 11866 xfree (al->excep_cond_expr); 11867 } 11868 11869 /* The vtable to be used in Ada catchpoint locations. */ 11870 11871 static const struct bp_location_ops ada_catchpoint_location_ops = 11872 { 11873 ada_catchpoint_location_dtor 11874 }; 11875 11876 /* An instance of this type is used to represent an Ada catchpoint. 11877 It includes a "struct breakpoint" as a kind of base class; users 11878 downcast to "struct breakpoint *" when needed. */ 11879 11880 struct ada_catchpoint 11881 { 11882 /* The base class. */ 11883 struct breakpoint base; 11884 11885 /* The name of the specific exception the user specified. */ 11886 char *excep_string; 11887 }; 11888 11889 /* Parse the exception condition string in the context of each of the 11890 catchpoint's locations, and store them for later evaluation. */ 11891 11892 static void 11893 create_excep_cond_exprs (struct ada_catchpoint *c) 11894 { 11895 struct cleanup *old_chain; 11896 struct bp_location *bl; 11897 char *cond_string; 11898 11899 /* Nothing to do if there's no specific exception to catch. */ 11900 if (c->excep_string == NULL) 11901 return; 11902 11903 /* Same if there are no locations... */ 11904 if (c->base.loc == NULL) 11905 return; 11906 11907 /* Compute the condition expression in text form, from the specific 11908 expection we want to catch. */ 11909 cond_string = ada_exception_catchpoint_cond_string (c->excep_string); 11910 old_chain = make_cleanup (xfree, cond_string); 11911 11912 /* Iterate over all the catchpoint's locations, and parse an 11913 expression for each. */ 11914 for (bl = c->base.loc; bl != NULL; bl = bl->next) 11915 { 11916 struct ada_catchpoint_location *ada_loc 11917 = (struct ada_catchpoint_location *) bl; 11918 struct expression *exp = NULL; 11919 11920 if (!bl->shlib_disabled) 11921 { 11922 volatile struct gdb_exception e; 11923 const char *s; 11924 11925 s = cond_string; 11926 TRY_CATCH (e, RETURN_MASK_ERROR) 11927 { 11928 exp = parse_exp_1 (&s, bl->address, 11929 block_for_pc (bl->address), 0); 11930 } 11931 if (e.reason < 0) 11932 { 11933 warning (_("failed to reevaluate internal exception condition " 11934 "for catchpoint %d: %s"), 11935 c->base.number, e.message); 11936 /* There is a bug in GCC on sparc-solaris when building with 11937 optimization which causes EXP to change unexpectedly 11938 (http://gcc.gnu.org/bugzilla/show_bug.cgi?id=56982). 11939 The problem should be fixed starting with GCC 4.9. 11940 In the meantime, work around it by forcing EXP back 11941 to NULL. */ 11942 exp = NULL; 11943 } 11944 } 11945 11946 ada_loc->excep_cond_expr = exp; 11947 } 11948 11949 do_cleanups (old_chain); 11950 } 11951 11952 /* Implement the DTOR method in the breakpoint_ops structure for all 11953 exception catchpoint kinds. */ 11954 11955 static void 11956 dtor_exception (enum ada_exception_catchpoint_kind ex, struct breakpoint *b) 11957 { 11958 struct ada_catchpoint *c = (struct ada_catchpoint *) b; 11959 11960 xfree (c->excep_string); 11961 11962 bkpt_breakpoint_ops.dtor (b); 11963 } 11964 11965 /* Implement the ALLOCATE_LOCATION method in the breakpoint_ops 11966 structure for all exception catchpoint kinds. */ 11967 11968 static struct bp_location * 11969 allocate_location_exception (enum ada_exception_catchpoint_kind ex, 11970 struct breakpoint *self) 11971 { 11972 struct ada_catchpoint_location *loc; 11973 11974 loc = XNEW (struct ada_catchpoint_location); 11975 init_bp_location (&loc->base, &ada_catchpoint_location_ops, self); 11976 loc->excep_cond_expr = NULL; 11977 return &loc->base; 11978 } 11979 11980 /* Implement the RE_SET method in the breakpoint_ops structure for all 11981 exception catchpoint kinds. */ 11982 11983 static void 11984 re_set_exception (enum ada_exception_catchpoint_kind ex, struct breakpoint *b) 11985 { 11986 struct ada_catchpoint *c = (struct ada_catchpoint *) b; 11987 11988 /* Call the base class's method. This updates the catchpoint's 11989 locations. */ 11990 bkpt_breakpoint_ops.re_set (b); 11991 11992 /* Reparse the exception conditional expressions. One for each 11993 location. */ 11994 create_excep_cond_exprs (c); 11995 } 11996 11997 /* Returns true if we should stop for this breakpoint hit. If the 11998 user specified a specific exception, we only want to cause a stop 11999 if the program thrown that exception. */ 12000 12001 static int 12002 should_stop_exception (const struct bp_location *bl) 12003 { 12004 struct ada_catchpoint *c = (struct ada_catchpoint *) bl->owner; 12005 const struct ada_catchpoint_location *ada_loc 12006 = (const struct ada_catchpoint_location *) bl; 12007 volatile struct gdb_exception ex; 12008 int stop; 12009 12010 /* With no specific exception, should always stop. */ 12011 if (c->excep_string == NULL) 12012 return 1; 12013 12014 if (ada_loc->excep_cond_expr == NULL) 12015 { 12016 /* We will have a NULL expression if back when we were creating 12017 the expressions, this location's had failed to parse. */ 12018 return 1; 12019 } 12020 12021 stop = 1; 12022 TRY_CATCH (ex, RETURN_MASK_ALL) 12023 { 12024 struct value *mark; 12025 12026 mark = value_mark (); 12027 stop = value_true (evaluate_expression (ada_loc->excep_cond_expr)); 12028 value_free_to_mark (mark); 12029 } 12030 if (ex.reason < 0) 12031 exception_fprintf (gdb_stderr, ex, 12032 _("Error in testing exception condition:\n")); 12033 return stop; 12034 } 12035 12036 /* Implement the CHECK_STATUS method in the breakpoint_ops structure 12037 for all exception catchpoint kinds. */ 12038 12039 static void 12040 check_status_exception (enum ada_exception_catchpoint_kind ex, bpstat bs) 12041 { 12042 bs->stop = should_stop_exception (bs->bp_location_at); 12043 } 12044 12045 /* Implement the PRINT_IT method in the breakpoint_ops structure 12046 for all exception catchpoint kinds. */ 12047 12048 static enum print_stop_action 12049 print_it_exception (enum ada_exception_catchpoint_kind ex, bpstat bs) 12050 { 12051 struct ui_out *uiout = current_uiout; 12052 struct breakpoint *b = bs->breakpoint_at; 12053 12054 annotate_catchpoint (b->number); 12055 12056 if (ui_out_is_mi_like_p (uiout)) 12057 { 12058 ui_out_field_string (uiout, "reason", 12059 async_reason_lookup (EXEC_ASYNC_BREAKPOINT_HIT)); 12060 ui_out_field_string (uiout, "disp", bpdisp_text (b->disposition)); 12061 } 12062 12063 ui_out_text (uiout, 12064 b->disposition == disp_del ? "\nTemporary catchpoint " 12065 : "\nCatchpoint "); 12066 ui_out_field_int (uiout, "bkptno", b->number); 12067 ui_out_text (uiout, ", "); 12068 12069 switch (ex) 12070 { 12071 case ada_catch_exception: 12072 case ada_catch_exception_unhandled: 12073 { 12074 const CORE_ADDR addr = ada_exception_name_addr (ex, b); 12075 char exception_name[256]; 12076 12077 if (addr != 0) 12078 { 12079 read_memory (addr, (gdb_byte *) exception_name, 12080 sizeof (exception_name) - 1); 12081 exception_name [sizeof (exception_name) - 1] = '\0'; 12082 } 12083 else 12084 { 12085 /* For some reason, we were unable to read the exception 12086 name. This could happen if the Runtime was compiled 12087 without debugging info, for instance. In that case, 12088 just replace the exception name by the generic string 12089 "exception" - it will read as "an exception" in the 12090 notification we are about to print. */ 12091 memcpy (exception_name, "exception", sizeof ("exception")); 12092 } 12093 /* In the case of unhandled exception breakpoints, we print 12094 the exception name as "unhandled EXCEPTION_NAME", to make 12095 it clearer to the user which kind of catchpoint just got 12096 hit. We used ui_out_text to make sure that this extra 12097 info does not pollute the exception name in the MI case. */ 12098 if (ex == ada_catch_exception_unhandled) 12099 ui_out_text (uiout, "unhandled "); 12100 ui_out_field_string (uiout, "exception-name", exception_name); 12101 } 12102 break; 12103 case ada_catch_assert: 12104 /* In this case, the name of the exception is not really 12105 important. Just print "failed assertion" to make it clearer 12106 that his program just hit an assertion-failure catchpoint. 12107 We used ui_out_text because this info does not belong in 12108 the MI output. */ 12109 ui_out_text (uiout, "failed assertion"); 12110 break; 12111 } 12112 ui_out_text (uiout, " at "); 12113 ada_find_printable_frame (get_current_frame ()); 12114 12115 return PRINT_SRC_AND_LOC; 12116 } 12117 12118 /* Implement the PRINT_ONE method in the breakpoint_ops structure 12119 for all exception catchpoint kinds. */ 12120 12121 static void 12122 print_one_exception (enum ada_exception_catchpoint_kind ex, 12123 struct breakpoint *b, struct bp_location **last_loc) 12124 { 12125 struct ui_out *uiout = current_uiout; 12126 struct ada_catchpoint *c = (struct ada_catchpoint *) b; 12127 struct value_print_options opts; 12128 12129 get_user_print_options (&opts); 12130 if (opts.addressprint) 12131 { 12132 annotate_field (4); 12133 ui_out_field_core_addr (uiout, "addr", b->loc->gdbarch, b->loc->address); 12134 } 12135 12136 annotate_field (5); 12137 *last_loc = b->loc; 12138 switch (ex) 12139 { 12140 case ada_catch_exception: 12141 if (c->excep_string != NULL) 12142 { 12143 char *msg = xstrprintf (_("`%s' Ada exception"), c->excep_string); 12144 12145 ui_out_field_string (uiout, "what", msg); 12146 xfree (msg); 12147 } 12148 else 12149 ui_out_field_string (uiout, "what", "all Ada exceptions"); 12150 12151 break; 12152 12153 case ada_catch_exception_unhandled: 12154 ui_out_field_string (uiout, "what", "unhandled Ada exceptions"); 12155 break; 12156 12157 case ada_catch_assert: 12158 ui_out_field_string (uiout, "what", "failed Ada assertions"); 12159 break; 12160 12161 default: 12162 internal_error (__FILE__, __LINE__, _("unexpected catchpoint type")); 12163 break; 12164 } 12165 } 12166 12167 /* Implement the PRINT_MENTION method in the breakpoint_ops structure 12168 for all exception catchpoint kinds. */ 12169 12170 static void 12171 print_mention_exception (enum ada_exception_catchpoint_kind ex, 12172 struct breakpoint *b) 12173 { 12174 struct ada_catchpoint *c = (struct ada_catchpoint *) b; 12175 struct ui_out *uiout = current_uiout; 12176 12177 ui_out_text (uiout, b->disposition == disp_del ? _("Temporary catchpoint ") 12178 : _("Catchpoint ")); 12179 ui_out_field_int (uiout, "bkptno", b->number); 12180 ui_out_text (uiout, ": "); 12181 12182 switch (ex) 12183 { 12184 case ada_catch_exception: 12185 if (c->excep_string != NULL) 12186 { 12187 char *info = xstrprintf (_("`%s' Ada exception"), c->excep_string); 12188 struct cleanup *old_chain = make_cleanup (xfree, info); 12189 12190 ui_out_text (uiout, info); 12191 do_cleanups (old_chain); 12192 } 12193 else 12194 ui_out_text (uiout, _("all Ada exceptions")); 12195 break; 12196 12197 case ada_catch_exception_unhandled: 12198 ui_out_text (uiout, _("unhandled Ada exceptions")); 12199 break; 12200 12201 case ada_catch_assert: 12202 ui_out_text (uiout, _("failed Ada assertions")); 12203 break; 12204 12205 default: 12206 internal_error (__FILE__, __LINE__, _("unexpected catchpoint type")); 12207 break; 12208 } 12209 } 12210 12211 /* Implement the PRINT_RECREATE method in the breakpoint_ops structure 12212 for all exception catchpoint kinds. */ 12213 12214 static void 12215 print_recreate_exception (enum ada_exception_catchpoint_kind ex, 12216 struct breakpoint *b, struct ui_file *fp) 12217 { 12218 struct ada_catchpoint *c = (struct ada_catchpoint *) b; 12219 12220 switch (ex) 12221 { 12222 case ada_catch_exception: 12223 fprintf_filtered (fp, "catch exception"); 12224 if (c->excep_string != NULL) 12225 fprintf_filtered (fp, " %s", c->excep_string); 12226 break; 12227 12228 case ada_catch_exception_unhandled: 12229 fprintf_filtered (fp, "catch exception unhandled"); 12230 break; 12231 12232 case ada_catch_assert: 12233 fprintf_filtered (fp, "catch assert"); 12234 break; 12235 12236 default: 12237 internal_error (__FILE__, __LINE__, _("unexpected catchpoint type")); 12238 } 12239 print_recreate_thread (b, fp); 12240 } 12241 12242 /* Virtual table for "catch exception" breakpoints. */ 12243 12244 static void 12245 dtor_catch_exception (struct breakpoint *b) 12246 { 12247 dtor_exception (ada_catch_exception, b); 12248 } 12249 12250 static struct bp_location * 12251 allocate_location_catch_exception (struct breakpoint *self) 12252 { 12253 return allocate_location_exception (ada_catch_exception, self); 12254 } 12255 12256 static void 12257 re_set_catch_exception (struct breakpoint *b) 12258 { 12259 re_set_exception (ada_catch_exception, b); 12260 } 12261 12262 static void 12263 check_status_catch_exception (bpstat bs) 12264 { 12265 check_status_exception (ada_catch_exception, bs); 12266 } 12267 12268 static enum print_stop_action 12269 print_it_catch_exception (bpstat bs) 12270 { 12271 return print_it_exception (ada_catch_exception, bs); 12272 } 12273 12274 static void 12275 print_one_catch_exception (struct breakpoint *b, struct bp_location **last_loc) 12276 { 12277 print_one_exception (ada_catch_exception, b, last_loc); 12278 } 12279 12280 static void 12281 print_mention_catch_exception (struct breakpoint *b) 12282 { 12283 print_mention_exception (ada_catch_exception, b); 12284 } 12285 12286 static void 12287 print_recreate_catch_exception (struct breakpoint *b, struct ui_file *fp) 12288 { 12289 print_recreate_exception (ada_catch_exception, b, fp); 12290 } 12291 12292 static struct breakpoint_ops catch_exception_breakpoint_ops; 12293 12294 /* Virtual table for "catch exception unhandled" breakpoints. */ 12295 12296 static void 12297 dtor_catch_exception_unhandled (struct breakpoint *b) 12298 { 12299 dtor_exception (ada_catch_exception_unhandled, b); 12300 } 12301 12302 static struct bp_location * 12303 allocate_location_catch_exception_unhandled (struct breakpoint *self) 12304 { 12305 return allocate_location_exception (ada_catch_exception_unhandled, self); 12306 } 12307 12308 static void 12309 re_set_catch_exception_unhandled (struct breakpoint *b) 12310 { 12311 re_set_exception (ada_catch_exception_unhandled, b); 12312 } 12313 12314 static void 12315 check_status_catch_exception_unhandled (bpstat bs) 12316 { 12317 check_status_exception (ada_catch_exception_unhandled, bs); 12318 } 12319 12320 static enum print_stop_action 12321 print_it_catch_exception_unhandled (bpstat bs) 12322 { 12323 return print_it_exception (ada_catch_exception_unhandled, bs); 12324 } 12325 12326 static void 12327 print_one_catch_exception_unhandled (struct breakpoint *b, 12328 struct bp_location **last_loc) 12329 { 12330 print_one_exception (ada_catch_exception_unhandled, b, last_loc); 12331 } 12332 12333 static void 12334 print_mention_catch_exception_unhandled (struct breakpoint *b) 12335 { 12336 print_mention_exception (ada_catch_exception_unhandled, b); 12337 } 12338 12339 static void 12340 print_recreate_catch_exception_unhandled (struct breakpoint *b, 12341 struct ui_file *fp) 12342 { 12343 print_recreate_exception (ada_catch_exception_unhandled, b, fp); 12344 } 12345 12346 static struct breakpoint_ops catch_exception_unhandled_breakpoint_ops; 12347 12348 /* Virtual table for "catch assert" breakpoints. */ 12349 12350 static void 12351 dtor_catch_assert (struct breakpoint *b) 12352 { 12353 dtor_exception (ada_catch_assert, b); 12354 } 12355 12356 static struct bp_location * 12357 allocate_location_catch_assert (struct breakpoint *self) 12358 { 12359 return allocate_location_exception (ada_catch_assert, self); 12360 } 12361 12362 static void 12363 re_set_catch_assert (struct breakpoint *b) 12364 { 12365 re_set_exception (ada_catch_assert, b); 12366 } 12367 12368 static void 12369 check_status_catch_assert (bpstat bs) 12370 { 12371 check_status_exception (ada_catch_assert, bs); 12372 } 12373 12374 static enum print_stop_action 12375 print_it_catch_assert (bpstat bs) 12376 { 12377 return print_it_exception (ada_catch_assert, bs); 12378 } 12379 12380 static void 12381 print_one_catch_assert (struct breakpoint *b, struct bp_location **last_loc) 12382 { 12383 print_one_exception (ada_catch_assert, b, last_loc); 12384 } 12385 12386 static void 12387 print_mention_catch_assert (struct breakpoint *b) 12388 { 12389 print_mention_exception (ada_catch_assert, b); 12390 } 12391 12392 static void 12393 print_recreate_catch_assert (struct breakpoint *b, struct ui_file *fp) 12394 { 12395 print_recreate_exception (ada_catch_assert, b, fp); 12396 } 12397 12398 static struct breakpoint_ops catch_assert_breakpoint_ops; 12399 12400 /* Return a newly allocated copy of the first space-separated token 12401 in ARGSP, and then adjust ARGSP to point immediately after that 12402 token. 12403 12404 Return NULL if ARGPS does not contain any more tokens. */ 12405 12406 static char * 12407 ada_get_next_arg (char **argsp) 12408 { 12409 char *args = *argsp; 12410 char *end; 12411 char *result; 12412 12413 args = skip_spaces (args); 12414 if (args[0] == '\0') 12415 return NULL; /* No more arguments. */ 12416 12417 /* Find the end of the current argument. */ 12418 12419 end = skip_to_space (args); 12420 12421 /* Adjust ARGSP to point to the start of the next argument. */ 12422 12423 *argsp = end; 12424 12425 /* Make a copy of the current argument and return it. */ 12426 12427 result = xmalloc (end - args + 1); 12428 strncpy (result, args, end - args); 12429 result[end - args] = '\0'; 12430 12431 return result; 12432 } 12433 12434 /* Split the arguments specified in a "catch exception" command. 12435 Set EX to the appropriate catchpoint type. 12436 Set EXCEP_STRING to the name of the specific exception if 12437 specified by the user. 12438 If a condition is found at the end of the arguments, the condition 12439 expression is stored in COND_STRING (memory must be deallocated 12440 after use). Otherwise COND_STRING is set to NULL. */ 12441 12442 static void 12443 catch_ada_exception_command_split (char *args, 12444 enum ada_exception_catchpoint_kind *ex, 12445 char **excep_string, 12446 char **cond_string) 12447 { 12448 struct cleanup *old_chain = make_cleanup (null_cleanup, NULL); 12449 char *exception_name; 12450 char *cond = NULL; 12451 12452 exception_name = ada_get_next_arg (&args); 12453 if (exception_name != NULL && strcmp (exception_name, "if") == 0) 12454 { 12455 /* This is not an exception name; this is the start of a condition 12456 expression for a catchpoint on all exceptions. So, "un-get" 12457 this token, and set exception_name to NULL. */ 12458 xfree (exception_name); 12459 exception_name = NULL; 12460 args -= 2; 12461 } 12462 make_cleanup (xfree, exception_name); 12463 12464 /* Check to see if we have a condition. */ 12465 12466 args = skip_spaces (args); 12467 if (strncmp (args, "if", 2) == 0 12468 && (isspace (args[2]) || args[2] == '\0')) 12469 { 12470 args += 2; 12471 args = skip_spaces (args); 12472 12473 if (args[0] == '\0') 12474 error (_("Condition missing after `if' keyword")); 12475 cond = xstrdup (args); 12476 make_cleanup (xfree, cond); 12477 12478 args += strlen (args); 12479 } 12480 12481 /* Check that we do not have any more arguments. Anything else 12482 is unexpected. */ 12483 12484 if (args[0] != '\0') 12485 error (_("Junk at end of expression")); 12486 12487 discard_cleanups (old_chain); 12488 12489 if (exception_name == NULL) 12490 { 12491 /* Catch all exceptions. */ 12492 *ex = ada_catch_exception; 12493 *excep_string = NULL; 12494 } 12495 else if (strcmp (exception_name, "unhandled") == 0) 12496 { 12497 /* Catch unhandled exceptions. */ 12498 *ex = ada_catch_exception_unhandled; 12499 *excep_string = NULL; 12500 } 12501 else 12502 { 12503 /* Catch a specific exception. */ 12504 *ex = ada_catch_exception; 12505 *excep_string = exception_name; 12506 } 12507 *cond_string = cond; 12508 } 12509 12510 /* Return the name of the symbol on which we should break in order to 12511 implement a catchpoint of the EX kind. */ 12512 12513 static const char * 12514 ada_exception_sym_name (enum ada_exception_catchpoint_kind ex) 12515 { 12516 struct ada_inferior_data *data = get_ada_inferior_data (current_inferior ()); 12517 12518 gdb_assert (data->exception_info != NULL); 12519 12520 switch (ex) 12521 { 12522 case ada_catch_exception: 12523 return (data->exception_info->catch_exception_sym); 12524 break; 12525 case ada_catch_exception_unhandled: 12526 return (data->exception_info->catch_exception_unhandled_sym); 12527 break; 12528 case ada_catch_assert: 12529 return (data->exception_info->catch_assert_sym); 12530 break; 12531 default: 12532 internal_error (__FILE__, __LINE__, 12533 _("unexpected catchpoint kind (%d)"), ex); 12534 } 12535 } 12536 12537 /* Return the breakpoint ops "virtual table" used for catchpoints 12538 of the EX kind. */ 12539 12540 static const struct breakpoint_ops * 12541 ada_exception_breakpoint_ops (enum ada_exception_catchpoint_kind ex) 12542 { 12543 switch (ex) 12544 { 12545 case ada_catch_exception: 12546 return (&catch_exception_breakpoint_ops); 12547 break; 12548 case ada_catch_exception_unhandled: 12549 return (&catch_exception_unhandled_breakpoint_ops); 12550 break; 12551 case ada_catch_assert: 12552 return (&catch_assert_breakpoint_ops); 12553 break; 12554 default: 12555 internal_error (__FILE__, __LINE__, 12556 _("unexpected catchpoint kind (%d)"), ex); 12557 } 12558 } 12559 12560 /* Return the condition that will be used to match the current exception 12561 being raised with the exception that the user wants to catch. This 12562 assumes that this condition is used when the inferior just triggered 12563 an exception catchpoint. 12564 12565 The string returned is a newly allocated string that needs to be 12566 deallocated later. */ 12567 12568 static char * 12569 ada_exception_catchpoint_cond_string (const char *excep_string) 12570 { 12571 int i; 12572 12573 /* The standard exceptions are a special case. They are defined in 12574 runtime units that have been compiled without debugging info; if 12575 EXCEP_STRING is the not-fully-qualified name of a standard 12576 exception (e.g. "constraint_error") then, during the evaluation 12577 of the condition expression, the symbol lookup on this name would 12578 *not* return this standard exception. The catchpoint condition 12579 may then be set only on user-defined exceptions which have the 12580 same not-fully-qualified name (e.g. my_package.constraint_error). 12581 12582 To avoid this unexcepted behavior, these standard exceptions are 12583 systematically prefixed by "standard". This means that "catch 12584 exception constraint_error" is rewritten into "catch exception 12585 standard.constraint_error". 12586 12587 If an exception named contraint_error is defined in another package of 12588 the inferior program, then the only way to specify this exception as a 12589 breakpoint condition is to use its fully-qualified named: 12590 e.g. my_package.constraint_error. */ 12591 12592 for (i = 0; i < sizeof (standard_exc) / sizeof (char *); i++) 12593 { 12594 if (strcmp (standard_exc [i], excep_string) == 0) 12595 { 12596 return xstrprintf ("long_integer (e) = long_integer (&standard.%s)", 12597 excep_string); 12598 } 12599 } 12600 return xstrprintf ("long_integer (e) = long_integer (&%s)", excep_string); 12601 } 12602 12603 /* Return the symtab_and_line that should be used to insert an exception 12604 catchpoint of the TYPE kind. 12605 12606 EXCEP_STRING should contain the name of a specific exception that 12607 the catchpoint should catch, or NULL otherwise. 12608 12609 ADDR_STRING returns the name of the function where the real 12610 breakpoint that implements the catchpoints is set, depending on the 12611 type of catchpoint we need to create. */ 12612 12613 static struct symtab_and_line 12614 ada_exception_sal (enum ada_exception_catchpoint_kind ex, char *excep_string, 12615 char **addr_string, const struct breakpoint_ops **ops) 12616 { 12617 const char *sym_name; 12618 struct symbol *sym; 12619 12620 /* First, find out which exception support info to use. */ 12621 ada_exception_support_info_sniffer (); 12622 12623 /* Then lookup the function on which we will break in order to catch 12624 the Ada exceptions requested by the user. */ 12625 sym_name = ada_exception_sym_name (ex); 12626 sym = standard_lookup (sym_name, NULL, VAR_DOMAIN); 12627 12628 /* We can assume that SYM is not NULL at this stage. If the symbol 12629 did not exist, ada_exception_support_info_sniffer would have 12630 raised an exception. 12631 12632 Also, ada_exception_support_info_sniffer should have already 12633 verified that SYM is a function symbol. */ 12634 gdb_assert (sym != NULL); 12635 gdb_assert (SYMBOL_CLASS (sym) == LOC_BLOCK); 12636 12637 /* Set ADDR_STRING. */ 12638 *addr_string = xstrdup (sym_name); 12639 12640 /* Set OPS. */ 12641 *ops = ada_exception_breakpoint_ops (ex); 12642 12643 return find_function_start_sal (sym, 1); 12644 } 12645 12646 /* Create an Ada exception catchpoint. 12647 12648 EX_KIND is the kind of exception catchpoint to be created. 12649 12650 If EXCEPT_STRING is NULL, this catchpoint is expected to trigger 12651 for all exceptions. Otherwise, EXCEPT_STRING indicates the name 12652 of the exception to which this catchpoint applies. When not NULL, 12653 the string must be allocated on the heap, and its deallocation 12654 is no longer the responsibility of the caller. 12655 12656 COND_STRING, if not NULL, is the catchpoint condition. This string 12657 must be allocated on the heap, and its deallocation is no longer 12658 the responsibility of the caller. 12659 12660 TEMPFLAG, if nonzero, means that the underlying breakpoint 12661 should be temporary. 12662 12663 FROM_TTY is the usual argument passed to all commands implementations. */ 12664 12665 void 12666 create_ada_exception_catchpoint (struct gdbarch *gdbarch, 12667 enum ada_exception_catchpoint_kind ex_kind, 12668 char *excep_string, 12669 char *cond_string, 12670 int tempflag, 12671 int disabled, 12672 int from_tty) 12673 { 12674 struct ada_catchpoint *c; 12675 char *addr_string = NULL; 12676 const struct breakpoint_ops *ops = NULL; 12677 struct symtab_and_line sal 12678 = ada_exception_sal (ex_kind, excep_string, &addr_string, &ops); 12679 12680 c = XNEW (struct ada_catchpoint); 12681 init_ada_exception_breakpoint (&c->base, gdbarch, sal, addr_string, 12682 ops, tempflag, disabled, from_tty); 12683 c->excep_string = excep_string; 12684 create_excep_cond_exprs (c); 12685 if (cond_string != NULL) 12686 set_breakpoint_condition (&c->base, cond_string, from_tty); 12687 install_breakpoint (0, &c->base, 1); 12688 } 12689 12690 /* Implement the "catch exception" command. */ 12691 12692 static void 12693 catch_ada_exception_command (char *arg, int from_tty, 12694 struct cmd_list_element *command) 12695 { 12696 struct gdbarch *gdbarch = get_current_arch (); 12697 int tempflag; 12698 enum ada_exception_catchpoint_kind ex_kind; 12699 char *excep_string = NULL; 12700 char *cond_string = NULL; 12701 12702 tempflag = get_cmd_context (command) == CATCH_TEMPORARY; 12703 12704 if (!arg) 12705 arg = ""; 12706 catch_ada_exception_command_split (arg, &ex_kind, &excep_string, 12707 &cond_string); 12708 create_ada_exception_catchpoint (gdbarch, ex_kind, 12709 excep_string, cond_string, 12710 tempflag, 1 /* enabled */, 12711 from_tty); 12712 } 12713 12714 /* Split the arguments specified in a "catch assert" command. 12715 12716 ARGS contains the command's arguments (or the empty string if 12717 no arguments were passed). 12718 12719 If ARGS contains a condition, set COND_STRING to that condition 12720 (the memory needs to be deallocated after use). */ 12721 12722 static void 12723 catch_ada_assert_command_split (char *args, char **cond_string) 12724 { 12725 args = skip_spaces (args); 12726 12727 /* Check whether a condition was provided. */ 12728 if (strncmp (args, "if", 2) == 0 12729 && (isspace (args[2]) || args[2] == '\0')) 12730 { 12731 args += 2; 12732 args = skip_spaces (args); 12733 if (args[0] == '\0') 12734 error (_("condition missing after `if' keyword")); 12735 *cond_string = xstrdup (args); 12736 } 12737 12738 /* Otherwise, there should be no other argument at the end of 12739 the command. */ 12740 else if (args[0] != '\0') 12741 error (_("Junk at end of arguments.")); 12742 } 12743 12744 /* Implement the "catch assert" command. */ 12745 12746 static void 12747 catch_assert_command (char *arg, int from_tty, 12748 struct cmd_list_element *command) 12749 { 12750 struct gdbarch *gdbarch = get_current_arch (); 12751 int tempflag; 12752 char *cond_string = NULL; 12753 12754 tempflag = get_cmd_context (command) == CATCH_TEMPORARY; 12755 12756 if (!arg) 12757 arg = ""; 12758 catch_ada_assert_command_split (arg, &cond_string); 12759 create_ada_exception_catchpoint (gdbarch, ada_catch_assert, 12760 NULL, cond_string, 12761 tempflag, 1 /* enabled */, 12762 from_tty); 12763 } 12764 12765 /* Return non-zero if the symbol SYM is an Ada exception object. */ 12766 12767 static int 12768 ada_is_exception_sym (struct symbol *sym) 12769 { 12770 const char *type_name = type_name_no_tag (SYMBOL_TYPE (sym)); 12771 12772 return (SYMBOL_CLASS (sym) != LOC_TYPEDEF 12773 && SYMBOL_CLASS (sym) != LOC_BLOCK 12774 && SYMBOL_CLASS (sym) != LOC_CONST 12775 && SYMBOL_CLASS (sym) != LOC_UNRESOLVED 12776 && type_name != NULL && strcmp (type_name, "exception") == 0); 12777 } 12778 12779 /* Given a global symbol SYM, return non-zero iff SYM is a non-standard 12780 Ada exception object. This matches all exceptions except the ones 12781 defined by the Ada language. */ 12782 12783 static int 12784 ada_is_non_standard_exception_sym (struct symbol *sym) 12785 { 12786 int i; 12787 12788 if (!ada_is_exception_sym (sym)) 12789 return 0; 12790 12791 for (i = 0; i < ARRAY_SIZE (standard_exc); i++) 12792 if (strcmp (SYMBOL_LINKAGE_NAME (sym), standard_exc[i]) == 0) 12793 return 0; /* A standard exception. */ 12794 12795 /* Numeric_Error is also a standard exception, so exclude it. 12796 See the STANDARD_EXC description for more details as to why 12797 this exception is not listed in that array. */ 12798 if (strcmp (SYMBOL_LINKAGE_NAME (sym), "numeric_error") == 0) 12799 return 0; 12800 12801 return 1; 12802 } 12803 12804 /* A helper function for qsort, comparing two struct ada_exc_info 12805 objects. 12806 12807 The comparison is determined first by exception name, and then 12808 by exception address. */ 12809 12810 static int 12811 compare_ada_exception_info (const void *a, const void *b) 12812 { 12813 const struct ada_exc_info *exc_a = (struct ada_exc_info *) a; 12814 const struct ada_exc_info *exc_b = (struct ada_exc_info *) b; 12815 int result; 12816 12817 result = strcmp (exc_a->name, exc_b->name); 12818 if (result != 0) 12819 return result; 12820 12821 if (exc_a->addr < exc_b->addr) 12822 return -1; 12823 if (exc_a->addr > exc_b->addr) 12824 return 1; 12825 12826 return 0; 12827 } 12828 12829 /* Sort EXCEPTIONS using compare_ada_exception_info as the comparison 12830 routine, but keeping the first SKIP elements untouched. 12831 12832 All duplicates are also removed. */ 12833 12834 static void 12835 sort_remove_dups_ada_exceptions_list (VEC(ada_exc_info) **exceptions, 12836 int skip) 12837 { 12838 struct ada_exc_info *to_sort 12839 = VEC_address (ada_exc_info, *exceptions) + skip; 12840 int to_sort_len 12841 = VEC_length (ada_exc_info, *exceptions) - skip; 12842 int i, j; 12843 12844 qsort (to_sort, to_sort_len, sizeof (struct ada_exc_info), 12845 compare_ada_exception_info); 12846 12847 for (i = 1, j = 1; i < to_sort_len; i++) 12848 if (compare_ada_exception_info (&to_sort[i], &to_sort[j - 1]) != 0) 12849 to_sort[j++] = to_sort[i]; 12850 to_sort_len = j; 12851 VEC_truncate(ada_exc_info, *exceptions, skip + to_sort_len); 12852 } 12853 12854 /* A function intended as the "name_matcher" callback in the struct 12855 quick_symbol_functions' expand_symtabs_matching method. 12856 12857 SEARCH_NAME is the symbol's search name. 12858 12859 If USER_DATA is not NULL, it is a pointer to a regext_t object 12860 used to match the symbol (by natural name). Otherwise, when USER_DATA 12861 is null, no filtering is performed, and all symbols are a positive 12862 match. */ 12863 12864 static int 12865 ada_exc_search_name_matches (const char *search_name, void *user_data) 12866 { 12867 regex_t *preg = user_data; 12868 12869 if (preg == NULL) 12870 return 1; 12871 12872 /* In Ada, the symbol "search name" is a linkage name, whereas 12873 the regular expression used to do the matching refers to 12874 the natural name. So match against the decoded name. */ 12875 return (regexec (preg, ada_decode (search_name), 0, NULL, 0) == 0); 12876 } 12877 12878 /* Add all exceptions defined by the Ada standard whose name match 12879 a regular expression. 12880 12881 If PREG is not NULL, then this regexp_t object is used to 12882 perform the symbol name matching. Otherwise, no name-based 12883 filtering is performed. 12884 12885 EXCEPTIONS is a vector of exceptions to which matching exceptions 12886 gets pushed. */ 12887 12888 static void 12889 ada_add_standard_exceptions (regex_t *preg, VEC(ada_exc_info) **exceptions) 12890 { 12891 int i; 12892 12893 for (i = 0; i < ARRAY_SIZE (standard_exc); i++) 12894 { 12895 if (preg == NULL 12896 || regexec (preg, standard_exc[i], 0, NULL, 0) == 0) 12897 { 12898 struct bound_minimal_symbol msymbol 12899 = ada_lookup_simple_minsym (standard_exc[i]); 12900 12901 if (msymbol.minsym != NULL) 12902 { 12903 struct ada_exc_info info 12904 = {standard_exc[i], BMSYMBOL_VALUE_ADDRESS (msymbol)}; 12905 12906 VEC_safe_push (ada_exc_info, *exceptions, &info); 12907 } 12908 } 12909 } 12910 } 12911 12912 /* Add all Ada exceptions defined locally and accessible from the given 12913 FRAME. 12914 12915 If PREG is not NULL, then this regexp_t object is used to 12916 perform the symbol name matching. Otherwise, no name-based 12917 filtering is performed. 12918 12919 EXCEPTIONS is a vector of exceptions to which matching exceptions 12920 gets pushed. */ 12921 12922 static void 12923 ada_add_exceptions_from_frame (regex_t *preg, struct frame_info *frame, 12924 VEC(ada_exc_info) **exceptions) 12925 { 12926 const struct block *block = get_frame_block (frame, 0); 12927 12928 while (block != 0) 12929 { 12930 struct block_iterator iter; 12931 struct symbol *sym; 12932 12933 ALL_BLOCK_SYMBOLS (block, iter, sym) 12934 { 12935 switch (SYMBOL_CLASS (sym)) 12936 { 12937 case LOC_TYPEDEF: 12938 case LOC_BLOCK: 12939 case LOC_CONST: 12940 break; 12941 default: 12942 if (ada_is_exception_sym (sym)) 12943 { 12944 struct ada_exc_info info = {SYMBOL_PRINT_NAME (sym), 12945 SYMBOL_VALUE_ADDRESS (sym)}; 12946 12947 VEC_safe_push (ada_exc_info, *exceptions, &info); 12948 } 12949 } 12950 } 12951 if (BLOCK_FUNCTION (block) != NULL) 12952 break; 12953 block = BLOCK_SUPERBLOCK (block); 12954 } 12955 } 12956 12957 /* Add all exceptions defined globally whose name name match 12958 a regular expression, excluding standard exceptions. 12959 12960 The reason we exclude standard exceptions is that they need 12961 to be handled separately: Standard exceptions are defined inside 12962 a runtime unit which is normally not compiled with debugging info, 12963 and thus usually do not show up in our symbol search. However, 12964 if the unit was in fact built with debugging info, we need to 12965 exclude them because they would duplicate the entry we found 12966 during the special loop that specifically searches for those 12967 standard exceptions. 12968 12969 If PREG is not NULL, then this regexp_t object is used to 12970 perform the symbol name matching. Otherwise, no name-based 12971 filtering is performed. 12972 12973 EXCEPTIONS is a vector of exceptions to which matching exceptions 12974 gets pushed. */ 12975 12976 static void 12977 ada_add_global_exceptions (regex_t *preg, VEC(ada_exc_info) **exceptions) 12978 { 12979 struct objfile *objfile; 12980 struct compunit_symtab *s; 12981 12982 expand_symtabs_matching (NULL, ada_exc_search_name_matches, 12983 VARIABLES_DOMAIN, preg); 12984 12985 ALL_COMPUNITS (objfile, s) 12986 { 12987 const struct blockvector *bv = COMPUNIT_BLOCKVECTOR (s); 12988 int i; 12989 12990 for (i = GLOBAL_BLOCK; i <= STATIC_BLOCK; i++) 12991 { 12992 struct block *b = BLOCKVECTOR_BLOCK (bv, i); 12993 struct block_iterator iter; 12994 struct symbol *sym; 12995 12996 ALL_BLOCK_SYMBOLS (b, iter, sym) 12997 if (ada_is_non_standard_exception_sym (sym) 12998 && (preg == NULL 12999 || regexec (preg, SYMBOL_NATURAL_NAME (sym), 13000 0, NULL, 0) == 0)) 13001 { 13002 struct ada_exc_info info 13003 = {SYMBOL_PRINT_NAME (sym), SYMBOL_VALUE_ADDRESS (sym)}; 13004 13005 VEC_safe_push (ada_exc_info, *exceptions, &info); 13006 } 13007 } 13008 } 13009 } 13010 13011 /* Implements ada_exceptions_list with the regular expression passed 13012 as a regex_t, rather than a string. 13013 13014 If not NULL, PREG is used to filter out exceptions whose names 13015 do not match. Otherwise, all exceptions are listed. */ 13016 13017 static VEC(ada_exc_info) * 13018 ada_exceptions_list_1 (regex_t *preg) 13019 { 13020 VEC(ada_exc_info) *result = NULL; 13021 struct cleanup *old_chain 13022 = make_cleanup (VEC_cleanup (ada_exc_info), &result); 13023 int prev_len; 13024 13025 /* First, list the known standard exceptions. These exceptions 13026 need to be handled separately, as they are usually defined in 13027 runtime units that have been compiled without debugging info. */ 13028 13029 ada_add_standard_exceptions (preg, &result); 13030 13031 /* Next, find all exceptions whose scope is local and accessible 13032 from the currently selected frame. */ 13033 13034 if (has_stack_frames ()) 13035 { 13036 prev_len = VEC_length (ada_exc_info, result); 13037 ada_add_exceptions_from_frame (preg, get_selected_frame (NULL), 13038 &result); 13039 if (VEC_length (ada_exc_info, result) > prev_len) 13040 sort_remove_dups_ada_exceptions_list (&result, prev_len); 13041 } 13042 13043 /* Add all exceptions whose scope is global. */ 13044 13045 prev_len = VEC_length (ada_exc_info, result); 13046 ada_add_global_exceptions (preg, &result); 13047 if (VEC_length (ada_exc_info, result) > prev_len) 13048 sort_remove_dups_ada_exceptions_list (&result, prev_len); 13049 13050 discard_cleanups (old_chain); 13051 return result; 13052 } 13053 13054 /* Return a vector of ada_exc_info. 13055 13056 If REGEXP is NULL, all exceptions are included in the result. 13057 Otherwise, it should contain a valid regular expression, 13058 and only the exceptions whose names match that regular expression 13059 are included in the result. 13060 13061 The exceptions are sorted in the following order: 13062 - Standard exceptions (defined by the Ada language), in 13063 alphabetical order; 13064 - Exceptions only visible from the current frame, in 13065 alphabetical order; 13066 - Exceptions whose scope is global, in alphabetical order. */ 13067 13068 VEC(ada_exc_info) * 13069 ada_exceptions_list (const char *regexp) 13070 { 13071 VEC(ada_exc_info) *result = NULL; 13072 struct cleanup *old_chain = NULL; 13073 regex_t reg; 13074 13075 if (regexp != NULL) 13076 old_chain = compile_rx_or_error (®, regexp, 13077 _("invalid regular expression")); 13078 13079 result = ada_exceptions_list_1 (regexp != NULL ? ® : NULL); 13080 13081 if (old_chain != NULL) 13082 do_cleanups (old_chain); 13083 return result; 13084 } 13085 13086 /* Implement the "info exceptions" command. */ 13087 13088 static void 13089 info_exceptions_command (char *regexp, int from_tty) 13090 { 13091 VEC(ada_exc_info) *exceptions; 13092 struct cleanup *cleanup; 13093 struct gdbarch *gdbarch = get_current_arch (); 13094 int ix; 13095 struct ada_exc_info *info; 13096 13097 exceptions = ada_exceptions_list (regexp); 13098 cleanup = make_cleanup (VEC_cleanup (ada_exc_info), &exceptions); 13099 13100 if (regexp != NULL) 13101 printf_filtered 13102 (_("All Ada exceptions matching regular expression \"%s\":\n"), regexp); 13103 else 13104 printf_filtered (_("All defined Ada exceptions:\n")); 13105 13106 for (ix = 0; VEC_iterate(ada_exc_info, exceptions, ix, info); ix++) 13107 printf_filtered ("%s: %s\n", info->name, paddress (gdbarch, info->addr)); 13108 13109 do_cleanups (cleanup); 13110 } 13111 13112 /* Operators */ 13113 /* Information about operators given special treatment in functions 13114 below. */ 13115 /* Format: OP_DEFN (<operator>, <operator length>, <# args>, <binop>). */ 13116 13117 #define ADA_OPERATORS \ 13118 OP_DEFN (OP_VAR_VALUE, 4, 0, 0) \ 13119 OP_DEFN (BINOP_IN_BOUNDS, 3, 2, 0) \ 13120 OP_DEFN (TERNOP_IN_RANGE, 1, 3, 0) \ 13121 OP_DEFN (OP_ATR_FIRST, 1, 2, 0) \ 13122 OP_DEFN (OP_ATR_LAST, 1, 2, 0) \ 13123 OP_DEFN (OP_ATR_LENGTH, 1, 2, 0) \ 13124 OP_DEFN (OP_ATR_IMAGE, 1, 2, 0) \ 13125 OP_DEFN (OP_ATR_MAX, 1, 3, 0) \ 13126 OP_DEFN (OP_ATR_MIN, 1, 3, 0) \ 13127 OP_DEFN (OP_ATR_MODULUS, 1, 1, 0) \ 13128 OP_DEFN (OP_ATR_POS, 1, 2, 0) \ 13129 OP_DEFN (OP_ATR_SIZE, 1, 1, 0) \ 13130 OP_DEFN (OP_ATR_TAG, 1, 1, 0) \ 13131 OP_DEFN (OP_ATR_VAL, 1, 2, 0) \ 13132 OP_DEFN (UNOP_QUAL, 3, 1, 0) \ 13133 OP_DEFN (UNOP_IN_RANGE, 3, 1, 0) \ 13134 OP_DEFN (OP_OTHERS, 1, 1, 0) \ 13135 OP_DEFN (OP_POSITIONAL, 3, 1, 0) \ 13136 OP_DEFN (OP_DISCRETE_RANGE, 1, 2, 0) 13137 13138 static void 13139 ada_operator_length (const struct expression *exp, int pc, int *oplenp, 13140 int *argsp) 13141 { 13142 switch (exp->elts[pc - 1].opcode) 13143 { 13144 default: 13145 operator_length_standard (exp, pc, oplenp, argsp); 13146 break; 13147 13148 #define OP_DEFN(op, len, args, binop) \ 13149 case op: *oplenp = len; *argsp = args; break; 13150 ADA_OPERATORS; 13151 #undef OP_DEFN 13152 13153 case OP_AGGREGATE: 13154 *oplenp = 3; 13155 *argsp = longest_to_int (exp->elts[pc - 2].longconst); 13156 break; 13157 13158 case OP_CHOICES: 13159 *oplenp = 3; 13160 *argsp = longest_to_int (exp->elts[pc - 2].longconst) + 1; 13161 break; 13162 } 13163 } 13164 13165 /* Implementation of the exp_descriptor method operator_check. */ 13166 13167 static int 13168 ada_operator_check (struct expression *exp, int pos, 13169 int (*objfile_func) (struct objfile *objfile, void *data), 13170 void *data) 13171 { 13172 const union exp_element *const elts = exp->elts; 13173 struct type *type = NULL; 13174 13175 switch (elts[pos].opcode) 13176 { 13177 case UNOP_IN_RANGE: 13178 case UNOP_QUAL: 13179 type = elts[pos + 1].type; 13180 break; 13181 13182 default: 13183 return operator_check_standard (exp, pos, objfile_func, data); 13184 } 13185 13186 /* Invoke callbacks for TYPE and OBJFILE if they were set as non-NULL. */ 13187 13188 if (type && TYPE_OBJFILE (type) 13189 && (*objfile_func) (TYPE_OBJFILE (type), data)) 13190 return 1; 13191 13192 return 0; 13193 } 13194 13195 static char * 13196 ada_op_name (enum exp_opcode opcode) 13197 { 13198 switch (opcode) 13199 { 13200 default: 13201 return op_name_standard (opcode); 13202 13203 #define OP_DEFN(op, len, args, binop) case op: return #op; 13204 ADA_OPERATORS; 13205 #undef OP_DEFN 13206 13207 case OP_AGGREGATE: 13208 return "OP_AGGREGATE"; 13209 case OP_CHOICES: 13210 return "OP_CHOICES"; 13211 case OP_NAME: 13212 return "OP_NAME"; 13213 } 13214 } 13215 13216 /* As for operator_length, but assumes PC is pointing at the first 13217 element of the operator, and gives meaningful results only for the 13218 Ada-specific operators, returning 0 for *OPLENP and *ARGSP otherwise. */ 13219 13220 static void 13221 ada_forward_operator_length (struct expression *exp, int pc, 13222 int *oplenp, int *argsp) 13223 { 13224 switch (exp->elts[pc].opcode) 13225 { 13226 default: 13227 *oplenp = *argsp = 0; 13228 break; 13229 13230 #define OP_DEFN(op, len, args, binop) \ 13231 case op: *oplenp = len; *argsp = args; break; 13232 ADA_OPERATORS; 13233 #undef OP_DEFN 13234 13235 case OP_AGGREGATE: 13236 *oplenp = 3; 13237 *argsp = longest_to_int (exp->elts[pc + 1].longconst); 13238 break; 13239 13240 case OP_CHOICES: 13241 *oplenp = 3; 13242 *argsp = longest_to_int (exp->elts[pc + 1].longconst) + 1; 13243 break; 13244 13245 case OP_STRING: 13246 case OP_NAME: 13247 { 13248 int len = longest_to_int (exp->elts[pc + 1].longconst); 13249 13250 *oplenp = 4 + BYTES_TO_EXP_ELEM (len + 1); 13251 *argsp = 0; 13252 break; 13253 } 13254 } 13255 } 13256 13257 static int 13258 ada_dump_subexp_body (struct expression *exp, struct ui_file *stream, int elt) 13259 { 13260 enum exp_opcode op = exp->elts[elt].opcode; 13261 int oplen, nargs; 13262 int pc = elt; 13263 int i; 13264 13265 ada_forward_operator_length (exp, elt, &oplen, &nargs); 13266 13267 switch (op) 13268 { 13269 /* Ada attributes ('Foo). */ 13270 case OP_ATR_FIRST: 13271 case OP_ATR_LAST: 13272 case OP_ATR_LENGTH: 13273 case OP_ATR_IMAGE: 13274 case OP_ATR_MAX: 13275 case OP_ATR_MIN: 13276 case OP_ATR_MODULUS: 13277 case OP_ATR_POS: 13278 case OP_ATR_SIZE: 13279 case OP_ATR_TAG: 13280 case OP_ATR_VAL: 13281 break; 13282 13283 case UNOP_IN_RANGE: 13284 case UNOP_QUAL: 13285 /* XXX: gdb_sprint_host_address, type_sprint */ 13286 fprintf_filtered (stream, _("Type @")); 13287 gdb_print_host_address (exp->elts[pc + 1].type, stream); 13288 fprintf_filtered (stream, " ("); 13289 type_print (exp->elts[pc + 1].type, NULL, stream, 0); 13290 fprintf_filtered (stream, ")"); 13291 break; 13292 case BINOP_IN_BOUNDS: 13293 fprintf_filtered (stream, " (%d)", 13294 longest_to_int (exp->elts[pc + 2].longconst)); 13295 break; 13296 case TERNOP_IN_RANGE: 13297 break; 13298 13299 case OP_AGGREGATE: 13300 case OP_OTHERS: 13301 case OP_DISCRETE_RANGE: 13302 case OP_POSITIONAL: 13303 case OP_CHOICES: 13304 break; 13305 13306 case OP_NAME: 13307 case OP_STRING: 13308 { 13309 char *name = &exp->elts[elt + 2].string; 13310 int len = longest_to_int (exp->elts[elt + 1].longconst); 13311 13312 fprintf_filtered (stream, "Text: `%.*s'", len, name); 13313 break; 13314 } 13315 13316 default: 13317 return dump_subexp_body_standard (exp, stream, elt); 13318 } 13319 13320 elt += oplen; 13321 for (i = 0; i < nargs; i += 1) 13322 elt = dump_subexp (exp, stream, elt); 13323 13324 return elt; 13325 } 13326 13327 /* The Ada extension of print_subexp (q.v.). */ 13328 13329 static void 13330 ada_print_subexp (struct expression *exp, int *pos, 13331 struct ui_file *stream, enum precedence prec) 13332 { 13333 int oplen, nargs, i; 13334 int pc = *pos; 13335 enum exp_opcode op = exp->elts[pc].opcode; 13336 13337 ada_forward_operator_length (exp, pc, &oplen, &nargs); 13338 13339 *pos += oplen; 13340 switch (op) 13341 { 13342 default: 13343 *pos -= oplen; 13344 print_subexp_standard (exp, pos, stream, prec); 13345 return; 13346 13347 case OP_VAR_VALUE: 13348 fputs_filtered (SYMBOL_NATURAL_NAME (exp->elts[pc + 2].symbol), stream); 13349 return; 13350 13351 case BINOP_IN_BOUNDS: 13352 /* XXX: sprint_subexp */ 13353 print_subexp (exp, pos, stream, PREC_SUFFIX); 13354 fputs_filtered (" in ", stream); 13355 print_subexp (exp, pos, stream, PREC_SUFFIX); 13356 fputs_filtered ("'range", stream); 13357 if (exp->elts[pc + 1].longconst > 1) 13358 fprintf_filtered (stream, "(%ld)", 13359 (long) exp->elts[pc + 1].longconst); 13360 return; 13361 13362 case TERNOP_IN_RANGE: 13363 if (prec >= PREC_EQUAL) 13364 fputs_filtered ("(", stream); 13365 /* XXX: sprint_subexp */ 13366 print_subexp (exp, pos, stream, PREC_SUFFIX); 13367 fputs_filtered (" in ", stream); 13368 print_subexp (exp, pos, stream, PREC_EQUAL); 13369 fputs_filtered (" .. ", stream); 13370 print_subexp (exp, pos, stream, PREC_EQUAL); 13371 if (prec >= PREC_EQUAL) 13372 fputs_filtered (")", stream); 13373 return; 13374 13375 case OP_ATR_FIRST: 13376 case OP_ATR_LAST: 13377 case OP_ATR_LENGTH: 13378 case OP_ATR_IMAGE: 13379 case OP_ATR_MAX: 13380 case OP_ATR_MIN: 13381 case OP_ATR_MODULUS: 13382 case OP_ATR_POS: 13383 case OP_ATR_SIZE: 13384 case OP_ATR_TAG: 13385 case OP_ATR_VAL: 13386 if (exp->elts[*pos].opcode == OP_TYPE) 13387 { 13388 if (TYPE_CODE (exp->elts[*pos + 1].type) != TYPE_CODE_VOID) 13389 LA_PRINT_TYPE (exp->elts[*pos + 1].type, "", stream, 0, 0, 13390 &type_print_raw_options); 13391 *pos += 3; 13392 } 13393 else 13394 print_subexp (exp, pos, stream, PREC_SUFFIX); 13395 fprintf_filtered (stream, "'%s", ada_attribute_name (op)); 13396 if (nargs > 1) 13397 { 13398 int tem; 13399 13400 for (tem = 1; tem < nargs; tem += 1) 13401 { 13402 fputs_filtered ((tem == 1) ? " (" : ", ", stream); 13403 print_subexp (exp, pos, stream, PREC_ABOVE_COMMA); 13404 } 13405 fputs_filtered (")", stream); 13406 } 13407 return; 13408 13409 case UNOP_QUAL: 13410 type_print (exp->elts[pc + 1].type, "", stream, 0); 13411 fputs_filtered ("'(", stream); 13412 print_subexp (exp, pos, stream, PREC_PREFIX); 13413 fputs_filtered (")", stream); 13414 return; 13415 13416 case UNOP_IN_RANGE: 13417 /* XXX: sprint_subexp */ 13418 print_subexp (exp, pos, stream, PREC_SUFFIX); 13419 fputs_filtered (" in ", stream); 13420 LA_PRINT_TYPE (exp->elts[pc + 1].type, "", stream, 1, 0, 13421 &type_print_raw_options); 13422 return; 13423 13424 case OP_DISCRETE_RANGE: 13425 print_subexp (exp, pos, stream, PREC_SUFFIX); 13426 fputs_filtered ("..", stream); 13427 print_subexp (exp, pos, stream, PREC_SUFFIX); 13428 return; 13429 13430 case OP_OTHERS: 13431 fputs_filtered ("others => ", stream); 13432 print_subexp (exp, pos, stream, PREC_SUFFIX); 13433 return; 13434 13435 case OP_CHOICES: 13436 for (i = 0; i < nargs-1; i += 1) 13437 { 13438 if (i > 0) 13439 fputs_filtered ("|", stream); 13440 print_subexp (exp, pos, stream, PREC_SUFFIX); 13441 } 13442 fputs_filtered (" => ", stream); 13443 print_subexp (exp, pos, stream, PREC_SUFFIX); 13444 return; 13445 13446 case OP_POSITIONAL: 13447 print_subexp (exp, pos, stream, PREC_SUFFIX); 13448 return; 13449 13450 case OP_AGGREGATE: 13451 fputs_filtered ("(", stream); 13452 for (i = 0; i < nargs; i += 1) 13453 { 13454 if (i > 0) 13455 fputs_filtered (", ", stream); 13456 print_subexp (exp, pos, stream, PREC_SUFFIX); 13457 } 13458 fputs_filtered (")", stream); 13459 return; 13460 } 13461 } 13462 13463 /* Table mapping opcodes into strings for printing operators 13464 and precedences of the operators. */ 13465 13466 static const struct op_print ada_op_print_tab[] = { 13467 {":=", BINOP_ASSIGN, PREC_ASSIGN, 1}, 13468 {"or else", BINOP_LOGICAL_OR, PREC_LOGICAL_OR, 0}, 13469 {"and then", BINOP_LOGICAL_AND, PREC_LOGICAL_AND, 0}, 13470 {"or", BINOP_BITWISE_IOR, PREC_BITWISE_IOR, 0}, 13471 {"xor", BINOP_BITWISE_XOR, PREC_BITWISE_XOR, 0}, 13472 {"and", BINOP_BITWISE_AND, PREC_BITWISE_AND, 0}, 13473 {"=", BINOP_EQUAL, PREC_EQUAL, 0}, 13474 {"/=", BINOP_NOTEQUAL, PREC_EQUAL, 0}, 13475 {"<=", BINOP_LEQ, PREC_ORDER, 0}, 13476 {">=", BINOP_GEQ, PREC_ORDER, 0}, 13477 {">", BINOP_GTR, PREC_ORDER, 0}, 13478 {"<", BINOP_LESS, PREC_ORDER, 0}, 13479 {">>", BINOP_RSH, PREC_SHIFT, 0}, 13480 {"<<", BINOP_LSH, PREC_SHIFT, 0}, 13481 {"+", BINOP_ADD, PREC_ADD, 0}, 13482 {"-", BINOP_SUB, PREC_ADD, 0}, 13483 {"&", BINOP_CONCAT, PREC_ADD, 0}, 13484 {"*", BINOP_MUL, PREC_MUL, 0}, 13485 {"/", BINOP_DIV, PREC_MUL, 0}, 13486 {"rem", BINOP_REM, PREC_MUL, 0}, 13487 {"mod", BINOP_MOD, PREC_MUL, 0}, 13488 {"**", BINOP_EXP, PREC_REPEAT, 0}, 13489 {"@", BINOP_REPEAT, PREC_REPEAT, 0}, 13490 {"-", UNOP_NEG, PREC_PREFIX, 0}, 13491 {"+", UNOP_PLUS, PREC_PREFIX, 0}, 13492 {"not ", UNOP_LOGICAL_NOT, PREC_PREFIX, 0}, 13493 {"not ", UNOP_COMPLEMENT, PREC_PREFIX, 0}, 13494 {"abs ", UNOP_ABS, PREC_PREFIX, 0}, 13495 {".all", UNOP_IND, PREC_SUFFIX, 1}, 13496 {"'access", UNOP_ADDR, PREC_SUFFIX, 1}, 13497 {"'size", OP_ATR_SIZE, PREC_SUFFIX, 1}, 13498 {NULL, 0, 0, 0} 13499 }; 13500 13501 enum ada_primitive_types { 13502 ada_primitive_type_int, 13503 ada_primitive_type_long, 13504 ada_primitive_type_short, 13505 ada_primitive_type_char, 13506 ada_primitive_type_float, 13507 ada_primitive_type_double, 13508 ada_primitive_type_void, 13509 ada_primitive_type_long_long, 13510 ada_primitive_type_long_double, 13511 ada_primitive_type_natural, 13512 ada_primitive_type_positive, 13513 ada_primitive_type_system_address, 13514 nr_ada_primitive_types 13515 }; 13516 13517 static void 13518 ada_language_arch_info (struct gdbarch *gdbarch, 13519 struct language_arch_info *lai) 13520 { 13521 const struct builtin_type *builtin = builtin_type (gdbarch); 13522 13523 lai->primitive_type_vector 13524 = GDBARCH_OBSTACK_CALLOC (gdbarch, nr_ada_primitive_types + 1, 13525 struct type *); 13526 13527 lai->primitive_type_vector [ada_primitive_type_int] 13528 = arch_integer_type (gdbarch, gdbarch_int_bit (gdbarch), 13529 0, "integer"); 13530 lai->primitive_type_vector [ada_primitive_type_long] 13531 = arch_integer_type (gdbarch, gdbarch_long_bit (gdbarch), 13532 0, "long_integer"); 13533 lai->primitive_type_vector [ada_primitive_type_short] 13534 = arch_integer_type (gdbarch, gdbarch_short_bit (gdbarch), 13535 0, "short_integer"); 13536 lai->string_char_type 13537 = lai->primitive_type_vector [ada_primitive_type_char] 13538 = arch_integer_type (gdbarch, TARGET_CHAR_BIT, 0, "character"); 13539 lai->primitive_type_vector [ada_primitive_type_float] 13540 = arch_float_type (gdbarch, gdbarch_float_bit (gdbarch), 13541 "float", NULL); 13542 lai->primitive_type_vector [ada_primitive_type_double] 13543 = arch_float_type (gdbarch, gdbarch_double_bit (gdbarch), 13544 "long_float", NULL); 13545 lai->primitive_type_vector [ada_primitive_type_long_long] 13546 = arch_integer_type (gdbarch, gdbarch_long_long_bit (gdbarch), 13547 0, "long_long_integer"); 13548 lai->primitive_type_vector [ada_primitive_type_long_double] 13549 = arch_float_type (gdbarch, gdbarch_double_bit (gdbarch), 13550 "long_long_float", NULL); 13551 lai->primitive_type_vector [ada_primitive_type_natural] 13552 = arch_integer_type (gdbarch, gdbarch_int_bit (gdbarch), 13553 0, "natural"); 13554 lai->primitive_type_vector [ada_primitive_type_positive] 13555 = arch_integer_type (gdbarch, gdbarch_int_bit (gdbarch), 13556 0, "positive"); 13557 lai->primitive_type_vector [ada_primitive_type_void] 13558 = builtin->builtin_void; 13559 13560 lai->primitive_type_vector [ada_primitive_type_system_address] 13561 = lookup_pointer_type (arch_type (gdbarch, TYPE_CODE_VOID, 1, "void")); 13562 TYPE_NAME (lai->primitive_type_vector [ada_primitive_type_system_address]) 13563 = "system__address"; 13564 13565 lai->bool_type_symbol = NULL; 13566 lai->bool_type_default = builtin->builtin_bool; 13567 } 13568 13569 /* Language vector */ 13570 13571 /* Not really used, but needed in the ada_language_defn. */ 13572 13573 static void 13574 emit_char (int c, struct type *type, struct ui_file *stream, int quoter) 13575 { 13576 ada_emit_char (c, type, stream, quoter, 1); 13577 } 13578 13579 static int 13580 parse (struct parser_state *ps) 13581 { 13582 warnings_issued = 0; 13583 return ada_parse (ps); 13584 } 13585 13586 static const struct exp_descriptor ada_exp_descriptor = { 13587 ada_print_subexp, 13588 ada_operator_length, 13589 ada_operator_check, 13590 ada_op_name, 13591 ada_dump_subexp_body, 13592 ada_evaluate_subexp 13593 }; 13594 13595 /* Implement the "la_get_symbol_name_cmp" language_defn method 13596 for Ada. */ 13597 13598 static symbol_name_cmp_ftype 13599 ada_get_symbol_name_cmp (const char *lookup_name) 13600 { 13601 if (should_use_wild_match (lookup_name)) 13602 return wild_match; 13603 else 13604 return compare_names; 13605 } 13606 13607 /* Implement the "la_read_var_value" language_defn method for Ada. */ 13608 13609 static struct value * 13610 ada_read_var_value (struct symbol *var, struct frame_info *frame) 13611 { 13612 const struct block *frame_block = NULL; 13613 struct symbol *renaming_sym = NULL; 13614 13615 /* The only case where default_read_var_value is not sufficient 13616 is when VAR is a renaming... */ 13617 if (frame) 13618 frame_block = get_frame_block (frame, NULL); 13619 if (frame_block) 13620 renaming_sym = ada_find_renaming_symbol (var, frame_block); 13621 if (renaming_sym != NULL) 13622 return ada_read_renaming_var_value (renaming_sym, frame_block); 13623 13624 /* This is a typical case where we expect the default_read_var_value 13625 function to work. */ 13626 return default_read_var_value (var, frame); 13627 } 13628 13629 const struct language_defn ada_language_defn = { 13630 "ada", /* Language name */ 13631 "Ada", 13632 language_ada, 13633 range_check_off, 13634 case_sensitive_on, /* Yes, Ada is case-insensitive, but 13635 that's not quite what this means. */ 13636 array_row_major, 13637 macro_expansion_no, 13638 &ada_exp_descriptor, 13639 parse, 13640 ada_error, 13641 resolve, 13642 ada_printchar, /* Print a character constant */ 13643 ada_printstr, /* Function to print string constant */ 13644 emit_char, /* Function to print single char (not used) */ 13645 ada_print_type, /* Print a type using appropriate syntax */ 13646 ada_print_typedef, /* Print a typedef using appropriate syntax */ 13647 ada_val_print, /* Print a value using appropriate syntax */ 13648 ada_value_print, /* Print a top-level value */ 13649 ada_read_var_value, /* la_read_var_value */ 13650 NULL, /* Language specific skip_trampoline */ 13651 NULL, /* name_of_this */ 13652 ada_lookup_symbol_nonlocal, /* Looking up non-local symbols. */ 13653 basic_lookup_transparent_type, /* lookup_transparent_type */ 13654 ada_la_decode, /* Language specific symbol demangler */ 13655 NULL, /* Language specific 13656 class_name_from_physname */ 13657 ada_op_print_tab, /* expression operators for printing */ 13658 0, /* c-style arrays */ 13659 1, /* String lower bound */ 13660 ada_get_gdb_completer_word_break_characters, 13661 ada_make_symbol_completion_list, 13662 ada_language_arch_info, 13663 ada_print_array_index, 13664 default_pass_by_reference, 13665 c_get_string, 13666 ada_get_symbol_name_cmp, /* la_get_symbol_name_cmp */ 13667 ada_iterate_over_symbols, 13668 &ada_varobj_ops, 13669 NULL, 13670 NULL, 13671 LANG_MAGIC 13672 }; 13673 13674 /* Provide a prototype to silence -Wmissing-prototypes. */ 13675 extern initialize_file_ftype _initialize_ada_language; 13676 13677 /* Command-list for the "set/show ada" prefix command. */ 13678 static struct cmd_list_element *set_ada_list; 13679 static struct cmd_list_element *show_ada_list; 13680 13681 /* Implement the "set ada" prefix command. */ 13682 13683 static void 13684 set_ada_command (char *arg, int from_tty) 13685 { 13686 printf_unfiltered (_(\ 13687 "\"set ada\" must be followed by the name of a setting.\n")); 13688 help_list (set_ada_list, "set ada ", all_commands, gdb_stdout); 13689 } 13690 13691 /* Implement the "show ada" prefix command. */ 13692 13693 static void 13694 show_ada_command (char *args, int from_tty) 13695 { 13696 cmd_show_list (show_ada_list, from_tty, ""); 13697 } 13698 13699 static void 13700 initialize_ada_catchpoint_ops (void) 13701 { 13702 struct breakpoint_ops *ops; 13703 13704 initialize_breakpoint_ops (); 13705 13706 ops = &catch_exception_breakpoint_ops; 13707 *ops = bkpt_breakpoint_ops; 13708 ops->dtor = dtor_catch_exception; 13709 ops->allocate_location = allocate_location_catch_exception; 13710 ops->re_set = re_set_catch_exception; 13711 ops->check_status = check_status_catch_exception; 13712 ops->print_it = print_it_catch_exception; 13713 ops->print_one = print_one_catch_exception; 13714 ops->print_mention = print_mention_catch_exception; 13715 ops->print_recreate = print_recreate_catch_exception; 13716 13717 ops = &catch_exception_unhandled_breakpoint_ops; 13718 *ops = bkpt_breakpoint_ops; 13719 ops->dtor = dtor_catch_exception_unhandled; 13720 ops->allocate_location = allocate_location_catch_exception_unhandled; 13721 ops->re_set = re_set_catch_exception_unhandled; 13722 ops->check_status = check_status_catch_exception_unhandled; 13723 ops->print_it = print_it_catch_exception_unhandled; 13724 ops->print_one = print_one_catch_exception_unhandled; 13725 ops->print_mention = print_mention_catch_exception_unhandled; 13726 ops->print_recreate = print_recreate_catch_exception_unhandled; 13727 13728 ops = &catch_assert_breakpoint_ops; 13729 *ops = bkpt_breakpoint_ops; 13730 ops->dtor = dtor_catch_assert; 13731 ops->allocate_location = allocate_location_catch_assert; 13732 ops->re_set = re_set_catch_assert; 13733 ops->check_status = check_status_catch_assert; 13734 ops->print_it = print_it_catch_assert; 13735 ops->print_one = print_one_catch_assert; 13736 ops->print_mention = print_mention_catch_assert; 13737 ops->print_recreate = print_recreate_catch_assert; 13738 } 13739 13740 /* This module's 'new_objfile' observer. */ 13741 13742 static void 13743 ada_new_objfile_observer (struct objfile *objfile) 13744 { 13745 ada_clear_symbol_cache (); 13746 } 13747 13748 /* This module's 'free_objfile' observer. */ 13749 13750 static void 13751 ada_free_objfile_observer (struct objfile *objfile) 13752 { 13753 ada_clear_symbol_cache (); 13754 } 13755 13756 void 13757 _initialize_ada_language (void) 13758 { 13759 add_language (&ada_language_defn); 13760 13761 initialize_ada_catchpoint_ops (); 13762 13763 add_prefix_cmd ("ada", no_class, set_ada_command, 13764 _("Prefix command for changing Ada-specfic settings"), 13765 &set_ada_list, "set ada ", 0, &setlist); 13766 13767 add_prefix_cmd ("ada", no_class, show_ada_command, 13768 _("Generic command for showing Ada-specific settings."), 13769 &show_ada_list, "show ada ", 0, &showlist); 13770 13771 add_setshow_boolean_cmd ("trust-PAD-over-XVS", class_obscure, 13772 &trust_pad_over_xvs, _("\ 13773 Enable or disable an optimization trusting PAD types over XVS types"), _("\ 13774 Show whether an optimization trusting PAD types over XVS types is activated"), 13775 _("\ 13776 This is related to the encoding used by the GNAT compiler. The debugger\n\ 13777 should normally trust the contents of PAD types, but certain older versions\n\ 13778 of GNAT have a bug that sometimes causes the information in the PAD type\n\ 13779 to be incorrect. Turning this setting \"off\" allows the debugger to\n\ 13780 work around this bug. It is always safe to turn this option \"off\", but\n\ 13781 this incurs a slight performance penalty, so it is recommended to NOT change\n\ 13782 this option to \"off\" unless necessary."), 13783 NULL, NULL, &set_ada_list, &show_ada_list); 13784 13785 add_catch_command ("exception", _("\ 13786 Catch Ada exceptions, when raised.\n\ 13787 With an argument, catch only exceptions with the given name."), 13788 catch_ada_exception_command, 13789 NULL, 13790 CATCH_PERMANENT, 13791 CATCH_TEMPORARY); 13792 add_catch_command ("assert", _("\ 13793 Catch failed Ada assertions, when raised.\n\ 13794 With an argument, catch only exceptions with the given name."), 13795 catch_assert_command, 13796 NULL, 13797 CATCH_PERMANENT, 13798 CATCH_TEMPORARY); 13799 13800 varsize_limit = 65536; 13801 13802 add_info ("exceptions", info_exceptions_command, 13803 _("\ 13804 List all Ada exception names.\n\ 13805 If a regular expression is passed as an argument, only those matching\n\ 13806 the regular expression are listed.")); 13807 13808 add_prefix_cmd ("ada", class_maintenance, maint_set_ada_cmd, 13809 _("Set Ada maintenance-related variables."), 13810 &maint_set_ada_cmdlist, "maintenance set ada ", 13811 0/*allow-unknown*/, &maintenance_set_cmdlist); 13812 13813 add_prefix_cmd ("ada", class_maintenance, maint_show_ada_cmd, 13814 _("Show Ada maintenance-related variables"), 13815 &maint_show_ada_cmdlist, "maintenance show ada ", 13816 0/*allow-unknown*/, &maintenance_show_cmdlist); 13817 13818 add_setshow_boolean_cmd 13819 ("ignore-descriptive-types", class_maintenance, 13820 &ada_ignore_descriptive_types_p, 13821 _("Set whether descriptive types generated by GNAT should be ignored."), 13822 _("Show whether descriptive types generated by GNAT should be ignored."), 13823 _("\ 13824 When enabled, the debugger will stop using the DW_AT_GNAT_descriptive_type\n\ 13825 DWARF attribute."), 13826 NULL, NULL, &maint_set_ada_cmdlist, &maint_show_ada_cmdlist); 13827 13828 obstack_init (&symbol_list_obstack); 13829 13830 decoded_names_store = htab_create_alloc 13831 (256, htab_hash_string, (int (*)(const void *, const void *)) streq, 13832 NULL, xcalloc, xfree); 13833 13834 /* The ada-lang observers. */ 13835 observer_attach_new_objfile (ada_new_objfile_observer); 13836 observer_attach_free_objfile (ada_free_objfile_observer); 13837 observer_attach_inferior_exit (ada_inferior_exit); 13838 13839 /* Setup various context-specific data. */ 13840 ada_inferior_data 13841 = register_inferior_data_with_cleanup (NULL, ada_inferior_data_cleanup); 13842 ada_pspace_data_handle 13843 = register_program_space_data_with_cleanup (NULL, ada_pspace_data_cleanup); 13844 } 13845