1 /* Ada language support routines for GDB, the GNU debugger. Copyright
2 1992, 1993, 1994, 1997, 1998, 1999, 2000, 2003, 2004.
3 Free Software Foundation, Inc.
5 This file is part of GDB.
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 2 of the License, or
10 (at your option) any later version.
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.
17 You should have received a copy of the GNU General Public License
18 along with this program; if not, write to the Free Software
19 Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
22 /* Sections of code marked
28 indicate sections that are used in sources distributed by
29 ACT, Inc., but not yet integrated into the public tree (where
30 GNAT_GDB is not defined). They are retained here nevertheless
31 to minimize the problems of maintaining different versions
32 of the source and to make the full source available. */
36 #include "gdb_string.h"
40 #include "gdb_regex.h"
45 #include "expression.h"
46 #include "parser-defs.h"
52 #include "breakpoint.h"
55 #include "gdb_obstack.h"
57 #include "completer.h"
64 #include "dictionary.h"
66 #ifndef ADA_RETAIN_DOTS
67 #define ADA_RETAIN_DOTS 0
70 /* Define whether or not the C operator '/' truncates towards zero for
71 differently signed operands (truncation direction is undefined in C).
72 Copied from valarith.c. */
74 #ifndef TRUNCATION_TOWARDS_ZERO
75 #define TRUNCATION_TOWARDS_ZERO ((-5 / 2) == -2)
79 /* A structure that contains a vector of strings.
80 The main purpose of this type is to group the vector and its
81 associated parameters in one structure. This makes it easier
82 to handle and pass around. */
86 char **array; /* The vector itself. */
87 int index; /* Index of the next available element in the array. */
88 size_t size; /* The number of entries allocated in the array. */
91 static struct string_vector xnew_string_vector (int initial_size);
92 static void string_vector_append (struct string_vector *sv, char *str);
95 static const char *ada_unqualified_name (const char *decoded_name);
96 static char *add_angle_brackets (const char *str);
97 static void extract_string (CORE_ADDR addr, char *buf);
98 static char *function_name_from_pc (CORE_ADDR pc);
100 static struct type *ada_create_fundamental_type (struct objfile *, int);
102 static void modify_general_field (char *, LONGEST, int, int);
104 static struct type *desc_base_type (struct type *);
106 static struct type *desc_bounds_type (struct type *);
108 static struct value *desc_bounds (struct value *);
110 static int fat_pntr_bounds_bitpos (struct type *);
112 static int fat_pntr_bounds_bitsize (struct type *);
114 static struct type *desc_data_type (struct type *);
116 static struct value *desc_data (struct value *);
118 static int fat_pntr_data_bitpos (struct type *);
120 static int fat_pntr_data_bitsize (struct type *);
122 static struct value *desc_one_bound (struct value *, int, int);
124 static int desc_bound_bitpos (struct type *, int, int);
126 static int desc_bound_bitsize (struct type *, int, int);
128 static struct type *desc_index_type (struct type *, int);
130 static int desc_arity (struct type *);
132 static int ada_type_match (struct type *, struct type *, int);
134 static int ada_args_match (struct symbol *, struct value **, int);
136 static struct value *ensure_lval (struct value *, CORE_ADDR *);
138 static struct value *convert_actual (struct value *, struct type *,
141 static struct value *make_array_descriptor (struct type *, struct value *,
144 static void ada_add_block_symbols (struct obstack *,
145 struct block *, const char *,
146 domain_enum, struct objfile *,
147 struct symtab *, int);
149 static int is_nonfunction (struct ada_symbol_info *, int);
151 static void add_defn_to_vec (struct obstack *, struct symbol *,
152 struct block *, struct symtab *);
154 static int num_defns_collected (struct obstack *);
156 static struct ada_symbol_info *defns_collected (struct obstack *, int);
158 static struct partial_symbol *ada_lookup_partial_symbol (struct partial_symtab
159 *, const char *, int,
162 static struct symtab *symtab_for_sym (struct symbol *);
164 static struct value *resolve_subexp (struct expression **, int *, int,
167 static void replace_operator_with_call (struct expression **, int, int, int,
168 struct symbol *, struct block *);
170 static int possible_user_operator_p (enum exp_opcode, struct value **);
172 static char *ada_op_name (enum exp_opcode);
174 static const char *ada_decoded_op_name (enum exp_opcode);
176 static int numeric_type_p (struct type *);
178 static int integer_type_p (struct type *);
180 static int scalar_type_p (struct type *);
182 static int discrete_type_p (struct type *);
184 static struct type *ada_lookup_struct_elt_type (struct type *, char *,
187 static char *extended_canonical_line_spec (struct symtab_and_line,
190 static struct value *evaluate_subexp (struct type *, struct expression *,
193 static struct value *evaluate_subexp_type (struct expression *, int *);
195 static struct type *ada_create_fundamental_type (struct objfile *, int);
197 static int is_dynamic_field (struct type *, int);
199 static struct type *to_fixed_variant_branch_type (struct type *, char *,
200 CORE_ADDR, struct value *);
202 static struct type *to_fixed_array_type (struct type *, struct value *, int);
204 static struct type *to_fixed_range_type (char *, struct value *,
207 static struct type *to_static_fixed_type (struct type *);
209 static struct value *unwrap_value (struct value *);
211 static struct type *packed_array_type (struct type *, long *);
213 static struct type *decode_packed_array_type (struct type *);
215 static struct value *decode_packed_array (struct value *);
217 static struct value *value_subscript_packed (struct value *, int,
220 static struct value *coerce_unspec_val_to_type (struct value *,
223 static struct value *get_var_value (char *, char *);
225 static int lesseq_defined_than (struct symbol *, struct symbol *);
227 static int equiv_types (struct type *, struct type *);
229 static int is_name_suffix (const char *);
231 static int wild_match (const char *, int, const char *);
233 static struct symtabs_and_lines
234 find_sal_from_funcs_and_line (const char *, int,
235 struct ada_symbol_info *, int);
237 static int find_line_in_linetable (struct linetable *, int,
238 struct ada_symbol_info *, int, int *);
240 static int find_next_line_in_linetable (struct linetable *, int, int, int);
242 static void read_all_symtabs (const char *);
244 static int is_plausible_func_for_line (struct symbol *, int);
246 static struct value *ada_coerce_ref (struct value *);
248 static LONGEST pos_atr (struct value *);
250 static struct value *value_pos_atr (struct value *);
252 static struct value *value_val_atr (struct type *, struct value *);
254 static struct symbol *standard_lookup (const char *, const struct block *,
257 static struct value *ada_search_struct_field (char *, struct value *, int,
260 static struct value *ada_value_primitive_field (struct value *, int, int,
263 static int find_struct_field (char *, struct type *, int,
264 struct type **, int *, int *, int *);
266 static struct value *ada_to_fixed_value_create (struct type *, CORE_ADDR,
269 static struct value *ada_to_fixed_value (struct value *);
271 static void adjust_pc_past_prologue (CORE_ADDR *);
273 static int ada_resolve_function (struct ada_symbol_info *, int,
274 struct value **, int, const char *,
277 static struct value *ada_coerce_to_simple_array (struct value *);
279 static int ada_is_direct_array_type (struct type *);
281 static void error_breakpoint_runtime_sym_not_found (const char *err_desc);
283 static int is_runtime_sym_defined (const char *name, int allow_tramp);
287 /* Maximum-sized dynamic type. */
288 static unsigned int varsize_limit;
290 /* FIXME: brobecker/2003-09-17: No longer a const because it is
291 returned by a function that does not return a const char *. */
292 static char *ada_completer_word_break_characters =
294 " \t\n!@#%^&*()+=|~`}{[]\";:?/,-";
296 " \t\n!@#$%^&*()+=|~`}{[]\";:?/,-";
299 /* The name of the symbol to use to get the name of the main subprogram. */
300 static const char ADA_MAIN_PROGRAM_SYMBOL_NAME[]
301 = "__gnat_ada_main_program_name";
303 /* The name of the runtime function called when an exception is raised. */
304 static const char raise_sym_name[] = "__gnat_raise_nodefer_with_msg";
306 /* The name of the runtime function called when an unhandled exception
308 static const char raise_unhandled_sym_name[] = "__gnat_unhandled_exception";
310 /* The name of the runtime function called when an assert failure is
312 static const char raise_assert_sym_name[] =
313 "system__assertions__raise_assert_failure";
315 /* When GDB stops on an unhandled exception, GDB will go up the stack until
316 if finds a frame corresponding to this function, in order to extract the
317 name of the exception that has been raised from one of the parameters. */
318 static const char process_raise_exception_name[] =
319 "ada__exceptions__process_raise_exception";
321 /* A string that reflects the longest exception expression rewrite,
322 aside from the exception name. */
323 static const char longest_exception_template[] =
324 "'__gnat_raise_nodefer_with_msg' if long_integer(e) = long_integer(&)";
326 /* Limit on the number of warnings to raise per expression evaluation. */
327 static int warning_limit = 2;
329 /* Number of warning messages issued; reset to 0 by cleanups after
330 expression evaluation. */
331 static int warnings_issued = 0;
333 static const char *known_runtime_file_name_patterns[] = {
334 ADA_KNOWN_RUNTIME_FILE_NAME_PATTERNS NULL
337 static const char *known_auxiliary_function_name_patterns[] = {
338 ADA_KNOWN_AUXILIARY_FUNCTION_NAME_PATTERNS NULL
341 /* Space for allocating results of ada_lookup_symbol_list. */
342 static struct obstack symbol_list_obstack;
348 /* Create a new empty string_vector struct with an initial size of
351 static struct string_vector
352 xnew_string_vector (int initial_size)
354 struct string_vector result;
356 result.array = (char **) xmalloc ((initial_size + 1) * sizeof (char *));
358 result.size = initial_size;
363 /* Add STR at the end of the given string vector SV. If SV is already
364 full, its size is automatically increased (doubled). */
367 string_vector_append (struct string_vector *sv, char *str)
369 if (sv->index >= sv->size)
370 GROW_VECT (sv->array, sv->size, sv->size * 2);
372 sv->array[sv->index] = str;
376 /* Given DECODED_NAME a string holding a symbol name in its
377 decoded form (ie using the Ada dotted notation), returns
378 its unqualified name. */
381 ada_unqualified_name (const char *decoded_name)
383 const char *result = strrchr (decoded_name, '.');
386 result++; /* Skip the dot... */
388 result = decoded_name;
393 /* Return a string starting with '<', followed by STR, and '>'.
394 The result is good until the next call. */
397 add_angle_brackets (const char *str)
399 static char *result = NULL;
402 result = (char *) xmalloc ((strlen (str) + 3) * sizeof (char));
404 sprintf (result, "<%s>", str);
408 #endif /* GNAT_GDB */
411 ada_get_gdb_completer_word_break_characters (void)
413 return ada_completer_word_break_characters;
416 /* Read the string located at ADDR from the inferior and store the
420 extract_string (CORE_ADDR addr, char *buf)
424 /* Loop, reading one byte at a time, until we reach the '\000'
425 end-of-string marker. */
428 target_read_memory (addr + char_index * sizeof (char),
429 buf + char_index * sizeof (char), sizeof (char));
432 while (buf[char_index - 1] != '\000');
435 /* Return the name of the function owning the instruction located at PC.
436 Return NULL if no such function could be found. */
439 function_name_from_pc (CORE_ADDR pc)
443 if (!find_pc_partial_function (pc, &func_name, NULL, NULL))
449 /* Assuming *OLD_VECT points to an array of *SIZE objects of size
450 ELEMENT_SIZE, grow it to contain at least MIN_SIZE objects,
451 updating *OLD_VECT and *SIZE as necessary. */
454 grow_vect (void **old_vect, size_t * size, size_t min_size, int element_size)
456 if (*size < min_size)
459 if (*size < min_size)
461 *old_vect = xrealloc (*old_vect, *size * element_size);
465 /* True (non-zero) iff TARGET matches FIELD_NAME up to any trailing
466 suffix of FIELD_NAME beginning "___". */
469 field_name_match (const char *field_name, const char *target)
471 int len = strlen (target);
473 (strncmp (field_name, target, len) == 0
474 && (field_name[len] == '\0'
475 || (strncmp (field_name + len, "___", 3) == 0
476 && strcmp (field_name + strlen (field_name) - 6,
481 /* Assuming TYPE is a TYPE_CODE_STRUCT, find the field whose name matches
482 FIELD_NAME, and return its index. This function also handles fields
483 whose name have ___ suffixes because the compiler sometimes alters
484 their name by adding such a suffix to represent fields with certain
485 constraints. If the field could not be found, return a negative
486 number if MAYBE_MISSING is set. Otherwise raise an error. */
489 ada_get_field_index (const struct type *type, const char *field_name,
493 for (fieldno = 0; fieldno < TYPE_NFIELDS (type); fieldno++)
494 if (field_name_match (TYPE_FIELD_NAME (type, fieldno), field_name))
498 error ("Unable to find field %s in struct %s. Aborting",
499 field_name, TYPE_NAME (type));
504 /* The length of the prefix of NAME prior to any "___" suffix. */
507 ada_name_prefix_len (const char *name)
513 const char *p = strstr (name, "___");
515 return strlen (name);
521 /* Return non-zero if SUFFIX is a suffix of STR.
522 Return zero if STR is null. */
525 is_suffix (const char *str, const char *suffix)
531 len2 = strlen (suffix);
532 return (len1 >= len2 && strcmp (str + len1 - len2, suffix) == 0);
535 /* Create a value of type TYPE whose contents come from VALADDR, if it
536 is non-null, and whose memory address (in the inferior) is
540 value_from_contents_and_address (struct type *type, char *valaddr,
543 struct value *v = allocate_value (type);
547 memcpy (VALUE_CONTENTS_RAW (v), valaddr, TYPE_LENGTH (type));
548 VALUE_ADDRESS (v) = address;
550 VALUE_LVAL (v) = lval_memory;
554 /* The contents of value VAL, treated as a value of type TYPE. The
555 result is an lval in memory if VAL is. */
557 static struct value *
558 coerce_unspec_val_to_type (struct value *val, struct type *type)
560 CHECK_TYPEDEF (type);
561 if (VALUE_TYPE (val) == type)
565 struct value *result;
567 /* Make sure that the object size is not unreasonable before
568 trying to allocate some memory for it. */
569 if (TYPE_LENGTH (type) > varsize_limit)
570 error ("object size is larger than varsize-limit");
572 result = allocate_value (type);
573 VALUE_LVAL (result) = VALUE_LVAL (val);
574 VALUE_BITSIZE (result) = VALUE_BITSIZE (val);
575 VALUE_BITPOS (result) = VALUE_BITPOS (val);
576 VALUE_ADDRESS (result) = VALUE_ADDRESS (val) + VALUE_OFFSET (val);
578 || TYPE_LENGTH (type) > TYPE_LENGTH (VALUE_TYPE (val)))
579 VALUE_LAZY (result) = 1;
581 memcpy (VALUE_CONTENTS_RAW (result), VALUE_CONTENTS (val),
588 cond_offset_host (char *valaddr, long offset)
593 return valaddr + offset;
597 cond_offset_target (CORE_ADDR address, long offset)
602 return address + offset;
605 /* Issue a warning (as for the definition of warning in utils.c, but
606 with exactly one argument rather than ...), unless the limit on the
607 number of warnings has passed during the evaluation of the current
610 lim_warning (const char *format, long arg)
612 warnings_issued += 1;
613 if (warnings_issued <= warning_limit)
614 warning (format, arg);
618 ada_translate_error_message (const char *string)
620 if (strcmp (string, "Invalid cast.") == 0)
621 return "Invalid type conversion.";
626 /* Note: would have used MAX_OF_TYPE and MIN_OF_TYPE macros from
627 gdbtypes.h, but some of the necessary definitions in that file
628 seem to have gone missing. */
630 /* Maximum value of a SIZE-byte signed integer type. */
632 max_of_size (int size)
634 LONGEST top_bit = (LONGEST) 1 << (size * 8 - 2);
635 return top_bit | (top_bit - 1);
638 /* Minimum value of a SIZE-byte signed integer type. */
640 min_of_size (int size)
642 return -max_of_size (size) - 1;
645 /* Maximum value of a SIZE-byte unsigned integer type. */
647 umax_of_size (int size)
649 ULONGEST top_bit = (ULONGEST) 1 << (size * 8 - 1);
650 return top_bit | (top_bit - 1);
653 /* Maximum value of integral type T, as a signed quantity. */
655 max_of_type (struct type *t)
657 if (TYPE_UNSIGNED (t))
658 return (LONGEST) umax_of_size (TYPE_LENGTH (t));
660 return max_of_size (TYPE_LENGTH (t));
663 /* Minimum value of integral type T, as a signed quantity. */
665 min_of_type (struct type *t)
667 if (TYPE_UNSIGNED (t))
670 return min_of_size (TYPE_LENGTH (t));
673 /* The largest value in the domain of TYPE, a discrete type, as an integer. */
674 static struct value *
675 discrete_type_high_bound (struct type *type)
677 switch (TYPE_CODE (type))
679 case TYPE_CODE_RANGE:
680 return value_from_longest (TYPE_TARGET_TYPE (type),
681 TYPE_HIGH_BOUND (type));
684 value_from_longest (type,
685 TYPE_FIELD_BITPOS (type,
686 TYPE_NFIELDS (type) - 1));
688 return value_from_longest (type, max_of_type (type));
690 error ("Unexpected type in discrete_type_high_bound.");
694 /* The largest value in the domain of TYPE, a discrete type, as an integer. */
695 static struct value *
696 discrete_type_low_bound (struct type *type)
698 switch (TYPE_CODE (type))
700 case TYPE_CODE_RANGE:
701 return value_from_longest (TYPE_TARGET_TYPE (type),
702 TYPE_LOW_BOUND (type));
704 return value_from_longest (type, TYPE_FIELD_BITPOS (type, 0));
706 return value_from_longest (type, min_of_type (type));
708 error ("Unexpected type in discrete_type_low_bound.");
712 /* The identity on non-range types. For range types, the underlying
713 non-range scalar type. */
716 base_type (struct type *type)
718 while (type != NULL && TYPE_CODE (type) == TYPE_CODE_RANGE)
720 if (type == TYPE_TARGET_TYPE (type) || TYPE_TARGET_TYPE (type) == NULL)
722 type = TYPE_TARGET_TYPE (type);
728 /* Language Selection */
730 /* If the main program is in Ada, return language_ada, otherwise return LANG
731 (the main program is in Ada iif the adainit symbol is found).
733 MAIN_PST is not used. */
736 ada_update_initial_language (enum language lang,
737 struct partial_symtab *main_pst)
739 if (lookup_minimal_symbol ("adainit", (const char *) NULL,
740 (struct objfile *) NULL) != NULL)
746 /* If the main procedure is written in Ada, then return its name.
747 The result is good until the next call. Return NULL if the main
748 procedure doesn't appear to be in Ada. */
753 struct minimal_symbol *msym;
754 CORE_ADDR main_program_name_addr;
755 static char main_program_name[1024];
756 /* For Ada, the name of the main procedure is stored in a specific
757 string constant, generated by the binder. Look for that symbol,
758 extract its address, and then read that string. If we didn't find
759 that string, then most probably the main procedure is not written
761 msym = lookup_minimal_symbol (ADA_MAIN_PROGRAM_SYMBOL_NAME, NULL, NULL);
765 main_program_name_addr = SYMBOL_VALUE_ADDRESS (msym);
766 if (main_program_name_addr == 0)
767 error ("Invalid address for Ada main program name.");
769 extract_string (main_program_name_addr, main_program_name);
770 return main_program_name;
773 /* The main procedure doesn't seem to be in Ada. */
779 /* Table of Ada operators and their GNAT-encoded names. Last entry is pair
782 const struct ada_opname_map ada_opname_table[] = {
783 {"Oadd", "\"+\"", BINOP_ADD},
784 {"Osubtract", "\"-\"", BINOP_SUB},
785 {"Omultiply", "\"*\"", BINOP_MUL},
786 {"Odivide", "\"/\"", BINOP_DIV},
787 {"Omod", "\"mod\"", BINOP_MOD},
788 {"Orem", "\"rem\"", BINOP_REM},
789 {"Oexpon", "\"**\"", BINOP_EXP},
790 {"Olt", "\"<\"", BINOP_LESS},
791 {"Ole", "\"<=\"", BINOP_LEQ},
792 {"Ogt", "\">\"", BINOP_GTR},
793 {"Oge", "\">=\"", BINOP_GEQ},
794 {"Oeq", "\"=\"", BINOP_EQUAL},
795 {"One", "\"/=\"", BINOP_NOTEQUAL},
796 {"Oand", "\"and\"", BINOP_BITWISE_AND},
797 {"Oor", "\"or\"", BINOP_BITWISE_IOR},
798 {"Oxor", "\"xor\"", BINOP_BITWISE_XOR},
799 {"Oconcat", "\"&\"", BINOP_CONCAT},
800 {"Oabs", "\"abs\"", UNOP_ABS},
801 {"Onot", "\"not\"", UNOP_LOGICAL_NOT},
802 {"Oadd", "\"+\"", UNOP_PLUS},
803 {"Osubtract", "\"-\"", UNOP_NEG},
807 /* Return non-zero if STR should be suppressed in info listings. */
810 is_suppressed_name (const char *str)
812 if (strncmp (str, "_ada_", 5) == 0)
814 if (str[0] == '_' || str[0] == '\000')
819 const char *suffix = strstr (str, "___");
820 if (suffix != NULL && suffix[3] != 'X')
823 suffix = str + strlen (str);
824 for (p = suffix - 1; p != str; p -= 1)
828 if (p[0] == 'X' && p[-1] != '_')
832 for (i = 0; ada_opname_table[i].encoded != NULL; i += 1)
833 if (strncmp (ada_opname_table[i].encoded, p,
834 strlen (ada_opname_table[i].encoded)) == 0)
843 /* The "encoded" form of DECODED, according to GNAT conventions.
844 The result is valid until the next call to ada_encode. */
847 ada_encode (const char *decoded)
849 static char *encoding_buffer = NULL;
850 static size_t encoding_buffer_size = 0;
857 GROW_VECT (encoding_buffer, encoding_buffer_size,
858 2 * strlen (decoded) + 10);
861 for (p = decoded; *p != '\0'; p += 1)
863 if (!ADA_RETAIN_DOTS && *p == '.')
865 encoding_buffer[k] = encoding_buffer[k + 1] = '_';
870 const struct ada_opname_map *mapping;
872 for (mapping = ada_opname_table;
873 mapping->encoded != NULL
874 && strncmp (mapping->decoded, p,
875 strlen (mapping->decoded)) != 0; mapping += 1)
877 if (mapping->encoded == NULL)
878 error ("invalid Ada operator name: %s", p);
879 strcpy (encoding_buffer + k, mapping->encoded);
880 k += strlen (mapping->encoded);
885 encoding_buffer[k] = *p;
890 encoding_buffer[k] = '\0';
891 return encoding_buffer;
894 /* Return NAME folded to lower case, or, if surrounded by single
895 quotes, unfolded, but with the quotes stripped away. Result good
899 ada_fold_name (const char *name)
901 static char *fold_buffer = NULL;
902 static size_t fold_buffer_size = 0;
904 int len = strlen (name);
905 GROW_VECT (fold_buffer, fold_buffer_size, len + 1);
909 strncpy (fold_buffer, name + 1, len - 2);
910 fold_buffer[len - 2] = '\000';
915 for (i = 0; i <= len; i += 1)
916 fold_buffer[i] = tolower (name[i]);
923 0. Discard trailing .{DIGIT}+ or trailing ___{DIGIT}+
924 These are suffixes introduced by GNAT5 to nested subprogram
925 names, and do not serve any purpose for the debugger.
926 1. Discard final __{DIGIT}+ or $({DIGIT}+(__{DIGIT}+)*)
927 2. Convert other instances of embedded "__" to `.'.
928 3. Discard leading _ada_.
929 4. Convert operator names to the appropriate quoted symbols.
930 5. Remove everything after first ___ if it is followed by
932 6. Replace TK__ with __, and a trailing B or TKB with nothing.
933 7. Put symbols that should be suppressed in <...> brackets.
934 8. Remove trailing X[bn]* suffix (indicating names in package bodies).
936 The resulting string is valid until the next call of ada_decode.
937 If the string is unchanged by demangling, the original string pointer
941 ada_decode (const char *encoded)
948 static char *decoding_buffer = NULL;
949 static size_t decoding_buffer_size = 0;
951 if (strncmp (encoded, "_ada_", 5) == 0)
954 if (encoded[0] == '_' || encoded[0] == '<')
957 /* Remove trailing .{DIGIT}+ or ___{DIGIT}+. */
958 len0 = strlen (encoded);
959 if (len0 > 1 && isdigit (encoded[len0 - 1]))
962 while (i > 0 && isdigit (encoded[i]))
964 if (i >= 0 && encoded[i] == '.')
966 else if (i >= 2 && strncmp (encoded + i - 2, "___", 3) == 0)
970 /* Remove the ___X.* suffix if present. Do not forget to verify that
971 the suffix is located before the current "end" of ENCODED. We want
972 to avoid re-matching parts of ENCODED that have previously been
973 marked as discarded (by decrementing LEN0). */
974 p = strstr (encoded, "___");
975 if (p != NULL && p - encoded < len0 - 3)
983 if (len0 > 3 && strncmp (encoded + len0 - 3, "TKB", 3) == 0)
986 if (len0 > 1 && strncmp (encoded + len0 - 1, "B", 1) == 0)
989 /* Make decoded big enough for possible expansion by operator name. */
990 GROW_VECT (decoding_buffer, decoding_buffer_size, 2 * len0 + 1);
991 decoded = decoding_buffer;
993 if (len0 > 1 && isdigit (encoded[len0 - 1]))
996 while ((i >= 0 && isdigit (encoded[i]))
997 || (i >= 1 && encoded[i] == '_' && isdigit (encoded[i - 1])))
999 if (i > 1 && encoded[i] == '_' && encoded[i - 1] == '_')
1001 else if (encoded[i] == '$')
1005 for (i = 0, j = 0; i < len0 && !isalpha (encoded[i]); i += 1, j += 1)
1006 decoded[j] = encoded[i];
1011 if (at_start_name && encoded[i] == 'O')
1014 for (k = 0; ada_opname_table[k].encoded != NULL; k += 1)
1016 int op_len = strlen (ada_opname_table[k].encoded);
1017 if ((strncmp (ada_opname_table[k].encoded + 1, encoded + i + 1,
1019 && !isalnum (encoded[i + op_len]))
1021 strcpy (decoded + j, ada_opname_table[k].decoded);
1024 j += strlen (ada_opname_table[k].decoded);
1028 if (ada_opname_table[k].encoded != NULL)
1033 if (i < len0 - 4 && strncmp (encoded + i, "TK__", 4) == 0)
1035 if (encoded[i] == 'X' && i != 0 && isalnum (encoded[i - 1]))
1039 while (i < len0 && (encoded[i] == 'b' || encoded[i] == 'n'));
1043 else if (!ADA_RETAIN_DOTS
1044 && i < len0 - 2 && encoded[i] == '_' && encoded[i + 1] == '_')
1053 decoded[j] = encoded[i];
1058 decoded[j] = '\000';
1060 for (i = 0; decoded[i] != '\0'; i += 1)
1061 if (isupper (decoded[i]) || decoded[i] == ' ')
1064 if (strcmp (decoded, encoded) == 0)
1070 GROW_VECT (decoding_buffer, decoding_buffer_size, strlen (encoded) + 3);
1071 decoded = decoding_buffer;
1072 if (encoded[0] == '<')
1073 strcpy (decoded, encoded);
1075 sprintf (decoded, "<%s>", encoded);
1080 /* Table for keeping permanent unique copies of decoded names. Once
1081 allocated, names in this table are never released. While this is a
1082 storage leak, it should not be significant unless there are massive
1083 changes in the set of decoded names in successive versions of a
1084 symbol table loaded during a single session. */
1085 static struct htab *decoded_names_store;
1087 /* Returns the decoded name of GSYMBOL, as for ada_decode, caching it
1088 in the language-specific part of GSYMBOL, if it has not been
1089 previously computed. Tries to save the decoded name in the same
1090 obstack as GSYMBOL, if possible, and otherwise on the heap (so that,
1091 in any case, the decoded symbol has a lifetime at least that of
1093 The GSYMBOL parameter is "mutable" in the C++ sense: logically
1094 const, but nevertheless modified to a semantically equivalent form
1095 when a decoded name is cached in it.
1099 ada_decode_symbol (const struct general_symbol_info *gsymbol)
1102 (char **) &gsymbol->language_specific.cplus_specific.demangled_name;
1103 if (*resultp == NULL)
1105 const char *decoded = ada_decode (gsymbol->name);
1106 if (gsymbol->bfd_section != NULL)
1108 bfd *obfd = gsymbol->bfd_section->owner;
1111 struct objfile *objf;
1114 if (obfd == objf->obfd)
1116 *resultp = obsavestring (decoded, strlen (decoded),
1117 &objf->objfile_obstack);
1123 /* Sometimes, we can't find a corresponding objfile, in which
1124 case, we put the result on the heap. Since we only decode
1125 when needed, we hope this usually does not cause a
1126 significant memory leak (FIXME). */
1127 if (*resultp == NULL)
1129 char **slot = (char **) htab_find_slot (decoded_names_store,
1132 *slot = xstrdup (decoded);
1141 ada_la_decode (const char *encoded, int options)
1143 return xstrdup (ada_decode (encoded));
1146 /* Returns non-zero iff SYM_NAME matches NAME, ignoring any trailing
1147 suffixes that encode debugging information or leading _ada_ on
1148 SYM_NAME (see is_name_suffix commentary for the debugging
1149 information that is ignored). If WILD, then NAME need only match a
1150 suffix of SYM_NAME minus the same suffixes. Also returns 0 if
1151 either argument is NULL. */
1154 ada_match_name (const char *sym_name, const char *name, int wild)
1156 if (sym_name == NULL || name == NULL)
1159 return wild_match (name, strlen (name), sym_name);
1162 int len_name = strlen (name);
1163 return (strncmp (sym_name, name, len_name) == 0
1164 && is_name_suffix (sym_name + len_name))
1165 || (strncmp (sym_name, "_ada_", 5) == 0
1166 && strncmp (sym_name + 5, name, len_name) == 0
1167 && is_name_suffix (sym_name + len_name + 5));
1171 /* True (non-zero) iff, in Ada mode, the symbol SYM should be
1172 suppressed in info listings. */
1175 ada_suppress_symbol_printing (struct symbol *sym)
1177 if (SYMBOL_DOMAIN (sym) == STRUCT_DOMAIN)
1180 return is_suppressed_name (SYMBOL_LINKAGE_NAME (sym));
1186 /* Names of MAX_ADA_DIMENS bounds in P_BOUNDS fields of array descriptors. */
1188 static char *bound_name[] = {
1189 "LB0", "UB0", "LB1", "UB1", "LB2", "UB2", "LB3", "UB3",
1190 "LB4", "UB4", "LB5", "UB5", "LB6", "UB6", "LB7", "UB7"
1193 /* Maximum number of array dimensions we are prepared to handle. */
1195 #define MAX_ADA_DIMENS (sizeof(bound_name) / (2*sizeof(char *)))
1197 /* Like modify_field, but allows bitpos > wordlength. */
1200 modify_general_field (char *addr, LONGEST fieldval, int bitpos, int bitsize)
1202 modify_field (addr + bitpos / 8, fieldval, bitpos % 8, bitsize);
1206 /* The desc_* routines return primitive portions of array descriptors
1209 /* The descriptor or array type, if any, indicated by TYPE; removes
1210 level of indirection, if needed. */
1212 static struct type *
1213 desc_base_type (struct type *type)
1217 CHECK_TYPEDEF (type);
1219 && (TYPE_CODE (type) == TYPE_CODE_PTR
1220 || TYPE_CODE (type) == TYPE_CODE_REF))
1221 return check_typedef (TYPE_TARGET_TYPE (type));
1226 /* True iff TYPE indicates a "thin" array pointer type. */
1229 is_thin_pntr (struct type *type)
1232 is_suffix (ada_type_name (desc_base_type (type)), "___XUT")
1233 || is_suffix (ada_type_name (desc_base_type (type)), "___XUT___XVE");
1236 /* The descriptor type for thin pointer type TYPE. */
1238 static struct type *
1239 thin_descriptor_type (struct type *type)
1241 struct type *base_type = desc_base_type (type);
1242 if (base_type == NULL)
1244 if (is_suffix (ada_type_name (base_type), "___XVE"))
1248 struct type *alt_type = ada_find_parallel_type (base_type, "___XVE");
1249 if (alt_type == NULL)
1256 /* A pointer to the array data for thin-pointer value VAL. */
1258 static struct value *
1259 thin_data_pntr (struct value *val)
1261 struct type *type = VALUE_TYPE (val);
1262 if (TYPE_CODE (type) == TYPE_CODE_PTR)
1263 return value_cast (desc_data_type (thin_descriptor_type (type)),
1266 return value_from_longest (desc_data_type (thin_descriptor_type (type)),
1267 VALUE_ADDRESS (val) + VALUE_OFFSET (val));
1270 /* True iff TYPE indicates a "thick" array pointer type. */
1273 is_thick_pntr (struct type *type)
1275 type = desc_base_type (type);
1276 return (type != NULL && TYPE_CODE (type) == TYPE_CODE_STRUCT
1277 && lookup_struct_elt_type (type, "P_BOUNDS", 1) != NULL);
1280 /* If TYPE is the type of an array descriptor (fat or thin pointer) or a
1281 pointer to one, the type of its bounds data; otherwise, NULL. */
1283 static struct type *
1284 desc_bounds_type (struct type *type)
1288 type = desc_base_type (type);
1292 else if (is_thin_pntr (type))
1294 type = thin_descriptor_type (type);
1297 r = lookup_struct_elt_type (type, "BOUNDS", 1);
1299 return check_typedef (r);
1301 else if (TYPE_CODE (type) == TYPE_CODE_STRUCT)
1303 r = lookup_struct_elt_type (type, "P_BOUNDS", 1);
1305 return check_typedef (TYPE_TARGET_TYPE (check_typedef (r)));
1310 /* If ARR is an array descriptor (fat or thin pointer), or pointer to
1311 one, a pointer to its bounds data. Otherwise NULL. */
1313 static struct value *
1314 desc_bounds (struct value *arr)
1316 struct type *type = check_typedef (VALUE_TYPE (arr));
1317 if (is_thin_pntr (type))
1319 struct type *bounds_type =
1320 desc_bounds_type (thin_descriptor_type (type));
1323 if (desc_bounds_type == NULL)
1324 error ("Bad GNAT array descriptor");
1326 /* NOTE: The following calculation is not really kosher, but
1327 since desc_type is an XVE-encoded type (and shouldn't be),
1328 the correct calculation is a real pain. FIXME (and fix GCC). */
1329 if (TYPE_CODE (type) == TYPE_CODE_PTR)
1330 addr = value_as_long (arr);
1332 addr = VALUE_ADDRESS (arr) + VALUE_OFFSET (arr);
1335 value_from_longest (lookup_pointer_type (bounds_type),
1336 addr - TYPE_LENGTH (bounds_type));
1339 else if (is_thick_pntr (type))
1340 return value_struct_elt (&arr, NULL, "P_BOUNDS", NULL,
1341 "Bad GNAT array descriptor");
1346 /* If TYPE is the type of an array-descriptor (fat pointer), the bit
1347 position of the field containing the address of the bounds data. */
1350 fat_pntr_bounds_bitpos (struct type *type)
1352 return TYPE_FIELD_BITPOS (desc_base_type (type), 1);
1355 /* If TYPE is the type of an array-descriptor (fat pointer), the bit
1356 size of the field containing the address of the bounds data. */
1359 fat_pntr_bounds_bitsize (struct type *type)
1361 type = desc_base_type (type);
1363 if (TYPE_FIELD_BITSIZE (type, 1) > 0)
1364 return TYPE_FIELD_BITSIZE (type, 1);
1366 return 8 * TYPE_LENGTH (check_typedef (TYPE_FIELD_TYPE (type, 1)));
1369 /* If TYPE is the type of an array descriptor (fat or thin pointer) or a
1370 pointer to one, the type of its array data (a
1371 pointer-to-array-with-no-bounds type); otherwise, NULL. Use
1372 ada_type_of_array to get an array type with bounds data. */
1374 static struct type *
1375 desc_data_type (struct type *type)
1377 type = desc_base_type (type);
1379 /* NOTE: The following is bogus; see comment in desc_bounds. */
1380 if (is_thin_pntr (type))
1381 return lookup_pointer_type
1382 (desc_base_type (TYPE_FIELD_TYPE (thin_descriptor_type (type), 1)));
1383 else if (is_thick_pntr (type))
1384 return lookup_struct_elt_type (type, "P_ARRAY", 1);
1389 /* If ARR is an array descriptor (fat or thin pointer), a pointer to
1392 static struct value *
1393 desc_data (struct value *arr)
1395 struct type *type = VALUE_TYPE (arr);
1396 if (is_thin_pntr (type))
1397 return thin_data_pntr (arr);
1398 else if (is_thick_pntr (type))
1399 return value_struct_elt (&arr, NULL, "P_ARRAY", NULL,
1400 "Bad GNAT array descriptor");
1406 /* If TYPE is the type of an array-descriptor (fat pointer), the bit
1407 position of the field containing the address of the data. */
1410 fat_pntr_data_bitpos (struct type *type)
1412 return TYPE_FIELD_BITPOS (desc_base_type (type), 0);
1415 /* If TYPE is the type of an array-descriptor (fat pointer), the bit
1416 size of the field containing the address of the data. */
1419 fat_pntr_data_bitsize (struct type *type)
1421 type = desc_base_type (type);
1423 if (TYPE_FIELD_BITSIZE (type, 0) > 0)
1424 return TYPE_FIELD_BITSIZE (type, 0);
1426 return TARGET_CHAR_BIT * TYPE_LENGTH (TYPE_FIELD_TYPE (type, 0));
1429 /* If BOUNDS is an array-bounds structure (or pointer to one), return
1430 the Ith lower bound stored in it, if WHICH is 0, and the Ith upper
1431 bound, if WHICH is 1. The first bound is I=1. */
1433 static struct value *
1434 desc_one_bound (struct value *bounds, int i, int which)
1436 return value_struct_elt (&bounds, NULL, bound_name[2 * i + which - 2], NULL,
1437 "Bad GNAT array descriptor bounds");
1440 /* If BOUNDS is an array-bounds structure type, return the bit position
1441 of the Ith lower bound stored in it, if WHICH is 0, and the Ith upper
1442 bound, if WHICH is 1. The first bound is I=1. */
1445 desc_bound_bitpos (struct type *type, int i, int which)
1447 return TYPE_FIELD_BITPOS (desc_base_type (type), 2 * i + which - 2);
1450 /* If BOUNDS is an array-bounds structure type, return the bit field size
1451 of the Ith lower bound stored in it, if WHICH is 0, and the Ith upper
1452 bound, if WHICH is 1. The first bound is I=1. */
1455 desc_bound_bitsize (struct type *type, int i, int which)
1457 type = desc_base_type (type);
1459 if (TYPE_FIELD_BITSIZE (type, 2 * i + which - 2) > 0)
1460 return TYPE_FIELD_BITSIZE (type, 2 * i + which - 2);
1462 return 8 * TYPE_LENGTH (TYPE_FIELD_TYPE (type, 2 * i + which - 2));
1465 /* If TYPE is the type of an array-bounds structure, the type of its
1466 Ith bound (numbering from 1). Otherwise, NULL. */
1468 static struct type *
1469 desc_index_type (struct type *type, int i)
1471 type = desc_base_type (type);
1473 if (TYPE_CODE (type) == TYPE_CODE_STRUCT)
1474 return lookup_struct_elt_type (type, bound_name[2 * i - 2], 1);
1479 /* The number of index positions in the array-bounds type TYPE.
1480 Return 0 if TYPE is NULL. */
1483 desc_arity (struct type *type)
1485 type = desc_base_type (type);
1488 return TYPE_NFIELDS (type) / 2;
1492 /* Non-zero iff TYPE is a simple array type (not a pointer to one) or
1493 an array descriptor type (representing an unconstrained array
1497 ada_is_direct_array_type (struct type *type)
1501 CHECK_TYPEDEF (type);
1502 return (TYPE_CODE (type) == TYPE_CODE_ARRAY
1503 || ada_is_array_descriptor_type (type));
1506 /* Non-zero iff TYPE is a simple array type or pointer to one. */
1509 ada_is_simple_array_type (struct type *type)
1513 CHECK_TYPEDEF (type);
1514 return (TYPE_CODE (type) == TYPE_CODE_ARRAY
1515 || (TYPE_CODE (type) == TYPE_CODE_PTR
1516 && TYPE_CODE (TYPE_TARGET_TYPE (type)) == TYPE_CODE_ARRAY));
1519 /* Non-zero iff TYPE belongs to a GNAT array descriptor. */
1522 ada_is_array_descriptor_type (struct type *type)
1524 struct type *data_type = desc_data_type (type);
1528 CHECK_TYPEDEF (type);
1531 && ((TYPE_CODE (data_type) == TYPE_CODE_PTR
1532 && TYPE_TARGET_TYPE (data_type) != NULL
1533 && TYPE_CODE (TYPE_TARGET_TYPE (data_type)) == TYPE_CODE_ARRAY)
1534 || TYPE_CODE (data_type) == TYPE_CODE_ARRAY)
1535 && desc_arity (desc_bounds_type (type)) > 0;
1538 /* Non-zero iff type is a partially mal-formed GNAT array
1539 descriptor. FIXME: This is to compensate for some problems with
1540 debugging output from GNAT. Re-examine periodically to see if it
1544 ada_is_bogus_array_descriptor (struct type *type)
1548 && TYPE_CODE (type) == TYPE_CODE_STRUCT
1549 && (lookup_struct_elt_type (type, "P_BOUNDS", 1) != NULL
1550 || lookup_struct_elt_type (type, "P_ARRAY", 1) != NULL)
1551 && !ada_is_array_descriptor_type (type);
1555 /* If ARR has a record type in the form of a standard GNAT array descriptor,
1556 (fat pointer) returns the type of the array data described---specifically,
1557 a pointer-to-array type. If BOUNDS is non-zero, the bounds data are filled
1558 in from the descriptor; otherwise, they are left unspecified. If
1559 the ARR denotes a null array descriptor and BOUNDS is non-zero,
1560 returns NULL. The result is simply the type of ARR if ARR is not
1563 ada_type_of_array (struct value *arr, int bounds)
1565 if (ada_is_packed_array_type (VALUE_TYPE (arr)))
1566 return decode_packed_array_type (VALUE_TYPE (arr));
1568 if (!ada_is_array_descriptor_type (VALUE_TYPE (arr)))
1569 return VALUE_TYPE (arr);
1573 check_typedef (TYPE_TARGET_TYPE (desc_data_type (VALUE_TYPE (arr))));
1576 struct type *elt_type;
1578 struct value *descriptor;
1579 struct objfile *objf = TYPE_OBJFILE (VALUE_TYPE (arr));
1581 elt_type = ada_array_element_type (VALUE_TYPE (arr), -1);
1582 arity = ada_array_arity (VALUE_TYPE (arr));
1584 if (elt_type == NULL || arity == 0)
1585 return check_typedef (VALUE_TYPE (arr));
1587 descriptor = desc_bounds (arr);
1588 if (value_as_long (descriptor) == 0)
1592 struct type *range_type = alloc_type (objf);
1593 struct type *array_type = alloc_type (objf);
1594 struct value *low = desc_one_bound (descriptor, arity, 0);
1595 struct value *high = desc_one_bound (descriptor, arity, 1);
1598 create_range_type (range_type, VALUE_TYPE (low),
1599 (int) value_as_long (low),
1600 (int) value_as_long (high));
1601 elt_type = create_array_type (array_type, elt_type, range_type);
1604 return lookup_pointer_type (elt_type);
1608 /* If ARR does not represent an array, returns ARR unchanged.
1609 Otherwise, returns either a standard GDB array with bounds set
1610 appropriately or, if ARR is a non-null fat pointer, a pointer to a standard
1611 GDB array. Returns NULL if ARR is a null fat pointer. */
1614 ada_coerce_to_simple_array_ptr (struct value *arr)
1616 if (ada_is_array_descriptor_type (VALUE_TYPE (arr)))
1618 struct type *arrType = ada_type_of_array (arr, 1);
1619 if (arrType == NULL)
1621 return value_cast (arrType, value_copy (desc_data (arr)));
1623 else if (ada_is_packed_array_type (VALUE_TYPE (arr)))
1624 return decode_packed_array (arr);
1629 /* If ARR does not represent an array, returns ARR unchanged.
1630 Otherwise, returns a standard GDB array describing ARR (which may
1631 be ARR itself if it already is in the proper form). */
1633 static struct value *
1634 ada_coerce_to_simple_array (struct value *arr)
1636 if (ada_is_array_descriptor_type (VALUE_TYPE (arr)))
1638 struct value *arrVal = ada_coerce_to_simple_array_ptr (arr);
1640 error ("Bounds unavailable for null array pointer.");
1641 return value_ind (arrVal);
1643 else if (ada_is_packed_array_type (VALUE_TYPE (arr)))
1644 return decode_packed_array (arr);
1649 /* If TYPE represents a GNAT array type, return it translated to an
1650 ordinary GDB array type (possibly with BITSIZE fields indicating
1651 packing). For other types, is the identity. */
1654 ada_coerce_to_simple_array_type (struct type *type)
1656 struct value *mark = value_mark ();
1657 struct value *dummy = value_from_longest (builtin_type_long, 0);
1658 struct type *result;
1659 VALUE_TYPE (dummy) = type;
1660 result = ada_type_of_array (dummy, 0);
1661 value_free_to_mark (mark);
1665 /* Non-zero iff TYPE represents a standard GNAT packed-array type. */
1668 ada_is_packed_array_type (struct type *type)
1672 type = desc_base_type (type);
1673 CHECK_TYPEDEF (type);
1675 ada_type_name (type) != NULL
1676 && strstr (ada_type_name (type), "___XP") != NULL;
1679 /* Given that TYPE is a standard GDB array type with all bounds filled
1680 in, and that the element size of its ultimate scalar constituents
1681 (that is, either its elements, or, if it is an array of arrays, its
1682 elements' elements, etc.) is *ELT_BITS, return an identical type,
1683 but with the bit sizes of its elements (and those of any
1684 constituent arrays) recorded in the BITSIZE components of its
1685 TYPE_FIELD_BITSIZE values, and with *ELT_BITS set to its total size
1688 static struct type *
1689 packed_array_type (struct type *type, long *elt_bits)
1691 struct type *new_elt_type;
1692 struct type *new_type;
1693 LONGEST low_bound, high_bound;
1695 CHECK_TYPEDEF (type);
1696 if (TYPE_CODE (type) != TYPE_CODE_ARRAY)
1699 new_type = alloc_type (TYPE_OBJFILE (type));
1700 new_elt_type = packed_array_type (check_typedef (TYPE_TARGET_TYPE (type)),
1702 create_array_type (new_type, new_elt_type, TYPE_FIELD_TYPE (type, 0));
1703 TYPE_FIELD_BITSIZE (new_type, 0) = *elt_bits;
1704 TYPE_NAME (new_type) = ada_type_name (type);
1706 if (get_discrete_bounds (TYPE_FIELD_TYPE (type, 0),
1707 &low_bound, &high_bound) < 0)
1708 low_bound = high_bound = 0;
1709 if (high_bound < low_bound)
1710 *elt_bits = TYPE_LENGTH (new_type) = 0;
1713 *elt_bits *= (high_bound - low_bound + 1);
1714 TYPE_LENGTH (new_type) =
1715 (*elt_bits + HOST_CHAR_BIT - 1) / HOST_CHAR_BIT;
1718 TYPE_FLAGS (new_type) |= TYPE_FLAG_FIXED_INSTANCE;
1722 /* The array type encoded by TYPE, where ada_is_packed_array_type (TYPE). */
1724 static struct type *
1725 decode_packed_array_type (struct type *type)
1728 struct block **blocks;
1729 const char *raw_name = ada_type_name (check_typedef (type));
1730 char *name = (char *) alloca (strlen (raw_name) + 1);
1731 char *tail = strstr (raw_name, "___XP");
1732 struct type *shadow_type;
1736 type = desc_base_type (type);
1738 memcpy (name, raw_name, tail - raw_name);
1739 name[tail - raw_name] = '\000';
1741 sym = standard_lookup (name, get_selected_block (0), VAR_DOMAIN);
1742 if (sym == NULL || SYMBOL_TYPE (sym) == NULL)
1744 lim_warning ("could not find bounds information on packed array", 0);
1747 shadow_type = SYMBOL_TYPE (sym);
1749 if (TYPE_CODE (shadow_type) != TYPE_CODE_ARRAY)
1751 lim_warning ("could not understand bounds information on packed array",
1756 if (sscanf (tail + sizeof ("___XP") - 1, "%ld", &bits) != 1)
1759 ("could not understand bit size information on packed array", 0);
1763 return packed_array_type (shadow_type, &bits);
1766 /* Given that ARR is a struct value *indicating a GNAT packed array,
1767 returns a simple array that denotes that array. Its type is a
1768 standard GDB array type except that the BITSIZEs of the array
1769 target types are set to the number of bits in each element, and the
1770 type length is set appropriately. */
1772 static struct value *
1773 decode_packed_array (struct value *arr)
1777 arr = ada_coerce_ref (arr);
1778 if (TYPE_CODE (VALUE_TYPE (arr)) == TYPE_CODE_PTR)
1779 arr = ada_value_ind (arr);
1781 type = decode_packed_array_type (VALUE_TYPE (arr));
1784 error ("can't unpack array");
1787 return coerce_unspec_val_to_type (arr, type);
1791 /* The value of the element of packed array ARR at the ARITY indices
1792 given in IND. ARR must be a simple array. */
1794 static struct value *
1795 value_subscript_packed (struct value *arr, int arity, struct value **ind)
1798 int bits, elt_off, bit_off;
1799 long elt_total_bit_offset;
1800 struct type *elt_type;
1804 elt_total_bit_offset = 0;
1805 elt_type = check_typedef (VALUE_TYPE (arr));
1806 for (i = 0; i < arity; i += 1)
1808 if (TYPE_CODE (elt_type) != TYPE_CODE_ARRAY
1809 || TYPE_FIELD_BITSIZE (elt_type, 0) == 0)
1811 ("attempt to do packed indexing of something other than a packed array");
1814 struct type *range_type = TYPE_INDEX_TYPE (elt_type);
1815 LONGEST lowerbound, upperbound;
1818 if (get_discrete_bounds (range_type, &lowerbound, &upperbound) < 0)
1820 lim_warning ("don't know bounds of array", 0);
1821 lowerbound = upperbound = 0;
1824 idx = value_as_long (value_pos_atr (ind[i]));
1825 if (idx < lowerbound || idx > upperbound)
1826 lim_warning ("packed array index %ld out of bounds", (long) idx);
1827 bits = TYPE_FIELD_BITSIZE (elt_type, 0);
1828 elt_total_bit_offset += (idx - lowerbound) * bits;
1829 elt_type = check_typedef (TYPE_TARGET_TYPE (elt_type));
1832 elt_off = elt_total_bit_offset / HOST_CHAR_BIT;
1833 bit_off = elt_total_bit_offset % HOST_CHAR_BIT;
1835 v = ada_value_primitive_packed_val (arr, NULL, elt_off, bit_off,
1837 if (VALUE_LVAL (arr) == lval_internalvar)
1838 VALUE_LVAL (v) = lval_internalvar_component;
1840 VALUE_LVAL (v) = VALUE_LVAL (arr);
1844 /* Non-zero iff TYPE includes negative integer values. */
1847 has_negatives (struct type *type)
1849 switch (TYPE_CODE (type))
1854 return !TYPE_UNSIGNED (type);
1855 case TYPE_CODE_RANGE:
1856 return TYPE_LOW_BOUND (type) < 0;
1861 /* Create a new value of type TYPE from the contents of OBJ starting
1862 at byte OFFSET, and bit offset BIT_OFFSET within that byte,
1863 proceeding for BIT_SIZE bits. If OBJ is an lval in memory, then
1864 assigning through the result will set the field fetched from.
1865 VALADDR is ignored unless OBJ is NULL, in which case,
1866 VALADDR+OFFSET must address the start of storage containing the
1867 packed value. The value returned in this case is never an lval.
1868 Assumes 0 <= BIT_OFFSET < HOST_CHAR_BIT. */
1871 ada_value_primitive_packed_val (struct value *obj, char *valaddr, long offset,
1872 int bit_offset, int bit_size,
1876 int src, /* Index into the source area */
1877 targ, /* Index into the target area */
1878 srcBitsLeft, /* Number of source bits left to move */
1879 nsrc, ntarg, /* Number of source and target bytes */
1880 unusedLS, /* Number of bits in next significant
1881 byte of source that are unused */
1882 accumSize; /* Number of meaningful bits in accum */
1883 unsigned char *bytes; /* First byte containing data to unpack */
1884 unsigned char *unpacked;
1885 unsigned long accum; /* Staging area for bits being transferred */
1887 int len = (bit_size + bit_offset + HOST_CHAR_BIT - 1) / 8;
1888 /* Transmit bytes from least to most significant; delta is the direction
1889 the indices move. */
1890 int delta = BITS_BIG_ENDIAN ? -1 : 1;
1892 CHECK_TYPEDEF (type);
1896 v = allocate_value (type);
1897 bytes = (unsigned char *) (valaddr + offset);
1899 else if (VALUE_LAZY (obj))
1902 VALUE_ADDRESS (obj) + VALUE_OFFSET (obj) + offset, NULL);
1903 bytes = (unsigned char *) alloca (len);
1904 read_memory (VALUE_ADDRESS (v), bytes, len);
1908 v = allocate_value (type);
1909 bytes = (unsigned char *) VALUE_CONTENTS (obj) + offset;
1914 VALUE_LVAL (v) = VALUE_LVAL (obj);
1915 if (VALUE_LVAL (obj) == lval_internalvar)
1916 VALUE_LVAL (v) = lval_internalvar_component;
1917 VALUE_ADDRESS (v) = VALUE_ADDRESS (obj) + VALUE_OFFSET (obj) + offset;
1918 VALUE_BITPOS (v) = bit_offset + VALUE_BITPOS (obj);
1919 VALUE_BITSIZE (v) = bit_size;
1920 if (VALUE_BITPOS (v) >= HOST_CHAR_BIT)
1922 VALUE_ADDRESS (v) += 1;
1923 VALUE_BITPOS (v) -= HOST_CHAR_BIT;
1927 VALUE_BITSIZE (v) = bit_size;
1928 unpacked = (unsigned char *) VALUE_CONTENTS (v);
1930 srcBitsLeft = bit_size;
1932 ntarg = TYPE_LENGTH (type);
1936 memset (unpacked, 0, TYPE_LENGTH (type));
1939 else if (BITS_BIG_ENDIAN)
1942 if (has_negatives (type)
1943 && ((bytes[0] << bit_offset) & (1 << (HOST_CHAR_BIT - 1))))
1947 (HOST_CHAR_BIT - (bit_size + bit_offset) % HOST_CHAR_BIT)
1950 switch (TYPE_CODE (type))
1952 case TYPE_CODE_ARRAY:
1953 case TYPE_CODE_UNION:
1954 case TYPE_CODE_STRUCT:
1955 /* Non-scalar values must be aligned at a byte boundary... */
1957 (HOST_CHAR_BIT - bit_size % HOST_CHAR_BIT) % HOST_CHAR_BIT;
1958 /* ... And are placed at the beginning (most-significant) bytes
1964 targ = TYPE_LENGTH (type) - 1;
1970 int sign_bit_offset = (bit_size + bit_offset - 1) % 8;
1973 unusedLS = bit_offset;
1976 if (has_negatives (type) && (bytes[len - 1] & (1 << sign_bit_offset)))
1983 /* Mask for removing bits of the next source byte that are not
1984 part of the value. */
1985 unsigned int unusedMSMask =
1986 (1 << (srcBitsLeft >= HOST_CHAR_BIT ? HOST_CHAR_BIT : srcBitsLeft)) -
1988 /* Sign-extend bits for this byte. */
1989 unsigned int signMask = sign & ~unusedMSMask;
1991 (((bytes[src] >> unusedLS) & unusedMSMask) | signMask) << accumSize;
1992 accumSize += HOST_CHAR_BIT - unusedLS;
1993 if (accumSize >= HOST_CHAR_BIT)
1995 unpacked[targ] = accum & ~(~0L << HOST_CHAR_BIT);
1996 accumSize -= HOST_CHAR_BIT;
1997 accum >>= HOST_CHAR_BIT;
2001 srcBitsLeft -= HOST_CHAR_BIT - unusedLS;
2008 accum |= sign << accumSize;
2009 unpacked[targ] = accum & ~(~0L << HOST_CHAR_BIT);
2010 accumSize -= HOST_CHAR_BIT;
2011 accum >>= HOST_CHAR_BIT;
2019 /* Move N bits from SOURCE, starting at bit offset SRC_OFFSET to
2020 TARGET, starting at bit offset TARG_OFFSET. SOURCE and TARGET must
2023 move_bits (char *target, int targ_offset, char *source, int src_offset, int n)
2025 unsigned int accum, mask;
2026 int accum_bits, chunk_size;
2028 target += targ_offset / HOST_CHAR_BIT;
2029 targ_offset %= HOST_CHAR_BIT;
2030 source += src_offset / HOST_CHAR_BIT;
2031 src_offset %= HOST_CHAR_BIT;
2032 if (BITS_BIG_ENDIAN)
2034 accum = (unsigned char) *source;
2036 accum_bits = HOST_CHAR_BIT - src_offset;
2041 accum = (accum << HOST_CHAR_BIT) + (unsigned char) *source;
2042 accum_bits += HOST_CHAR_BIT;
2044 chunk_size = HOST_CHAR_BIT - targ_offset;
2047 unused_right = HOST_CHAR_BIT - (chunk_size + targ_offset);
2048 mask = ((1 << chunk_size) - 1) << unused_right;
2051 | ((accum >> (accum_bits - chunk_size - unused_right)) & mask);
2053 accum_bits -= chunk_size;
2060 accum = (unsigned char) *source >> src_offset;
2062 accum_bits = HOST_CHAR_BIT - src_offset;
2066 accum = accum + ((unsigned char) *source << accum_bits);
2067 accum_bits += HOST_CHAR_BIT;
2069 chunk_size = HOST_CHAR_BIT - targ_offset;
2072 mask = ((1 << chunk_size) - 1) << targ_offset;
2073 *target = (*target & ~mask) | ((accum << targ_offset) & mask);
2075 accum_bits -= chunk_size;
2076 accum >>= chunk_size;
2084 /* Store the contents of FROMVAL into the location of TOVAL.
2085 Return a new value with the location of TOVAL and contents of
2086 FROMVAL. Handles assignment into packed fields that have
2087 floating-point or non-scalar types. */
2089 static struct value *
2090 ada_value_assign (struct value *toval, struct value *fromval)
2092 struct type *type = VALUE_TYPE (toval);
2093 int bits = VALUE_BITSIZE (toval);
2095 if (!toval->modifiable)
2096 error ("Left operand of assignment is not a modifiable lvalue.");
2100 if (VALUE_LVAL (toval) == lval_memory
2102 && (TYPE_CODE (type) == TYPE_CODE_FLT
2103 || TYPE_CODE (type) == TYPE_CODE_STRUCT))
2106 (VALUE_BITPOS (toval) + bits + HOST_CHAR_BIT - 1) / HOST_CHAR_BIT;
2107 char *buffer = (char *) alloca (len);
2110 if (TYPE_CODE (type) == TYPE_CODE_FLT)
2111 fromval = value_cast (type, fromval);
2113 read_memory (VALUE_ADDRESS (toval) + VALUE_OFFSET (toval), buffer, len);
2114 if (BITS_BIG_ENDIAN)
2115 move_bits (buffer, VALUE_BITPOS (toval),
2116 VALUE_CONTENTS (fromval),
2117 TYPE_LENGTH (VALUE_TYPE (fromval)) * TARGET_CHAR_BIT -
2120 move_bits (buffer, VALUE_BITPOS (toval), VALUE_CONTENTS (fromval),
2122 write_memory (VALUE_ADDRESS (toval) + VALUE_OFFSET (toval), buffer,
2125 val = value_copy (toval);
2126 memcpy (VALUE_CONTENTS_RAW (val), VALUE_CONTENTS (fromval),
2127 TYPE_LENGTH (type));
2128 VALUE_TYPE (val) = type;
2133 return value_assign (toval, fromval);
2137 /* The value of the element of array ARR at the ARITY indices given in IND.
2138 ARR may be either a simple array, GNAT array descriptor, or pointer
2142 ada_value_subscript (struct value *arr, int arity, struct value **ind)
2146 struct type *elt_type;
2148 elt = ada_coerce_to_simple_array (arr);
2150 elt_type = check_typedef (VALUE_TYPE (elt));
2151 if (TYPE_CODE (elt_type) == TYPE_CODE_ARRAY
2152 && TYPE_FIELD_BITSIZE (elt_type, 0) > 0)
2153 return value_subscript_packed (elt, arity, ind);
2155 for (k = 0; k < arity; k += 1)
2157 if (TYPE_CODE (elt_type) != TYPE_CODE_ARRAY)
2158 error ("too many subscripts (%d expected)", k);
2159 elt = value_subscript (elt, value_pos_atr (ind[k]));
2164 /* Assuming ARR is a pointer to a standard GDB array of type TYPE, the
2165 value of the element of *ARR at the ARITY indices given in
2166 IND. Does not read the entire array into memory. */
2169 ada_value_ptr_subscript (struct value *arr, struct type *type, int arity,
2174 for (k = 0; k < arity; k += 1)
2179 if (TYPE_CODE (type) != TYPE_CODE_ARRAY)
2180 error ("too many subscripts (%d expected)", k);
2181 arr = value_cast (lookup_pointer_type (TYPE_TARGET_TYPE (type)),
2183 get_discrete_bounds (TYPE_INDEX_TYPE (type), &lwb, &upb);
2184 idx = value_pos_atr (ind[k]);
2186 idx = value_sub (idx, value_from_longest (builtin_type_int, lwb));
2187 arr = value_add (arr, idx);
2188 type = TYPE_TARGET_TYPE (type);
2191 return value_ind (arr);
2194 /* Given that ARRAY_PTR is a pointer or reference to an array of type TYPE (the
2195 actual type of ARRAY_PTR is ignored), returns a reference to
2196 the Ada slice of HIGH-LOW+1 elements starting at index LOW. The lower
2197 bound of this array is LOW, as per Ada rules. */
2198 static struct value *
2199 ada_value_slice_ptr (struct value *array_ptr, struct type *type,
2202 CORE_ADDR base = value_as_address (array_ptr)
2203 + ((low - TYPE_LOW_BOUND (TYPE_INDEX_TYPE (type)))
2204 * TYPE_LENGTH (TYPE_TARGET_TYPE (type)));
2205 struct type *index_type =
2206 create_range_type (NULL, TYPE_TARGET_TYPE (TYPE_INDEX_TYPE (type)),
2208 struct type *slice_type =
2209 create_array_type (NULL, TYPE_TARGET_TYPE (type), index_type);
2210 return value_from_pointer (lookup_reference_type (slice_type), base);
2214 static struct value *
2215 ada_value_slice (struct value *array, int low, int high)
2217 struct type *type = VALUE_TYPE (array);
2218 struct type *index_type =
2219 create_range_type (NULL, TYPE_INDEX_TYPE (type), low, high);
2220 struct type *slice_type =
2221 create_array_type (NULL, TYPE_TARGET_TYPE (type), index_type);
2222 return value_cast (slice_type, value_slice (array, low, high-low+1));
2225 /* If type is a record type in the form of a standard GNAT array
2226 descriptor, returns the number of dimensions for type. If arr is a
2227 simple array, returns the number of "array of"s that prefix its
2228 type designation. Otherwise, returns 0. */
2231 ada_array_arity (struct type *type)
2238 type = desc_base_type (type);
2241 if (TYPE_CODE (type) == TYPE_CODE_STRUCT)
2242 return desc_arity (desc_bounds_type (type));
2244 while (TYPE_CODE (type) == TYPE_CODE_ARRAY)
2247 type = check_typedef (TYPE_TARGET_TYPE (type));
2253 /* If TYPE is a record type in the form of a standard GNAT array
2254 descriptor or a simple array type, returns the element type for
2255 TYPE after indexing by NINDICES indices, or by all indices if
2256 NINDICES is -1. Otherwise, returns NULL. */
2259 ada_array_element_type (struct type *type, int nindices)
2261 type = desc_base_type (type);
2263 if (TYPE_CODE (type) == TYPE_CODE_STRUCT)
2266 struct type *p_array_type;
2268 p_array_type = desc_data_type (type);
2270 k = ada_array_arity (type);
2274 /* Initially p_array_type = elt_type(*)[]...(k times)...[]. */
2275 if (nindices >= 0 && k > nindices)
2277 p_array_type = TYPE_TARGET_TYPE (p_array_type);
2278 while (k > 0 && p_array_type != NULL)
2280 p_array_type = check_typedef (TYPE_TARGET_TYPE (p_array_type));
2283 return p_array_type;
2285 else if (TYPE_CODE (type) == TYPE_CODE_ARRAY)
2287 while (nindices != 0 && TYPE_CODE (type) == TYPE_CODE_ARRAY)
2289 type = TYPE_TARGET_TYPE (type);
2298 /* The type of nth index in arrays of given type (n numbering from 1).
2299 Does not examine memory. */
2302 ada_index_type (struct type *type, int n)
2304 struct type *result_type;
2306 type = desc_base_type (type);
2308 if (n > ada_array_arity (type))
2311 if (ada_is_simple_array_type (type))
2315 for (i = 1; i < n; i += 1)
2316 type = TYPE_TARGET_TYPE (type);
2317 result_type = TYPE_TARGET_TYPE (TYPE_FIELD_TYPE (type, 0));
2318 /* FIXME: The stabs type r(0,0);bound;bound in an array type
2319 has a target type of TYPE_CODE_UNDEF. We compensate here, but
2320 perhaps stabsread.c would make more sense. */
2321 if (result_type == NULL || TYPE_CODE (result_type) == TYPE_CODE_UNDEF)
2322 result_type = builtin_type_int;
2327 return desc_index_type (desc_bounds_type (type), n);
2330 /* Given that arr is an array type, returns the lower bound of the
2331 Nth index (numbering from 1) if WHICH is 0, and the upper bound if
2332 WHICH is 1. This returns bounds 0 .. -1 if ARR_TYPE is an
2333 array-descriptor type. If TYPEP is non-null, *TYPEP is set to the
2334 bounds type. It works for other arrays with bounds supplied by
2335 run-time quantities other than discriminants. */
2338 ada_array_bound_from_type (struct type * arr_type, int n, int which,
2339 struct type ** typep)
2342 struct type *index_type_desc;
2344 if (ada_is_packed_array_type (arr_type))
2345 arr_type = decode_packed_array_type (arr_type);
2347 if (arr_type == NULL || !ada_is_simple_array_type (arr_type))
2350 *typep = builtin_type_int;
2351 return (LONGEST) - which;
2354 if (TYPE_CODE (arr_type) == TYPE_CODE_PTR)
2355 type = TYPE_TARGET_TYPE (arr_type);
2359 index_type_desc = ada_find_parallel_type (type, "___XA");
2360 if (index_type_desc == NULL)
2362 struct type *range_type;
2363 struct type *index_type;
2367 type = TYPE_TARGET_TYPE (type);
2371 range_type = TYPE_INDEX_TYPE (type);
2372 index_type = TYPE_TARGET_TYPE (range_type);
2373 if (TYPE_CODE (index_type) == TYPE_CODE_UNDEF)
2374 index_type = builtin_type_long;
2376 *typep = index_type;
2378 (LONGEST) (which == 0
2379 ? TYPE_LOW_BOUND (range_type)
2380 : TYPE_HIGH_BOUND (range_type));
2384 struct type *index_type =
2385 to_fixed_range_type (TYPE_FIELD_NAME (index_type_desc, n - 1),
2386 NULL, TYPE_OBJFILE (arr_type));
2388 *typep = TYPE_TARGET_TYPE (index_type);
2390 (LONGEST) (which == 0
2391 ? TYPE_LOW_BOUND (index_type)
2392 : TYPE_HIGH_BOUND (index_type));
2396 /* Given that arr is an array value, returns the lower bound of the
2397 nth index (numbering from 1) if which is 0, and the upper bound if
2398 which is 1. This routine will also work for arrays with bounds
2399 supplied by run-time quantities other than discriminants. */
2402 ada_array_bound (struct value *arr, int n, int which)
2404 struct type *arr_type = VALUE_TYPE (arr);
2406 if (ada_is_packed_array_type (arr_type))
2407 return ada_array_bound (decode_packed_array (arr), n, which);
2408 else if (ada_is_simple_array_type (arr_type))
2411 LONGEST v = ada_array_bound_from_type (arr_type, n, which, &type);
2412 return value_from_longest (type, v);
2415 return desc_one_bound (desc_bounds (arr), n, which);
2418 /* Given that arr is an array value, returns the length of the
2419 nth index. This routine will also work for arrays with bounds
2420 supplied by run-time quantities other than discriminants.
2421 Does not work for arrays indexed by enumeration types with representation
2422 clauses at the moment. */
2425 ada_array_length (struct value *arr, int n)
2427 struct type *arr_type = check_typedef (VALUE_TYPE (arr));
2429 if (ada_is_packed_array_type (arr_type))
2430 return ada_array_length (decode_packed_array (arr), n);
2432 if (ada_is_simple_array_type (arr_type))
2436 ada_array_bound_from_type (arr_type, n, 1, &type) -
2437 ada_array_bound_from_type (arr_type, n, 0, NULL) + 1;
2438 return value_from_longest (type, v);
2442 value_from_longest (builtin_type_ada_int,
2443 value_as_long (desc_one_bound (desc_bounds (arr),
2445 - value_as_long (desc_one_bound (desc_bounds (arr),
2449 /* An empty array whose type is that of ARR_TYPE (an array type),
2450 with bounds LOW to LOW-1. */
2452 static struct value *
2453 empty_array (struct type *arr_type, int low)
2455 struct type *index_type =
2456 create_range_type (NULL, TYPE_TARGET_TYPE (TYPE_INDEX_TYPE (arr_type)),
2458 struct type *elt_type = ada_array_element_type (arr_type, 1);
2459 return allocate_value (create_array_type (NULL, elt_type, index_type));
2463 /* Name resolution */
2465 /* The "decoded" name for the user-definable Ada operator corresponding
2469 ada_decoded_op_name (enum exp_opcode op)
2473 for (i = 0; ada_opname_table[i].encoded != NULL; i += 1)
2475 if (ada_opname_table[i].op == op)
2476 return ada_opname_table[i].decoded;
2478 error ("Could not find operator name for opcode");
2482 /* Same as evaluate_type (*EXP), but resolves ambiguous symbol
2483 references (marked by OP_VAR_VALUE nodes in which the symbol has an
2484 undefined namespace) and converts operators that are
2485 user-defined into appropriate function calls. If CONTEXT_TYPE is
2486 non-null, it provides a preferred result type [at the moment, only
2487 type void has any effect---causing procedures to be preferred over
2488 functions in calls]. A null CONTEXT_TYPE indicates that a non-void
2489 return type is preferred. May change (expand) *EXP. */
2492 resolve (struct expression **expp, int void_context_p)
2496 resolve_subexp (expp, &pc, 1, void_context_p ? builtin_type_void : NULL);
2499 /* Resolve the operator of the subexpression beginning at
2500 position *POS of *EXPP. "Resolving" consists of replacing
2501 the symbols that have undefined namespaces in OP_VAR_VALUE nodes
2502 with their resolutions, replacing built-in operators with
2503 function calls to user-defined operators, where appropriate, and,
2504 when DEPROCEDURE_P is non-zero, converting function-valued variables
2505 into parameterless calls. May expand *EXPP. The CONTEXT_TYPE functions
2506 are as in ada_resolve, above. */
2508 static struct value *
2509 resolve_subexp (struct expression **expp, int *pos, int deprocedure_p,
2510 struct type *context_type)
2514 struct expression *exp; /* Convenience: == *expp. */
2515 enum exp_opcode op = (*expp)->elts[pc].opcode;
2516 struct value **argvec; /* Vector of operand types (alloca'ed). */
2517 int nargs; /* Number of operands. */
2523 /* Pass one: resolve operands, saving their types and updating *pos. */
2527 if (exp->elts[pc + 3].opcode == OP_VAR_VALUE
2528 && SYMBOL_DOMAIN (exp->elts[pc + 5].symbol) == UNDEF_DOMAIN)
2533 resolve_subexp (expp, pos, 0, NULL);
2535 nargs = longest_to_int (exp->elts[pc + 1].longconst);
2540 resolve_subexp (expp, pos, 1, exp->elts[pc + 1].type);
2545 resolve_subexp (expp, pos, 0, NULL);
2548 case OP_ATR_MODULUS:
2578 arg1 = resolve_subexp (expp, pos, 0, NULL);
2580 resolve_subexp (expp, pos, 1, NULL);
2582 resolve_subexp (expp, pos, 1, VALUE_TYPE (arg1));
2600 case BINOP_LOGICAL_AND:
2601 case BINOP_LOGICAL_OR:
2602 case BINOP_BITWISE_AND:
2603 case BINOP_BITWISE_IOR:
2604 case BINOP_BITWISE_XOR:
2607 case BINOP_NOTEQUAL:
2614 case BINOP_SUBSCRIPT:
2622 case UNOP_LOGICAL_NOT:
2639 case OP_INTERNALVAR:
2648 case STRUCTOP_STRUCT:
2649 *pos += 4 + BYTES_TO_EXP_ELEM (exp->elts[pc + 1].longconst + 1);
2655 + BYTES_TO_EXP_ELEM (longest_to_int (exp->elts[pc + 1].longconst)
2660 case TERNOP_IN_RANGE:
2665 case BINOP_IN_BOUNDS:
2671 error ("Unexpected operator during name resolution");
2674 argvec = (struct value * *) alloca (sizeof (struct value *) * (nargs + 1));
2675 for (i = 0; i < nargs; i += 1)
2676 argvec[i] = resolve_subexp (expp, pos, 1, NULL);
2680 /* Pass two: perform any resolution on principal operator. */
2687 if (SYMBOL_DOMAIN (exp->elts[pc + 2].symbol) == UNDEF_DOMAIN)
2689 struct ada_symbol_info *candidates;
2693 ada_lookup_symbol_list (SYMBOL_LINKAGE_NAME
2694 (exp->elts[pc + 2].symbol),
2695 exp->elts[pc + 1].block, VAR_DOMAIN,
2698 if (n_candidates > 1)
2700 /* Types tend to get re-introduced locally, so if there
2701 are any local symbols that are not types, first filter
2704 for (j = 0; j < n_candidates; j += 1)
2705 switch (SYMBOL_CLASS (candidates[j].sym))
2711 case LOC_REGPARM_ADDR:
2715 case LOC_BASEREG_ARG:
2717 case LOC_COMPUTED_ARG:
2723 if (j < n_candidates)
2726 while (j < n_candidates)
2728 if (SYMBOL_CLASS (candidates[j].sym) == LOC_TYPEDEF)
2730 candidates[j] = candidates[n_candidates - 1];
2739 if (n_candidates == 0)
2740 error ("No definition found for %s",
2741 SYMBOL_PRINT_NAME (exp->elts[pc + 2].symbol));
2742 else if (n_candidates == 1)
2744 else if (deprocedure_p
2745 && !is_nonfunction (candidates, n_candidates))
2747 i = ada_resolve_function
2748 (candidates, n_candidates, NULL, 0,
2749 SYMBOL_LINKAGE_NAME (exp->elts[pc + 2].symbol),
2752 error ("Could not find a match for %s",
2753 SYMBOL_PRINT_NAME (exp->elts[pc + 2].symbol));
2757 printf_filtered ("Multiple matches for %s\n",
2758 SYMBOL_PRINT_NAME (exp->elts[pc + 2].symbol));
2759 user_select_syms (candidates, n_candidates, 1);
2763 exp->elts[pc + 1].block = candidates[i].block;
2764 exp->elts[pc + 2].symbol = candidates[i].sym;
2765 if (innermost_block == NULL
2766 || contained_in (candidates[i].block, innermost_block))
2767 innermost_block = candidates[i].block;
2771 && (TYPE_CODE (SYMBOL_TYPE (exp->elts[pc + 2].symbol))
2774 replace_operator_with_call (expp, pc, 0, 0,
2775 exp->elts[pc + 2].symbol,
2776 exp->elts[pc + 1].block);
2783 if (exp->elts[pc + 3].opcode == OP_VAR_VALUE
2784 && SYMBOL_DOMAIN (exp->elts[pc + 5].symbol) == UNDEF_DOMAIN)
2786 struct ada_symbol_info *candidates;
2790 ada_lookup_symbol_list (SYMBOL_LINKAGE_NAME
2791 (exp->elts[pc + 5].symbol),
2792 exp->elts[pc + 4].block, VAR_DOMAIN,
2794 if (n_candidates == 1)
2798 i = ada_resolve_function
2799 (candidates, n_candidates,
2801 SYMBOL_LINKAGE_NAME (exp->elts[pc + 5].symbol),
2804 error ("Could not find a match for %s",
2805 SYMBOL_PRINT_NAME (exp->elts[pc + 5].symbol));
2808 exp->elts[pc + 4].block = candidates[i].block;
2809 exp->elts[pc + 5].symbol = candidates[i].sym;
2810 if (innermost_block == NULL
2811 || contained_in (candidates[i].block, innermost_block))
2812 innermost_block = candidates[i].block;
2823 case BINOP_BITWISE_AND:
2824 case BINOP_BITWISE_IOR:
2825 case BINOP_BITWISE_XOR:
2827 case BINOP_NOTEQUAL:
2835 case UNOP_LOGICAL_NOT:
2837 if (possible_user_operator_p (op, argvec))
2839 struct ada_symbol_info *candidates;
2843 ada_lookup_symbol_list (ada_encode (ada_decoded_op_name (op)),
2844 (struct block *) NULL, VAR_DOMAIN,
2846 i = ada_resolve_function (candidates, n_candidates, argvec, nargs,
2847 ada_decoded_op_name (op), NULL);
2851 replace_operator_with_call (expp, pc, nargs, 1,
2852 candidates[i].sym, candidates[i].block);
2862 return evaluate_subexp_type (exp, pos);
2865 /* Return non-zero if formal type FTYPE matches actual type ATYPE. If
2866 MAY_DEREF is non-zero, the formal may be a pointer and the actual
2867 a non-pointer. A type of 'void' (which is never a valid expression type)
2868 by convention matches anything. */
2869 /* The term "match" here is rather loose. The match is heuristic and
2870 liberal. FIXME: TOO liberal, in fact. */
2873 ada_type_match (struct type *ftype, struct type *atype, int may_deref)
2875 CHECK_TYPEDEF (ftype);
2876 CHECK_TYPEDEF (atype);
2878 if (TYPE_CODE (ftype) == TYPE_CODE_REF)
2879 ftype = TYPE_TARGET_TYPE (ftype);
2880 if (TYPE_CODE (atype) == TYPE_CODE_REF)
2881 atype = TYPE_TARGET_TYPE (atype);
2883 if (TYPE_CODE (ftype) == TYPE_CODE_VOID
2884 || TYPE_CODE (atype) == TYPE_CODE_VOID)
2887 switch (TYPE_CODE (ftype))
2892 if (TYPE_CODE (atype) == TYPE_CODE_PTR)
2893 return ada_type_match (TYPE_TARGET_TYPE (ftype),
2894 TYPE_TARGET_TYPE (atype), 0);
2897 && ada_type_match (TYPE_TARGET_TYPE (ftype), atype, 0));
2899 case TYPE_CODE_ENUM:
2900 case TYPE_CODE_RANGE:
2901 switch (TYPE_CODE (atype))
2904 case TYPE_CODE_ENUM:
2905 case TYPE_CODE_RANGE:
2911 case TYPE_CODE_ARRAY:
2912 return (TYPE_CODE (atype) == TYPE_CODE_ARRAY
2913 || ada_is_array_descriptor_type (atype));
2915 case TYPE_CODE_STRUCT:
2916 if (ada_is_array_descriptor_type (ftype))
2917 return (TYPE_CODE (atype) == TYPE_CODE_ARRAY
2918 || ada_is_array_descriptor_type (atype));
2920 return (TYPE_CODE (atype) == TYPE_CODE_STRUCT
2921 && !ada_is_array_descriptor_type (atype));
2923 case TYPE_CODE_UNION:
2925 return (TYPE_CODE (atype) == TYPE_CODE (ftype));
2929 /* Return non-zero if the formals of FUNC "sufficiently match" the
2930 vector of actual argument types ACTUALS of size N_ACTUALS. FUNC
2931 may also be an enumeral, in which case it is treated as a 0-
2932 argument function. */
2935 ada_args_match (struct symbol *func, struct value **actuals, int n_actuals)
2938 struct type *func_type = SYMBOL_TYPE (func);
2940 if (SYMBOL_CLASS (func) == LOC_CONST
2941 && TYPE_CODE (func_type) == TYPE_CODE_ENUM)
2942 return (n_actuals == 0);
2943 else if (func_type == NULL || TYPE_CODE (func_type) != TYPE_CODE_FUNC)
2946 if (TYPE_NFIELDS (func_type) != n_actuals)
2949 for (i = 0; i < n_actuals; i += 1)
2951 if (actuals[i] == NULL)
2955 struct type *ftype = check_typedef (TYPE_FIELD_TYPE (func_type, i));
2956 struct type *atype = check_typedef (VALUE_TYPE (actuals[i]));
2958 if (!ada_type_match (ftype, atype, 1))
2965 /* False iff function type FUNC_TYPE definitely does not produce a value
2966 compatible with type CONTEXT_TYPE. Conservatively returns 1 if
2967 FUNC_TYPE is not a valid function type with a non-null return type
2968 or an enumerated type. A null CONTEXT_TYPE indicates any non-void type. */
2971 return_match (struct type *func_type, struct type *context_type)
2973 struct type *return_type;
2975 if (func_type == NULL)
2978 if (TYPE_CODE (func_type) == TYPE_CODE_FUNC)
2979 return_type = base_type (TYPE_TARGET_TYPE (func_type));
2981 return_type = base_type (func_type);
2982 if (return_type == NULL)
2985 context_type = base_type (context_type);
2987 if (TYPE_CODE (return_type) == TYPE_CODE_ENUM)
2988 return context_type == NULL || return_type == context_type;
2989 else if (context_type == NULL)
2990 return TYPE_CODE (return_type) != TYPE_CODE_VOID;
2992 return TYPE_CODE (return_type) == TYPE_CODE (context_type);
2996 /* Returns the index in SYMS[0..NSYMS-1] that contains the symbol for the
2997 function (if any) that matches the types of the NARGS arguments in
2998 ARGS. If CONTEXT_TYPE is non-null and there is at least one match
2999 that returns that type, then eliminate matches that don't. If
3000 CONTEXT_TYPE is void and there is at least one match that does not
3001 return void, eliminate all matches that do.
3003 Asks the user if there is more than one match remaining. Returns -1
3004 if there is no such symbol or none is selected. NAME is used
3005 solely for messages. May re-arrange and modify SYMS in
3006 the process; the index returned is for the modified vector. */
3009 ada_resolve_function (struct ada_symbol_info syms[],
3010 int nsyms, struct value **args, int nargs,
3011 const char *name, struct type *context_type)
3014 int m; /* Number of hits */
3015 struct type *fallback;
3016 struct type *return_type;
3018 return_type = context_type;
3019 if (context_type == NULL)
3020 fallback = builtin_type_void;
3027 for (k = 0; k < nsyms; k += 1)
3029 struct type *type = check_typedef (SYMBOL_TYPE (syms[k].sym));
3031 if (ada_args_match (syms[k].sym, args, nargs)
3032 && return_match (type, return_type))
3038 if (m > 0 || return_type == fallback)
3041 return_type = fallback;
3048 printf_filtered ("Multiple matches for %s\n", name);
3049 user_select_syms (syms, m, 1);
3055 /* Returns true (non-zero) iff decoded name N0 should appear before N1
3056 in a listing of choices during disambiguation (see sort_choices, below).
3057 The idea is that overloadings of a subprogram name from the
3058 same package should sort in their source order. We settle for ordering
3059 such symbols by their trailing number (__N or $N). */
3062 encoded_ordered_before (char *N0, char *N1)
3066 else if (N0 == NULL)
3071 for (k0 = strlen (N0) - 1; k0 > 0 && isdigit (N0[k0]); k0 -= 1)
3073 for (k1 = strlen (N1) - 1; k1 > 0 && isdigit (N1[k1]); k1 -= 1)
3075 if ((N0[k0] == '_' || N0[k0] == '$') && N0[k0 + 1] != '\000'
3076 && (N1[k1] == '_' || N1[k1] == '$') && N1[k1 + 1] != '\000')
3080 while (N0[n0] == '_' && n0 > 0 && N0[n0 - 1] == '_')
3083 while (N1[n1] == '_' && n1 > 0 && N1[n1 - 1] == '_')
3085 if (n0 == n1 && strncmp (N0, N1, n0) == 0)
3086 return (atoi (N0 + k0 + 1) < atoi (N1 + k1 + 1));
3088 return (strcmp (N0, N1) < 0);
3092 /* Sort SYMS[0..NSYMS-1] to put the choices in a canonical order by the
3096 sort_choices (struct ada_symbol_info syms[], int nsyms)
3099 for (i = 1; i < nsyms; i += 1)
3101 struct ada_symbol_info sym = syms[i];
3104 for (j = i - 1; j >= 0; j -= 1)
3106 if (encoded_ordered_before (SYMBOL_LINKAGE_NAME (syms[j].sym),
3107 SYMBOL_LINKAGE_NAME (sym.sym)))
3109 syms[j + 1] = syms[j];
3115 /* Given a list of NSYMS symbols in SYMS, select up to MAX_RESULTS>0
3116 by asking the user (if necessary), returning the number selected,
3117 and setting the first elements of SYMS items. Error if no symbols
3120 /* NOTE: Adapted from decode_line_2 in symtab.c, with which it ought
3121 to be re-integrated one of these days. */
3124 user_select_syms (struct ada_symbol_info *syms, int nsyms, int max_results)
3127 int *chosen = (int *) alloca (sizeof (int) * nsyms);
3129 int first_choice = (max_results == 1) ? 1 : 2;
3131 if (max_results < 1)
3132 error ("Request to select 0 symbols!");
3136 printf_unfiltered ("[0] cancel\n");
3137 if (max_results > 1)
3138 printf_unfiltered ("[1] all\n");
3140 sort_choices (syms, nsyms);
3142 for (i = 0; i < nsyms; i += 1)
3144 if (syms[i].sym == NULL)
3147 if (SYMBOL_CLASS (syms[i].sym) == LOC_BLOCK)
3149 struct symtab_and_line sal =
3150 find_function_start_sal (syms[i].sym, 1);
3151 printf_unfiltered ("[%d] %s at %s:%d\n", i + first_choice,
3152 SYMBOL_PRINT_NAME (syms[i].sym),
3154 ? "<no source file available>"
3155 : sal.symtab->filename), sal.line);
3161 (SYMBOL_CLASS (syms[i].sym) == LOC_CONST
3162 && SYMBOL_TYPE (syms[i].sym) != NULL
3163 && TYPE_CODE (SYMBOL_TYPE (syms[i].sym)) == TYPE_CODE_ENUM);
3164 struct symtab *symtab = symtab_for_sym (syms[i].sym);
3166 if (SYMBOL_LINE (syms[i].sym) != 0 && symtab != NULL)
3167 printf_unfiltered ("[%d] %s at %s:%d\n",
3169 SYMBOL_PRINT_NAME (syms[i].sym),
3170 symtab->filename, SYMBOL_LINE (syms[i].sym));
3171 else if (is_enumeral
3172 && TYPE_NAME (SYMBOL_TYPE (syms[i].sym)) != NULL)
3174 printf_unfiltered ("[%d] ", i + first_choice);
3175 ada_print_type (SYMBOL_TYPE (syms[i].sym), NULL,
3177 printf_unfiltered ("'(%s) (enumeral)\n",
3178 SYMBOL_PRINT_NAME (syms[i].sym));
3180 else if (symtab != NULL)
3181 printf_unfiltered (is_enumeral
3182 ? "[%d] %s in %s (enumeral)\n"
3183 : "[%d] %s at %s:?\n",
3185 SYMBOL_PRINT_NAME (syms[i].sym),
3188 printf_unfiltered (is_enumeral
3189 ? "[%d] %s (enumeral)\n"
3192 SYMBOL_PRINT_NAME (syms[i].sym));
3196 n_chosen = get_selections (chosen, nsyms, max_results, max_results > 1,
3199 for (i = 0; i < n_chosen; i += 1)
3200 syms[i] = syms[chosen[i]];
3205 /* Read and validate a set of numeric choices from the user in the
3206 range 0 .. N_CHOICES-1. Place the results in increasing
3207 order in CHOICES[0 .. N-1], and return N.
3209 The user types choices as a sequence of numbers on one line
3210 separated by blanks, encoding them as follows:
3212 + A choice of 0 means to cancel the selection, throwing an error.
3213 + If IS_ALL_CHOICE, a choice of 1 selects the entire set 0 .. N_CHOICES-1.
3214 + The user chooses k by typing k+IS_ALL_CHOICE+1.
3216 The user is not allowed to choose more than MAX_RESULTS values.
3218 ANNOTATION_SUFFIX, if present, is used to annotate the input
3219 prompts (for use with the -f switch). */
3222 get_selections (int *choices, int n_choices, int max_results,
3223 int is_all_choice, char *annotation_suffix)
3228 int first_choice = is_all_choice ? 2 : 1;
3230 prompt = getenv ("PS2");
3234 printf_unfiltered ("%s ", prompt);
3235 gdb_flush (gdb_stdout);
3237 args = command_line_input ((char *) NULL, 0, annotation_suffix);
3240 error_no_arg ("one or more choice numbers");
3244 /* Set choices[0 .. n_chosen-1] to the users' choices in ascending
3245 order, as given in args. Choices are validated. */
3251 while (isspace (*args))
3253 if (*args == '\0' && n_chosen == 0)
3254 error_no_arg ("one or more choice numbers");
3255 else if (*args == '\0')
3258 choice = strtol (args, &args2, 10);
3259 if (args == args2 || choice < 0
3260 || choice > n_choices + first_choice - 1)
3261 error ("Argument must be choice number");
3265 error ("cancelled");
3267 if (choice < first_choice)
3269 n_chosen = n_choices;
3270 for (j = 0; j < n_choices; j += 1)
3274 choice -= first_choice;
3276 for (j = n_chosen - 1; j >= 0 && choice < choices[j]; j -= 1)
3280 if (j < 0 || choice != choices[j])
3283 for (k = n_chosen - 1; k > j; k -= 1)
3284 choices[k + 1] = choices[k];
3285 choices[j + 1] = choice;
3290 if (n_chosen > max_results)
3291 error ("Select no more than %d of the above", max_results);
3296 /* Replace the operator of length OPLEN at position PC in *EXPP with a call
3297 on the function identified by SYM and BLOCK, and taking NARGS
3298 arguments. Update *EXPP as needed to hold more space. */
3301 replace_operator_with_call (struct expression **expp, int pc, int nargs,
3302 int oplen, struct symbol *sym,
3303 struct block *block)
3305 /* A new expression, with 6 more elements (3 for funcall, 4 for function
3306 symbol, -oplen for operator being replaced). */
3307 struct expression *newexp = (struct expression *)
3308 xmalloc (sizeof (struct expression)
3309 + EXP_ELEM_TO_BYTES ((*expp)->nelts + 7 - oplen));
3310 struct expression *exp = *expp;
3312 newexp->nelts = exp->nelts + 7 - oplen;
3313 newexp->language_defn = exp->language_defn;
3314 memcpy (newexp->elts, exp->elts, EXP_ELEM_TO_BYTES (pc));
3315 memcpy (newexp->elts + pc + 7, exp->elts + pc + oplen,
3316 EXP_ELEM_TO_BYTES (exp->nelts - pc - oplen));
3318 newexp->elts[pc].opcode = newexp->elts[pc + 2].opcode = OP_FUNCALL;
3319 newexp->elts[pc + 1].longconst = (LONGEST) nargs;
3321 newexp->elts[pc + 3].opcode = newexp->elts[pc + 6].opcode = OP_VAR_VALUE;
3322 newexp->elts[pc + 4].block = block;
3323 newexp->elts[pc + 5].symbol = sym;
3329 /* Type-class predicates */
3331 /* True iff TYPE is numeric (i.e., an INT, RANGE (of numeric type),
3335 numeric_type_p (struct type *type)
3341 switch (TYPE_CODE (type))
3346 case TYPE_CODE_RANGE:
3347 return (type == TYPE_TARGET_TYPE (type)
3348 || numeric_type_p (TYPE_TARGET_TYPE (type)));
3355 /* True iff TYPE is integral (an INT or RANGE of INTs). */
3358 integer_type_p (struct type *type)
3364 switch (TYPE_CODE (type))
3368 case TYPE_CODE_RANGE:
3369 return (type == TYPE_TARGET_TYPE (type)
3370 || integer_type_p (TYPE_TARGET_TYPE (type)));
3377 /* True iff TYPE is scalar (INT, RANGE, FLOAT, ENUM). */
3380 scalar_type_p (struct type *type)
3386 switch (TYPE_CODE (type))
3389 case TYPE_CODE_RANGE:
3390 case TYPE_CODE_ENUM:
3399 /* True iff TYPE is discrete (INT, RANGE, ENUM). */
3402 discrete_type_p (struct type *type)
3408 switch (TYPE_CODE (type))
3411 case TYPE_CODE_RANGE:
3412 case TYPE_CODE_ENUM:
3420 /* Returns non-zero if OP with operands in the vector ARGS could be
3421 a user-defined function. Errs on the side of pre-defined operators
3422 (i.e., result 0). */
3425 possible_user_operator_p (enum exp_opcode op, struct value *args[])
3427 struct type *type0 =
3428 (args[0] == NULL) ? NULL : check_typedef (VALUE_TYPE (args[0]));
3429 struct type *type1 =
3430 (args[1] == NULL) ? NULL : check_typedef (VALUE_TYPE (args[1]));
3444 return (!(numeric_type_p (type0) && numeric_type_p (type1)));
3448 case BINOP_BITWISE_AND:
3449 case BINOP_BITWISE_IOR:
3450 case BINOP_BITWISE_XOR:
3451 return (!(integer_type_p (type0) && integer_type_p (type1)));
3454 case BINOP_NOTEQUAL:
3459 return (!(scalar_type_p (type0) && scalar_type_p (type1)));
3463 ((TYPE_CODE (type0) != TYPE_CODE_ARRAY
3464 && (TYPE_CODE (type0) != TYPE_CODE_PTR
3465 || TYPE_CODE (TYPE_TARGET_TYPE (type0)) != TYPE_CODE_ARRAY))
3466 || (TYPE_CODE (type1) != TYPE_CODE_ARRAY
3467 && (TYPE_CODE (type1) != TYPE_CODE_PTR
3468 || (TYPE_CODE (TYPE_TARGET_TYPE (type1))
3469 != TYPE_CODE_ARRAY))));
3472 return (!(numeric_type_p (type0) && integer_type_p (type1)));
3476 case UNOP_LOGICAL_NOT:
3478 return (!numeric_type_p (type0));
3485 /* NOTE: In the following, we assume that a renaming type's name may
3486 have an ___XD suffix. It would be nice if this went away at some
3489 /* If TYPE encodes a renaming, returns the renaming suffix, which
3490 is XR for an object renaming, XRP for a procedure renaming, XRE for
3491 an exception renaming, and XRS for a subprogram renaming. Returns
3492 NULL if NAME encodes none of these. */
3495 ada_renaming_type (struct type *type)
3497 if (type != NULL && TYPE_CODE (type) == TYPE_CODE_ENUM)
3499 const char *name = type_name_no_tag (type);
3500 const char *suffix = (name == NULL) ? NULL : strstr (name, "___XR");
3502 || (suffix[5] != '\000' && strchr ("PES_", suffix[5]) == NULL))
3511 /* Return non-zero iff SYM encodes an object renaming. */
3514 ada_is_object_renaming (struct symbol *sym)
3516 const char *renaming_type = ada_renaming_type (SYMBOL_TYPE (sym));
3517 return renaming_type != NULL
3518 && (renaming_type[2] == '\0' || renaming_type[2] == '_');
3521 /* Assuming that SYM encodes a non-object renaming, returns the original
3522 name of the renamed entity. The name is good until the end of
3526 ada_simple_renamed_entity (struct symbol *sym)
3529 const char *raw_name;
3533 type = SYMBOL_TYPE (sym);
3534 if (type == NULL || TYPE_NFIELDS (type) < 1)
3535 error ("Improperly encoded renaming.");
3537 raw_name = TYPE_FIELD_NAME (type, 0);
3538 len = (raw_name == NULL ? 0 : strlen (raw_name)) - 5;
3540 error ("Improperly encoded renaming.");
3542 result = xmalloc (len + 1);
3543 strncpy (result, raw_name, len);
3544 result[len] = '\000';
3549 /* Evaluation: Function Calls */
3551 /* Return an lvalue containing the value VAL. This is the identity on
3552 lvalues, and otherwise has the side-effect of pushing a copy of VAL
3553 on the stack, using and updating *SP as the stack pointer, and
3554 returning an lvalue whose VALUE_ADDRESS points to the copy. */
3556 static struct value *
3557 ensure_lval (struct value *val, CORE_ADDR *sp)
3559 if (! VALUE_LVAL (val))
3561 int len = TYPE_LENGTH (check_typedef (VALUE_TYPE (val)));
3563 /* The following is taken from the structure-return code in
3564 call_function_by_hand. FIXME: Therefore, some refactoring seems
3566 if (INNER_THAN (1, 2))
3568 /* Stack grows downward. Align SP and VALUE_ADDRESS (val) after
3569 reserving sufficient space. */
3571 if (gdbarch_frame_align_p (current_gdbarch))
3572 *sp = gdbarch_frame_align (current_gdbarch, *sp);
3573 VALUE_ADDRESS (val) = *sp;
3577 /* Stack grows upward. Align the frame, allocate space, and
3578 then again, re-align the frame. */
3579 if (gdbarch_frame_align_p (current_gdbarch))
3580 *sp = gdbarch_frame_align (current_gdbarch, *sp);
3581 VALUE_ADDRESS (val) = *sp;
3583 if (gdbarch_frame_align_p (current_gdbarch))
3584 *sp = gdbarch_frame_align (current_gdbarch, *sp);
3587 write_memory (VALUE_ADDRESS (val), VALUE_CONTENTS_RAW (val), len);
3593 /* Return the value ACTUAL, converted to be an appropriate value for a
3594 formal of type FORMAL_TYPE. Use *SP as a stack pointer for
3595 allocating any necessary descriptors (fat pointers), or copies of
3596 values not residing in memory, updating it as needed. */
3598 static struct value *
3599 convert_actual (struct value *actual, struct type *formal_type0,
3602 struct type *actual_type = check_typedef (VALUE_TYPE (actual));
3603 struct type *formal_type = check_typedef (formal_type0);
3604 struct type *formal_target =
3605 TYPE_CODE (formal_type) == TYPE_CODE_PTR
3606 ? check_typedef (TYPE_TARGET_TYPE (formal_type)) : formal_type;
3607 struct type *actual_target =
3608 TYPE_CODE (actual_type) == TYPE_CODE_PTR
3609 ? check_typedef (TYPE_TARGET_TYPE (actual_type)) : actual_type;
3611 if (ada_is_array_descriptor_type (formal_target)
3612 && TYPE_CODE (actual_target) == TYPE_CODE_ARRAY)
3613 return make_array_descriptor (formal_type, actual, sp);
3614 else if (TYPE_CODE (formal_type) == TYPE_CODE_PTR)
3616 if (TYPE_CODE (formal_target) == TYPE_CODE_ARRAY
3617 && ada_is_array_descriptor_type (actual_target))
3618 return desc_data (actual);
3619 else if (TYPE_CODE (actual_type) != TYPE_CODE_PTR)
3621 if (VALUE_LVAL (actual) != lval_memory)
3624 actual_type = check_typedef (VALUE_TYPE (actual));
3625 val = allocate_value (actual_type);
3626 memcpy ((char *) VALUE_CONTENTS_RAW (val),
3627 (char *) VALUE_CONTENTS (actual),
3628 TYPE_LENGTH (actual_type));
3629 actual = ensure_lval (val, sp);
3631 return value_addr (actual);
3634 else if (TYPE_CODE (actual_type) == TYPE_CODE_PTR)
3635 return ada_value_ind (actual);
3641 /* Push a descriptor of type TYPE for array value ARR on the stack at
3642 *SP, updating *SP to reflect the new descriptor. Return either
3643 an lvalue representing the new descriptor, or (if TYPE is a pointer-
3644 to-descriptor type rather than a descriptor type), a struct value *
3645 representing a pointer to this descriptor. */
3647 static struct value *
3648 make_array_descriptor (struct type *type, struct value *arr, CORE_ADDR *sp)
3650 struct type *bounds_type = desc_bounds_type (type);
3651 struct type *desc_type = desc_base_type (type);
3652 struct value *descriptor = allocate_value (desc_type);
3653 struct value *bounds = allocate_value (bounds_type);
3656 for (i = ada_array_arity (check_typedef (VALUE_TYPE (arr))); i > 0; i -= 1)
3658 modify_general_field (VALUE_CONTENTS (bounds),
3659 value_as_long (ada_array_bound (arr, i, 0)),
3660 desc_bound_bitpos (bounds_type, i, 0),
3661 desc_bound_bitsize (bounds_type, i, 0));
3662 modify_general_field (VALUE_CONTENTS (bounds),
3663 value_as_long (ada_array_bound (arr, i, 1)),
3664 desc_bound_bitpos (bounds_type, i, 1),
3665 desc_bound_bitsize (bounds_type, i, 1));
3668 bounds = ensure_lval (bounds, sp);
3670 modify_general_field (VALUE_CONTENTS (descriptor),
3671 VALUE_ADDRESS (ensure_lval (arr, sp)),
3672 fat_pntr_data_bitpos (desc_type),
3673 fat_pntr_data_bitsize (desc_type));
3675 modify_general_field (VALUE_CONTENTS (descriptor),
3676 VALUE_ADDRESS (bounds),
3677 fat_pntr_bounds_bitpos (desc_type),
3678 fat_pntr_bounds_bitsize (desc_type));
3680 descriptor = ensure_lval (descriptor, sp);
3682 if (TYPE_CODE (type) == TYPE_CODE_PTR)
3683 return value_addr (descriptor);
3689 /* Assuming a dummy frame has been established on the target, perform any
3690 conversions needed for calling function FUNC on the NARGS actual
3691 parameters in ARGS, other than standard C conversions. Does
3692 nothing if FUNC does not have Ada-style prototype data, or if NARGS
3693 does not match the number of arguments expected. Use *SP as a
3694 stack pointer for additional data that must be pushed, updating its
3698 ada_convert_actuals (struct value *func, int nargs, struct value *args[],
3703 if (TYPE_NFIELDS (VALUE_TYPE (func)) == 0
3704 || nargs != TYPE_NFIELDS (VALUE_TYPE (func)))
3707 for (i = 0; i < nargs; i += 1)
3709 convert_actual (args[i], TYPE_FIELD_TYPE (VALUE_TYPE (func), i), sp);
3712 /* Experimental Symbol Cache Module */
3714 /* This module may well have been OBE, due to improvements in the
3715 symbol-table module. So until proven otherwise, it is disabled in
3716 the submitted public code, and may be removed from all sources
3721 /* This section implements a simple, fixed-sized hash table for those
3722 Ada-mode symbols that get looked up in the course of executing the user's
3723 commands. The size is fixed on the grounds that there are not
3724 likely to be all that many symbols looked up during any given
3725 session, regardless of the size of the symbol table. If we decide
3726 to go to a resizable table, let's just use the stuff from libiberty
3729 #define HASH_SIZE 1009
3734 domain_enum namespace;
3736 struct symtab *symtab;
3737 struct block *block;
3738 struct cache_entry *next;
3741 static struct obstack cache_space;
3743 static struct cache_entry *cache[HASH_SIZE];
3745 /* Clear all entries from the symbol cache. */
3748 clear_ada_sym_cache (void)
3750 obstack_free (&cache_space, NULL);
3751 obstack_init (&cache_space);
3752 memset (cache, '\000', sizeof (cache));
3755 static struct cache_entry **
3756 find_entry (const char *name, domain_enum namespace)
3758 int h = msymbol_hash (name) % HASH_SIZE;
3759 struct cache_entry **e;
3760 for (e = &cache[h]; *e != NULL; e = &(*e)->next)
3762 if (namespace == (*e)->namespace && strcmp (name, (*e)->name) == 0)
3768 /* Return (in SYM) the last cached definition for global or static symbol NAME
3769 in namespace DOMAIN. Returns 1 if entry found, 0 otherwise.
3770 If SYMTAB is non-NULL, store the symbol
3771 table in which the symbol was found there, or NULL if not found.
3772 *BLOCK is set to the block in which NAME is found. */
3775 lookup_cached_symbol (const char *name, domain_enum namespace,
3776 struct symbol **sym, struct block **block,
3777 struct symtab **symtab)
3779 struct cache_entry **e = find_entry (name, namespace);
3785 *block = (*e)->block;
3787 *symtab = (*e)->symtab;
3791 /* Set the cached definition of NAME in DOMAIN to SYM in block
3792 BLOCK and symbol table SYMTAB. */
3795 cache_symbol (const char *name, domain_enum namespace, struct symbol *sym,
3796 struct block *block, struct symtab *symtab)
3798 int h = msymbol_hash (name) % HASH_SIZE;
3800 struct cache_entry *e =
3801 (struct cache_entry *) obstack_alloc (&cache_space, sizeof (*e));
3804 e->name = copy = obstack_alloc (&cache_space, strlen (name) + 1);
3805 strcpy (copy, name);
3807 e->namespace = namespace;
3814 lookup_cached_symbol (const char *name, domain_enum namespace,
3815 struct symbol **sym, struct block **block,
3816 struct symtab **symtab)
3822 cache_symbol (const char *name, domain_enum namespace, struct symbol *sym,
3823 struct block *block, struct symtab *symtab)
3826 #endif /* GNAT_GDB */
3830 /* Return the result of a standard (literal, C-like) lookup of NAME in
3831 given DOMAIN, visible from lexical block BLOCK. */
3833 static struct symbol *
3834 standard_lookup (const char *name, const struct block *block,
3838 struct symtab *symtab;
3840 if (lookup_cached_symbol (name, domain, &sym, NULL, NULL))
3843 lookup_symbol_in_language (name, block, domain, language_c, 0, &symtab);
3844 cache_symbol (name, domain, sym, block_found, symtab);
3849 /* Non-zero iff there is at least one non-function/non-enumeral symbol
3850 in the symbol fields of SYMS[0..N-1]. We treat enumerals as functions,
3851 since they contend in overloading in the same way. */
3853 is_nonfunction (struct ada_symbol_info syms[], int n)
3857 for (i = 0; i < n; i += 1)
3858 if (TYPE_CODE (SYMBOL_TYPE (syms[i].sym)) != TYPE_CODE_FUNC
3859 && (TYPE_CODE (SYMBOL_TYPE (syms[i].sym)) != TYPE_CODE_ENUM
3860 || SYMBOL_CLASS (syms[i].sym) != LOC_CONST))
3866 /* If true (non-zero), then TYPE0 and TYPE1 represent equivalent
3867 struct types. Otherwise, they may not. */
3870 equiv_types (struct type *type0, struct type *type1)
3874 if (type0 == NULL || type1 == NULL
3875 || TYPE_CODE (type0) != TYPE_CODE (type1))
3877 if ((TYPE_CODE (type0) == TYPE_CODE_STRUCT
3878 || TYPE_CODE (type0) == TYPE_CODE_ENUM)
3879 && ada_type_name (type0) != NULL && ada_type_name (type1) != NULL
3880 && strcmp (ada_type_name (type0), ada_type_name (type1)) == 0)
3886 /* True iff SYM0 represents the same entity as SYM1, or one that is
3887 no more defined than that of SYM1. */
3890 lesseq_defined_than (struct symbol *sym0, struct symbol *sym1)
3894 if (SYMBOL_DOMAIN (sym0) != SYMBOL_DOMAIN (sym1)
3895 || SYMBOL_CLASS (sym0) != SYMBOL_CLASS (sym1))
3898 switch (SYMBOL_CLASS (sym0))
3904 struct type *type0 = SYMBOL_TYPE (sym0);
3905 struct type *type1 = SYMBOL_TYPE (sym1);
3906 char *name0 = SYMBOL_LINKAGE_NAME (sym0);
3907 char *name1 = SYMBOL_LINKAGE_NAME (sym1);
3908 int len0 = strlen (name0);
3910 TYPE_CODE (type0) == TYPE_CODE (type1)
3911 && (equiv_types (type0, type1)
3912 || (len0 < strlen (name1) && strncmp (name0, name1, len0) == 0
3913 && strncmp (name1 + len0, "___XV", 5) == 0));
3916 return SYMBOL_VALUE (sym0) == SYMBOL_VALUE (sym1)
3917 && equiv_types (SYMBOL_TYPE (sym0), SYMBOL_TYPE (sym1));
3923 /* Append (SYM,BLOCK,SYMTAB) to the end of the array of struct ada_symbol_info
3924 records in OBSTACKP. Do nothing if SYM is a duplicate. */
3927 add_defn_to_vec (struct obstack *obstackp,
3929 struct block *block, struct symtab *symtab)
3933 struct ada_symbol_info *prevDefns = defns_collected (obstackp, 0);
3935 if (SYMBOL_TYPE (sym) != NULL)
3936 CHECK_TYPEDEF (SYMBOL_TYPE (sym));
3937 for (i = num_defns_collected (obstackp) - 1; i >= 0; i -= 1)
3939 if (lesseq_defined_than (sym, prevDefns[i].sym))
3941 else if (lesseq_defined_than (prevDefns[i].sym, sym))
3943 prevDefns[i].sym = sym;
3944 prevDefns[i].block = block;
3945 prevDefns[i].symtab = symtab;
3951 struct ada_symbol_info info;
3955 info.symtab = symtab;
3956 obstack_grow (obstackp, &info, sizeof (struct ada_symbol_info));
3960 /* Number of ada_symbol_info structures currently collected in
3961 current vector in *OBSTACKP. */
3964 num_defns_collected (struct obstack *obstackp)
3966 return obstack_object_size (obstackp) / sizeof (struct ada_symbol_info);
3969 /* Vector of ada_symbol_info structures currently collected in current
3970 vector in *OBSTACKP. If FINISH, close off the vector and return
3971 its final address. */
3973 static struct ada_symbol_info *
3974 defns_collected (struct obstack *obstackp, int finish)
3977 return obstack_finish (obstackp);
3979 return (struct ada_symbol_info *) obstack_base (obstackp);
3982 /* Look, in partial_symtab PST, for symbol NAME in given namespace.
3983 Check the global symbols if GLOBAL, the static symbols if not.
3984 Do wild-card match if WILD. */
3986 static struct partial_symbol *
3987 ada_lookup_partial_symbol (struct partial_symtab *pst, const char *name,
3988 int global, domain_enum namespace, int wild)
3990 struct partial_symbol **start;
3991 int name_len = strlen (name);
3992 int length = (global ? pst->n_global_syms : pst->n_static_syms);
4001 pst->objfile->global_psymbols.list + pst->globals_offset :
4002 pst->objfile->static_psymbols.list + pst->statics_offset);
4006 for (i = 0; i < length; i += 1)
4008 struct partial_symbol *psym = start[i];
4010 if (SYMBOL_DOMAIN (psym) == namespace
4011 && wild_match (name, name_len, SYMBOL_LINKAGE_NAME (psym)))
4025 int M = (U + i) >> 1;
4026 struct partial_symbol *psym = start[M];
4027 if (SYMBOL_LINKAGE_NAME (psym)[0] < name[0])
4029 else if (SYMBOL_LINKAGE_NAME (psym)[0] > name[0])
4031 else if (strcmp (SYMBOL_LINKAGE_NAME (psym), name) < 0)
4042 struct partial_symbol *psym = start[i];
4044 if (SYMBOL_DOMAIN (psym) == namespace)
4046 int cmp = strncmp (name, SYMBOL_LINKAGE_NAME (psym), name_len);
4054 && is_name_suffix (SYMBOL_LINKAGE_NAME (psym)
4068 int M = (U + i) >> 1;
4069 struct partial_symbol *psym = start[M];
4070 if (SYMBOL_LINKAGE_NAME (psym)[0] < '_')
4072 else if (SYMBOL_LINKAGE_NAME (psym)[0] > '_')
4074 else if (strcmp (SYMBOL_LINKAGE_NAME (psym), "_ada_") < 0)
4085 struct partial_symbol *psym = start[i];
4087 if (SYMBOL_DOMAIN (psym) == namespace)
4091 cmp = (int) '_' - (int) SYMBOL_LINKAGE_NAME (psym)[0];
4094 cmp = strncmp ("_ada_", SYMBOL_LINKAGE_NAME (psym), 5);
4096 cmp = strncmp (name, SYMBOL_LINKAGE_NAME (psym) + 5,
4106 && is_name_suffix (SYMBOL_LINKAGE_NAME (psym)
4116 /* Find a symbol table containing symbol SYM or NULL if none. */
4118 static struct symtab *
4119 symtab_for_sym (struct symbol *sym)
4122 struct objfile *objfile;
4124 struct symbol *tmp_sym;
4125 struct dict_iterator iter;
4128 ALL_SYMTABS (objfile, s)
4130 switch (SYMBOL_CLASS (sym))
4138 case LOC_CONST_BYTES:
4139 b = BLOCKVECTOR_BLOCK (BLOCKVECTOR (s), GLOBAL_BLOCK);
4140 ALL_BLOCK_SYMBOLS (b, iter, tmp_sym) if (sym == tmp_sym)
4142 b = BLOCKVECTOR_BLOCK (BLOCKVECTOR (s), STATIC_BLOCK);
4143 ALL_BLOCK_SYMBOLS (b, iter, tmp_sym) if (sym == tmp_sym)
4149 switch (SYMBOL_CLASS (sym))
4155 case LOC_REGPARM_ADDR:
4160 case LOC_BASEREG_ARG:
4162 case LOC_COMPUTED_ARG:
4163 for (j = FIRST_LOCAL_BLOCK;
4164 j < BLOCKVECTOR_NBLOCKS (BLOCKVECTOR (s)); j += 1)
4166 b = BLOCKVECTOR_BLOCK (BLOCKVECTOR (s), j);
4167 ALL_BLOCK_SYMBOLS (b, iter, tmp_sym) if (sym == tmp_sym)
4178 /* Return a minimal symbol matching NAME according to Ada decoding
4179 rules. Returns NULL if there is no such minimal symbol. Names
4180 prefixed with "standard__" are handled specially: "standard__" is
4181 first stripped off, and only static and global symbols are searched. */
4183 struct minimal_symbol *
4184 ada_lookup_simple_minsym (const char *name)
4186 struct objfile *objfile;
4187 struct minimal_symbol *msymbol;
4190 if (strncmp (name, "standard__", sizeof ("standard__") - 1) == 0)
4192 name += sizeof ("standard__") - 1;
4196 wild_match = (strstr (name, "__") == NULL);
4198 ALL_MSYMBOLS (objfile, msymbol)
4200 if (ada_match_name (SYMBOL_LINKAGE_NAME (msymbol), name, wild_match)
4201 && MSYMBOL_TYPE (msymbol) != mst_solib_trampoline)
4208 /* Return up minimal symbol for NAME, folded and encoded according to
4209 Ada conventions, or NULL if none. The last two arguments are ignored. */
4211 static struct minimal_symbol *
4212 ada_lookup_minimal_symbol (const char *name, const char *sfile,
4213 struct objfile *objf)
4215 return ada_lookup_simple_minsym (ada_encode (name));
4218 /* For all subprograms that statically enclose the subprogram of the
4219 selected frame, add symbols matching identifier NAME in DOMAIN
4220 and their blocks to the list of data in OBSTACKP, as for
4221 ada_add_block_symbols (q.v.). If WILD, treat as NAME with a
4225 add_symbols_from_enclosing_procs (struct obstack *obstackp,
4226 const char *name, domain_enum namespace,
4229 #ifdef HAVE_ADD_SYMBOLS_FROM_ENCLOSING_PROCS
4230 /* Use a heuristic to find the frames of enclosing subprograms: treat the
4231 pointer-sized value at location 0 from the local-variable base of a
4232 frame as a static link, and then search up the call stack for a
4233 frame with that same local-variable base. */
4234 static struct symbol static_link_sym;
4235 static struct symbol *static_link;
4236 struct value *target_link_val;
4238 struct cleanup *old_chain = make_cleanup (null_cleanup, NULL);
4239 struct frame_info *frame;
4241 if (!target_has_stack)
4244 if (static_link == NULL)
4246 /* Initialize the local variable symbol that stands for the
4247 static link (when there is one). */
4248 static_link = &static_link_sym;
4249 SYMBOL_LINKAGE_NAME (static_link) = "";
4250 SYMBOL_LANGUAGE (static_link) = language_unknown;
4251 SYMBOL_CLASS (static_link) = LOC_LOCAL;
4252 SYMBOL_DOMAIN (static_link) = VAR_DOMAIN;
4253 SYMBOL_TYPE (static_link) = lookup_pointer_type (builtin_type_void);
4254 SYMBOL_VALUE (static_link) =
4255 -(long) TYPE_LENGTH (SYMBOL_TYPE (static_link));
4258 frame = get_selected_frame ();
4259 if (frame == NULL || inside_main_func (get_frame_address_in_block (frame)))
4262 target_link_val = read_var_value (static_link, frame);
4263 while (target_link_val != NULL
4264 && num_defns_collected (obstackp) == 0
4265 && frame_relative_level (frame) <= MAX_ENCLOSING_FRAME_LEVELS)
4267 CORE_ADDR target_link = value_as_address (target_link_val);
4269 frame = get_prev_frame (frame);
4273 if (get_frame_locals_address (frame) == target_link)
4275 struct block *block;
4279 block = get_frame_block (frame, 0);
4280 while (block != NULL && block_function (block) != NULL
4281 && num_defns_collected (obstackp) == 0)
4285 ada_add_block_symbols (obstackp, block, name, namespace,
4286 NULL, NULL, wild_match);
4288 block = BLOCK_SUPERBLOCK (block);
4293 do_cleanups (old_chain);
4297 /* FIXME: The next two routines belong in symtab.c */
4300 restore_language (void *lang)
4302 set_language ((enum language) lang);
4305 /* As for lookup_symbol, but performed as if the current language
4309 lookup_symbol_in_language (const char *name, const struct block *block,
4310 domain_enum domain, enum language lang,
4311 int *is_a_field_of_this, struct symtab **symtab)
4313 struct cleanup *old_chain
4314 = make_cleanup (restore_language, (void *) current_language->la_language);
4315 struct symbol *result;
4316 set_language (lang);
4317 result = lookup_symbol (name, block, domain, is_a_field_of_this, symtab);
4318 do_cleanups (old_chain);
4322 /* True if TYPE is definitely an artificial type supplied to a symbol
4323 for which no debugging information was given in the symbol file. */
4326 is_nondebugging_type (struct type *type)
4328 char *name = ada_type_name (type);
4329 return (name != NULL && strcmp (name, "<variable, no debug info>") == 0);
4332 /* Remove any non-debugging symbols in SYMS[0 .. NSYMS-1] that definitely
4333 duplicate other symbols in the list (The only case I know of where
4334 this happens is when object files containing stabs-in-ecoff are
4335 linked with files containing ordinary ecoff debugging symbols (or no
4336 debugging symbols)). Modifies SYMS to squeeze out deleted entries.
4337 Returns the number of items in the modified list. */
4340 remove_extra_symbols (struct ada_symbol_info *syms, int nsyms)
4347 if (SYMBOL_LINKAGE_NAME (syms[i].sym) != NULL
4348 && SYMBOL_CLASS (syms[i].sym) == LOC_STATIC
4349 && is_nondebugging_type (SYMBOL_TYPE (syms[i].sym)))
4351 for (j = 0; j < nsyms; j += 1)
4354 && SYMBOL_LINKAGE_NAME (syms[j].sym) != NULL
4355 && strcmp (SYMBOL_LINKAGE_NAME (syms[i].sym),
4356 SYMBOL_LINKAGE_NAME (syms[j].sym)) == 0
4357 && SYMBOL_CLASS (syms[i].sym) == SYMBOL_CLASS (syms[j].sym)
4358 && SYMBOL_VALUE_ADDRESS (syms[i].sym)
4359 == SYMBOL_VALUE_ADDRESS (syms[j].sym))
4362 for (k = i + 1; k < nsyms; k += 1)
4363 syms[k - 1] = syms[k];
4376 /* Given a type that corresponds to a renaming entity, use the type name
4377 to extract the scope (package name or function name, fully qualified,
4378 and following the GNAT encoding convention) where this renaming has been
4379 defined. The string returned needs to be deallocated after use. */
4382 xget_renaming_scope (struct type *renaming_type)
4384 /* The renaming types adhere to the following convention:
4385 <scope>__<rename>___<XR extension>.
4386 So, to extract the scope, we search for the "___XR" extension,
4387 and then backtrack until we find the first "__". */
4389 const char *name = type_name_no_tag (renaming_type);
4390 char *suffix = strstr (name, "___XR");
4395 /* Now, backtrack a bit until we find the first "__". Start looking
4396 at suffix - 3, as the <rename> part is at least one character long. */
4398 for (last = suffix - 3; last > name; last--)
4399 if (last[0] == '_' && last[1] == '_')
4402 /* Make a copy of scope and return it. */
4404 scope_len = last - name;
4405 scope = (char *) xmalloc ((scope_len + 1) * sizeof (char));
4407 strncpy (scope, name, scope_len);
4408 scope[scope_len] = '\0';
4413 /* Return nonzero if NAME corresponds to a package name. */
4416 is_package_name (const char *name)
4418 /* Here, We take advantage of the fact that no symbols are generated
4419 for packages, while symbols are generated for each function.
4420 So the condition for NAME represent a package becomes equivalent
4421 to NAME not existing in our list of symbols. There is only one
4422 small complication with library-level functions (see below). */
4426 /* If it is a function that has not been defined at library level,
4427 then we should be able to look it up in the symbols. */
4428 if (standard_lookup (name, NULL, VAR_DOMAIN) != NULL)
4431 /* Library-level function names start with "_ada_". See if function
4432 "_ada_" followed by NAME can be found. */
4434 /* Do a quick check that NAME does not contain "__", since library-level
4435 functions names can not contain "__" in them. */
4436 if (strstr (name, "__") != NULL)
4439 fun_name = xstrprintf ("_ada_%s", name);
4441 return (standard_lookup (fun_name, NULL, VAR_DOMAIN) == NULL);
4444 /* Return nonzero if SYM corresponds to a renaming entity that is
4445 visible from FUNCTION_NAME. */
4448 renaming_is_visible (const struct symbol *sym, char *function_name)
4450 char *scope = xget_renaming_scope (SYMBOL_TYPE (sym));
4452 make_cleanup (xfree, scope);
4454 /* If the rename has been defined in a package, then it is visible. */
4455 if (is_package_name (scope))
4458 /* Check that the rename is in the current function scope by checking
4459 that its name starts with SCOPE. */
4461 /* If the function name starts with "_ada_", it means that it is
4462 a library-level function. Strip this prefix before doing the
4463 comparison, as the encoding for the renaming does not contain
4465 if (strncmp (function_name, "_ada_", 5) == 0)
4468 return (strncmp (function_name, scope, strlen (scope)) == 0);
4471 /* Iterates over the SYMS list and remove any entry that corresponds to
4472 a renaming entity that is not visible from the function associated
4476 GNAT emits a type following a specified encoding for each renaming
4477 entity. Unfortunately, STABS currently does not support the definition
4478 of types that are local to a given lexical block, so all renamings types
4479 are emitted at library level. As a consequence, if an application
4480 contains two renaming entities using the same name, and a user tries to
4481 print the value of one of these entities, the result of the ada symbol
4482 lookup will also contain the wrong renaming type.
4484 This function partially covers for this limitation by attempting to
4485 remove from the SYMS list renaming symbols that should be visible
4486 from CURRENT_BLOCK. However, there does not seem be a 100% reliable
4487 method with the current information available. The implementation
4488 below has a couple of limitations (FIXME: brobecker-2003-05-12):
4490 - When the user tries to print a rename in a function while there
4491 is another rename entity defined in a package: Normally, the
4492 rename in the function has precedence over the rename in the
4493 package, so the latter should be removed from the list. This is
4494 currently not the case.
4496 - This function will incorrectly remove valid renames if
4497 the CURRENT_BLOCK corresponds to a function which symbol name
4498 has been changed by an "Export" pragma. As a consequence,
4499 the user will be unable to print such rename entities. */
4502 remove_out_of_scope_renamings (struct ada_symbol_info *syms,
4503 int nsyms, struct block *current_block)
4505 struct symbol *current_function;
4506 char *current_function_name;
4509 /* Extract the function name associated to CURRENT_BLOCK.
4510 Abort if unable to do so. */
4512 if (current_block == NULL)
4515 current_function = block_function (current_block);
4516 if (current_function == NULL)
4519 current_function_name = SYMBOL_LINKAGE_NAME (current_function);
4520 if (current_function_name == NULL)
4523 /* Check each of the symbols, and remove it from the list if it is
4524 a type corresponding to a renaming that is out of the scope of
4525 the current block. */
4530 if (ada_is_object_renaming (syms[i].sym)
4531 && !renaming_is_visible (syms[i].sym, current_function_name))
4534 for (j = i + 1; j < nsyms; j++)
4535 syms[j - 1] = syms[j];
4545 /* Find symbols in DOMAIN matching NAME0, in BLOCK0 and enclosing
4546 scope and in global scopes, returning the number of matches. Sets
4547 *RESULTS to point to a vector of (SYM,BLOCK,SYMTAB) triples,
4548 indicating the symbols found and the blocks and symbol tables (if
4549 any) in which they were found. This vector are transient---good only to
4550 the next call of ada_lookup_symbol_list. Any non-function/non-enumeral
4551 symbol match within the nest of blocks whose innermost member is BLOCK0,
4552 is the one match returned (no other matches in that or
4553 enclosing blocks is returned). If there are any matches in or
4554 surrounding BLOCK0, then these alone are returned. Otherwise, the
4555 search extends to global and file-scope (static) symbol tables.
4556 Names prefixed with "standard__" are handled specially: "standard__"
4557 is first stripped off, and only static and global symbols are searched. */
4560 ada_lookup_symbol_list (const char *name0, const struct block *block0,
4561 domain_enum namespace,
4562 struct ada_symbol_info **results)
4566 struct partial_symtab *ps;
4567 struct blockvector *bv;
4568 struct objfile *objfile;
4569 struct block *block;
4571 struct minimal_symbol *msymbol;
4577 obstack_free (&symbol_list_obstack, NULL);
4578 obstack_init (&symbol_list_obstack);
4582 /* Search specified block and its superiors. */
4584 wild_match = (strstr (name0, "__") == NULL);
4586 block = (struct block *) block0; /* FIXME: No cast ought to be
4587 needed, but adding const will
4588 have a cascade effect. */
4589 if (strncmp (name0, "standard__", sizeof ("standard__") - 1) == 0)
4593 name = name0 + sizeof ("standard__") - 1;
4597 while (block != NULL)
4600 ada_add_block_symbols (&symbol_list_obstack, block, name,
4601 namespace, NULL, NULL, wild_match);
4603 /* If we found a non-function match, assume that's the one. */
4604 if (is_nonfunction (defns_collected (&symbol_list_obstack, 0),
4605 num_defns_collected (&symbol_list_obstack)))
4608 block = BLOCK_SUPERBLOCK (block);
4611 /* If no luck so far, try to find NAME as a local symbol in some lexically
4612 enclosing subprogram. */
4613 if (num_defns_collected (&symbol_list_obstack) == 0 && block_depth > 2)
4614 add_symbols_from_enclosing_procs (&symbol_list_obstack,
4615 name, namespace, wild_match);
4617 /* If we found ANY matches among non-global symbols, we're done. */
4619 if (num_defns_collected (&symbol_list_obstack) > 0)
4623 if (lookup_cached_symbol (name0, namespace, &sym, &block, &s))
4626 add_defn_to_vec (&symbol_list_obstack, sym, block, s);
4630 /* Now add symbols from all global blocks: symbol tables, minimal symbol
4631 tables, and psymtab's. */
4633 ALL_SYMTABS (objfile, s)
4638 bv = BLOCKVECTOR (s);
4639 block = BLOCKVECTOR_BLOCK (bv, GLOBAL_BLOCK);
4640 ada_add_block_symbols (&symbol_list_obstack, block, name, namespace,
4641 objfile, s, wild_match);
4644 if (namespace == VAR_DOMAIN)
4646 ALL_MSYMBOLS (objfile, msymbol)
4648 if (ada_match_name (SYMBOL_LINKAGE_NAME (msymbol), name, wild_match))
4650 switch (MSYMBOL_TYPE (msymbol))
4652 case mst_solib_trampoline:
4655 s = find_pc_symtab (SYMBOL_VALUE_ADDRESS (msymbol));
4658 int ndefns0 = num_defns_collected (&symbol_list_obstack);
4660 bv = BLOCKVECTOR (s);
4661 block = BLOCKVECTOR_BLOCK (bv, GLOBAL_BLOCK);
4662 ada_add_block_symbols (&symbol_list_obstack, block,
4663 SYMBOL_LINKAGE_NAME (msymbol),
4664 namespace, objfile, s, wild_match);
4666 if (num_defns_collected (&symbol_list_obstack) == ndefns0)
4668 block = BLOCKVECTOR_BLOCK (bv, STATIC_BLOCK);
4669 ada_add_block_symbols (&symbol_list_obstack, block,
4670 SYMBOL_LINKAGE_NAME (msymbol),
4671 namespace, objfile, s,
4680 ALL_PSYMTABS (objfile, ps)
4684 && ada_lookup_partial_symbol (ps, name, 1, namespace, wild_match))
4686 s = PSYMTAB_TO_SYMTAB (ps);
4689 bv = BLOCKVECTOR (s);
4690 block = BLOCKVECTOR_BLOCK (bv, GLOBAL_BLOCK);
4691 ada_add_block_symbols (&symbol_list_obstack, block, name,
4692 namespace, objfile, s, wild_match);
4696 /* Now add symbols from all per-file blocks if we've gotten no hits
4697 (Not strictly correct, but perhaps better than an error).
4698 Do the symtabs first, then check the psymtabs. */
4700 if (num_defns_collected (&symbol_list_obstack) == 0)
4703 ALL_SYMTABS (objfile, s)
4708 bv = BLOCKVECTOR (s);
4709 block = BLOCKVECTOR_BLOCK (bv, STATIC_BLOCK);
4710 ada_add_block_symbols (&symbol_list_obstack, block, name, namespace,
4711 objfile, s, wild_match);
4714 ALL_PSYMTABS (objfile, ps)
4718 && ada_lookup_partial_symbol (ps, name, 0, namespace, wild_match))
4720 s = PSYMTAB_TO_SYMTAB (ps);
4721 bv = BLOCKVECTOR (s);
4724 block = BLOCKVECTOR_BLOCK (bv, STATIC_BLOCK);
4725 ada_add_block_symbols (&symbol_list_obstack, block, name,
4726 namespace, objfile, s, wild_match);
4732 ndefns = num_defns_collected (&symbol_list_obstack);
4733 *results = defns_collected (&symbol_list_obstack, 1);
4735 ndefns = remove_extra_symbols (*results, ndefns);
4738 cache_symbol (name0, namespace, NULL, NULL, NULL);
4740 if (ndefns == 1 && cacheIfUnique)
4741 cache_symbol (name0, namespace, (*results)[0].sym, (*results)[0].block,
4742 (*results)[0].symtab);
4744 ndefns = remove_out_of_scope_renamings (*results, ndefns,
4745 (struct block *) block0);
4750 /* Return a symbol in DOMAIN matching NAME, in BLOCK0 and enclosing
4751 scope and in global scopes, or NULL if none. NAME is folded and
4752 encoded first. Otherwise, the result is as for ada_lookup_symbol_list,
4753 but is disambiguated by user query if needed. *IS_A_FIELD_OF_THIS is
4754 set to 0 and *SYMTAB is set to the symbol table in which the symbol
4755 was found (in both cases, these assignments occur only if the
4756 pointers are non-null). */
4760 ada_lookup_symbol (const char *name, const struct block *block0,
4761 domain_enum namespace, int *is_a_field_of_this,
4762 struct symtab **symtab)
4764 struct ada_symbol_info *candidates;
4767 n_candidates = ada_lookup_symbol_list (ada_encode (ada_fold_name (name)),
4768 block0, namespace, &candidates);
4770 if (n_candidates == 0)
4772 else if (n_candidates != 1)
4773 user_select_syms (candidates, n_candidates, 1);
4775 if (is_a_field_of_this != NULL)
4776 *is_a_field_of_this = 0;
4780 *symtab = candidates[0].symtab;
4781 if (*symtab == NULL && candidates[0].block != NULL)
4783 struct objfile *objfile;
4786 struct blockvector *bv;
4788 /* Search the list of symtabs for one which contains the
4789 address of the start of this block. */
4790 ALL_SYMTABS (objfile, s)
4792 bv = BLOCKVECTOR (s);
4793 b = BLOCKVECTOR_BLOCK (bv, GLOBAL_BLOCK);
4794 if (BLOCK_START (b) <= BLOCK_START (candidates[0].block)
4795 && BLOCK_END (b) > BLOCK_START (candidates[0].block))
4798 return fixup_symbol_section (candidates[0].sym, objfile);
4800 return fixup_symbol_section (candidates[0].sym, NULL);
4804 return candidates[0].sym;
4807 static struct symbol *
4808 ada_lookup_symbol_nonlocal (const char *name,
4809 const char *linkage_name,
4810 const struct block *block,
4811 const domain_enum domain, struct symtab **symtab)
4813 if (linkage_name == NULL)
4814 linkage_name = name;
4815 return ada_lookup_symbol (linkage_name, block_static_block (block), domain,
4820 /* True iff STR is a possible encoded suffix of a normal Ada name
4821 that is to be ignored for matching purposes. Suffixes of parallel
4822 names (e.g., XVE) are not included here. Currently, the possible suffixes
4823 are given by either of the regular expression:
4825 (__[0-9]+)?\.[0-9]+ [nested subprogram suffix, on platforms such
4827 ___[0-9]+ [nested subprogram suffix, on platforms such as HP/UX]
4828 (X[nb]*)?((\$|__)[0-9](_?[0-9]+)|___(LJM|X([FDBUP].*|R[^T]?)))?$
4832 is_name_suffix (const char *str)
4835 const char *matching;
4836 const int len = strlen (str);
4838 /* (__[0-9]+)?\.[0-9]+ */
4840 if (len > 3 && str[0] == '_' && str[1] == '_' && isdigit (str[2]))
4843 while (isdigit (matching[0]))
4845 if (matching[0] == '\0')
4849 if (matching[0] == '.')
4852 while (isdigit (matching[0]))
4854 if (matching[0] == '\0')
4859 if (len > 3 && str[0] == '_' && str[1] == '_' && str[2] == '_')
4862 while (isdigit (matching[0]))
4864 if (matching[0] == '\0')
4868 /* ??? We should not modify STR directly, as we are doing below. This
4869 is fine in this case, but may become problematic later if we find
4870 that this alternative did not work, and want to try matching
4871 another one from the begining of STR. Since we modified it, we
4872 won't be able to find the begining of the string anymore! */
4876 while (str[0] != '_' && str[0] != '\0')
4878 if (str[0] != 'n' && str[0] != 'b')
4883 if (str[0] == '\000')
4887 if (str[1] != '_' || str[2] == '\000')
4891 if (strcmp (str + 3, "LJM") == 0)
4895 if (str[4] == 'F' || str[4] == 'D' || str[4] == 'B'
4896 || str[4] == 'U' || str[4] == 'P')
4898 if (str[4] == 'R' && str[5] != 'T')
4902 if (!isdigit (str[2]))
4904 for (k = 3; str[k] != '\0'; k += 1)
4905 if (!isdigit (str[k]) && str[k] != '_')
4909 if (str[0] == '$' && isdigit (str[1]))
4911 for (k = 2; str[k] != '\0'; k += 1)
4912 if (!isdigit (str[k]) && str[k] != '_')
4919 /* Return nonzero if the given string starts with a dot ('.')
4920 followed by zero or more digits.
4922 Note: brobecker/2003-11-10: A forward declaration has not been
4923 added at the begining of this file yet, because this function
4924 is only used to work around a problem found during wild matching
4925 when trying to match minimal symbol names against symbol names
4926 obtained from dwarf-2 data. This function is therefore currently
4927 only used in wild_match() and is likely to be deleted when the
4928 problem in dwarf-2 is fixed. */
4931 is_dot_digits_suffix (const char *str)
4937 while (isdigit (str[0]))
4939 return (str[0] == '\0');
4942 /* True if NAME represents a name of the form A1.A2....An, n>=1 and
4943 PATN[0..PATN_LEN-1] = Ak.Ak+1.....An for some k >= 1. Ignores
4944 informational suffixes of NAME (i.e., for which is_name_suffix is
4948 wild_match (const char *patn0, int patn_len, const char *name0)
4954 /* FIXME: brobecker/2003-11-10: For some reason, the symbol name
4955 stored in the symbol table for nested function names is sometimes
4956 different from the name of the associated entity stored in
4957 the dwarf-2 data: This is the case for nested subprograms, where
4958 the minimal symbol name contains a trailing ".[:digit:]+" suffix,
4959 while the symbol name from the dwarf-2 data does not.
4961 Although the DWARF-2 standard documents that entity names stored
4962 in the dwarf-2 data should be identical to the name as seen in
4963 the source code, GNAT takes a different approach as we already use
4964 a special encoding mechanism to convey the information so that
4965 a C debugger can still use the information generated to debug
4966 Ada programs. A corollary is that the symbol names in the dwarf-2
4967 data should match the names found in the symbol table. I therefore
4968 consider this issue as a compiler defect.
4970 Until the compiler is properly fixed, we work-around the problem
4971 by ignoring such suffixes during the match. We do so by making
4972 a copy of PATN0 and NAME0, and then by stripping such a suffix
4973 if present. We then perform the match on the resulting strings. */
4976 name_len = strlen (name0);
4978 name = (char *) alloca ((name_len + 1) * sizeof (char));
4979 strcpy (name, name0);
4980 dot = strrchr (name, '.');
4981 if (dot != NULL && is_dot_digits_suffix (dot))
4984 patn = (char *) alloca ((patn_len + 1) * sizeof (char));
4985 strncpy (patn, patn0, patn_len);
4986 patn[patn_len] = '\0';
4987 dot = strrchr (patn, '.');
4988 if (dot != NULL && is_dot_digits_suffix (dot))
4991 patn_len = dot - patn;
4995 /* Now perform the wild match. */
4997 name_len = strlen (name);
4998 if (name_len >= patn_len + 5 && strncmp (name, "_ada_", 5) == 0
4999 && strncmp (patn, name + 5, patn_len) == 0
5000 && is_name_suffix (name + patn_len + 5))
5003 while (name_len >= patn_len)
5005 if (strncmp (patn, name, patn_len) == 0
5006 && is_name_suffix (name + patn_len))
5014 && name[0] != '.' && (name[0] != '_' || name[1] != '_'));
5019 if (!islower (name[2]))
5026 if (!islower (name[1]))
5037 /* Add symbols from BLOCK matching identifier NAME in DOMAIN to
5038 vector *defn_symbols, updating the list of symbols in OBSTACKP
5039 (if necessary). If WILD, treat as NAME with a wildcard prefix.
5040 OBJFILE is the section containing BLOCK.
5041 SYMTAB is recorded with each symbol added. */
5044 ada_add_block_symbols (struct obstack *obstackp,
5045 struct block *block, const char *name,
5046 domain_enum domain, struct objfile *objfile,
5047 struct symtab *symtab, int wild)
5049 struct dict_iterator iter;
5050 int name_len = strlen (name);
5051 /* A matching argument symbol, if any. */
5052 struct symbol *arg_sym;
5053 /* Set true when we find a matching non-argument symbol. */
5062 ALL_BLOCK_SYMBOLS (block, iter, sym)
5064 if (SYMBOL_DOMAIN (sym) == domain
5065 && wild_match (name, name_len, SYMBOL_LINKAGE_NAME (sym)))
5067 switch (SYMBOL_CLASS (sym))
5073 case LOC_REGPARM_ADDR:
5074 case LOC_BASEREG_ARG:
5075 case LOC_COMPUTED_ARG:
5078 case LOC_UNRESOLVED:
5082 add_defn_to_vec (obstackp,
5083 fixup_symbol_section (sym, objfile),
5092 ALL_BLOCK_SYMBOLS (block, iter, sym)
5094 if (SYMBOL_DOMAIN (sym) == domain)
5096 int cmp = strncmp (name, SYMBOL_LINKAGE_NAME (sym), name_len);
5098 && is_name_suffix (SYMBOL_LINKAGE_NAME (sym) + name_len))
5100 switch (SYMBOL_CLASS (sym))
5106 case LOC_REGPARM_ADDR:
5107 case LOC_BASEREG_ARG:
5108 case LOC_COMPUTED_ARG:
5111 case LOC_UNRESOLVED:
5115 add_defn_to_vec (obstackp,
5116 fixup_symbol_section (sym, objfile),
5125 if (!found_sym && arg_sym != NULL)
5127 add_defn_to_vec (obstackp,
5128 fixup_symbol_section (arg_sym, objfile),
5137 ALL_BLOCK_SYMBOLS (block, iter, sym)
5139 if (SYMBOL_DOMAIN (sym) == domain)
5143 cmp = (int) '_' - (int) SYMBOL_LINKAGE_NAME (sym)[0];
5146 cmp = strncmp ("_ada_", SYMBOL_LINKAGE_NAME (sym), 5);
5148 cmp = strncmp (name, SYMBOL_LINKAGE_NAME (sym) + 5,
5153 && is_name_suffix (SYMBOL_LINKAGE_NAME (sym) + name_len + 5))
5155 switch (SYMBOL_CLASS (sym))
5161 case LOC_REGPARM_ADDR:
5162 case LOC_BASEREG_ARG:
5163 case LOC_COMPUTED_ARG:
5166 case LOC_UNRESOLVED:
5170 add_defn_to_vec (obstackp,
5171 fixup_symbol_section (sym, objfile),
5180 /* NOTE: This really shouldn't be needed for _ada_ symbols.
5181 They aren't parameters, right? */
5182 if (!found_sym && arg_sym != NULL)
5184 add_defn_to_vec (obstackp,
5185 fixup_symbol_section (arg_sym, objfile),
5193 /* Symbol Completion */
5195 /* If SYM_NAME is a completion candidate for TEXT, return this symbol
5196 name in a form that's appropriate for the completion. The result
5197 does not need to be deallocated, but is only good until the next call.
5199 TEXT_LEN is equal to the length of TEXT.
5200 Perform a wild match if WILD_MATCH is set.
5201 ENCODED should be set if TEXT represents the start of a symbol name
5202 in its encoded form. */
5205 symbol_completion_match (const char *sym_name,
5206 const char *text, int text_len,
5207 int wild_match, int encoded)
5210 const int verbatim_match = (text[0] == '<');
5215 /* Strip the leading angle bracket. */
5220 /* First, test against the fully qualified name of the symbol. */
5222 if (strncmp (sym_name, text, text_len) == 0)
5225 if (match && !encoded)
5227 /* One needed check before declaring a positive match is to verify
5228 that iff we are doing a verbatim match, the decoded version
5229 of the symbol name starts with '<'. Otherwise, this symbol name
5230 is not a suitable completion. */
5231 const char *sym_name_copy = sym_name;
5232 int has_angle_bracket;
5234 sym_name = ada_decode (sym_name);
5235 has_angle_bracket = (sym_name[0] == '<');
5236 match = (has_angle_bracket == verbatim_match);
5237 sym_name = sym_name_copy;
5240 if (match && !verbatim_match)
5242 /* When doing non-verbatim match, another check that needs to
5243 be done is to verify that the potentially matching symbol name
5244 does not include capital letters, because the ada-mode would
5245 not be able to understand these symbol names without the
5246 angle bracket notation. */
5249 for (tmp = sym_name; *tmp != '\0' && !isupper (*tmp); tmp++);
5254 /* Second: Try wild matching... */
5256 if (!match && wild_match)
5258 /* Since we are doing wild matching, this means that TEXT
5259 may represent an unqualified symbol name. We therefore must
5260 also compare TEXT against the unqualified name of the symbol. */
5261 sym_name = ada_unqualified_name (ada_decode (sym_name));
5263 if (strncmp (sym_name, text, text_len) == 0)
5267 /* Finally: If we found a mach, prepare the result to return. */
5273 sym_name = add_angle_brackets (sym_name);
5276 sym_name = ada_decode (sym_name);
5281 /* A companion function to ada_make_symbol_completion_list().
5282 Check if SYM_NAME represents a symbol which name would be suitable
5283 to complete TEXT (TEXT_LEN is the length of TEXT), in which case
5284 it is appended at the end of the given string vector SV.
5286 ORIG_TEXT is the string original string from the user command
5287 that needs to be completed. WORD is the entire command on which
5288 completion should be performed. These two parameters are used to
5289 determine which part of the symbol name should be added to the
5291 if WILD_MATCH is set, then wild matching is performed.
5292 ENCODED should be set if TEXT represents a symbol name in its
5293 encoded formed (in which case the completion should also be
5297 symbol_completion_add (struct string_vector *sv,
5298 const char *sym_name,
5299 const char *text, int text_len,
5300 const char *orig_text, const char *word,
5301 int wild_match, int encoded)
5303 const char *match = symbol_completion_match (sym_name, text, text_len,
5304 wild_match, encoded);
5310 /* We found a match, so add the appropriate completion to the given
5313 if (word == orig_text)
5315 completion = xmalloc (strlen (match) + 5);
5316 strcpy (completion, match);
5318 else if (word > orig_text)
5320 /* Return some portion of sym_name. */
5321 completion = xmalloc (strlen (match) + 5);
5322 strcpy (completion, match + (word - orig_text));
5326 /* Return some of ORIG_TEXT plus sym_name. */
5327 completion = xmalloc (strlen (match) + (orig_text - word) + 5);
5328 strncpy (completion, word, orig_text - word);
5329 completion[orig_text - word] = '\0';
5330 strcat (completion, match);
5333 string_vector_append (sv, completion);
5336 /* Return a list of possible symbol names completing TEXT0. The list
5337 is NULL terminated. WORD is the entire command on which completion
5341 ada_make_symbol_completion_list (const char *text0, const char *word)
5343 /* Note: This function is almost a copy of make_symbol_completion_list(),
5344 except it has been adapted for Ada. It is somewhat of a shame to
5345 duplicate so much code, but we don't really have the infrastructure
5346 yet to develop a language-aware version of he symbol completer... */
5351 struct string_vector result = xnew_string_vector (128);
5354 struct partial_symtab *ps;
5355 struct minimal_symbol *msymbol;
5356 struct objfile *objfile;
5357 struct block *b, *surrounding_static_block = 0;
5359 struct dict_iterator iter;
5361 if (text0[0] == '<')
5363 text = xstrdup (text0);
5364 make_cleanup (xfree, text);
5365 text_len = strlen (text);
5371 text = xstrdup (ada_encode (text0));
5372 make_cleanup (xfree, text);
5373 text_len = strlen (text);
5374 for (i = 0; i < text_len; i++)
5375 text[i] = tolower (text[i]);
5377 /* FIXME: brobecker/2003-09-17: When we get rid of ADA_RETAIN_DOTS,
5378 we can restrict the wild_match check to searching "__" only. */
5379 wild_match = (strstr (text0, "__") == NULL
5380 && strchr (text0, '.') == NULL);
5381 encoded = (strstr (text0, "__") != NULL);
5384 /* First, look at the partial symtab symbols. */
5385 ALL_PSYMTABS (objfile, ps)
5387 struct partial_symbol **psym;
5389 /* If the psymtab's been read in we'll get it when we search
5390 through the blockvector. */
5394 for (psym = objfile->global_psymbols.list + ps->globals_offset;
5395 psym < (objfile->global_psymbols.list + ps->globals_offset
5396 + ps->n_global_syms); psym++)
5399 symbol_completion_add (&result, SYMBOL_LINKAGE_NAME (*psym),
5400 text, text_len, text0, word,
5401 wild_match, encoded);
5404 for (psym = objfile->static_psymbols.list + ps->statics_offset;
5405 psym < (objfile->static_psymbols.list + ps->statics_offset
5406 + ps->n_static_syms); psym++)
5409 symbol_completion_add (&result, SYMBOL_LINKAGE_NAME (*psym),
5410 text, text_len, text0, word,
5411 wild_match, encoded);
5415 /* At this point scan through the misc symbol vectors and add each
5416 symbol you find to the list. Eventually we want to ignore
5417 anything that isn't a text symbol (everything else will be
5418 handled by the psymtab code above). */
5420 ALL_MSYMBOLS (objfile, msymbol)
5423 symbol_completion_add (&result, SYMBOL_LINKAGE_NAME (msymbol),
5424 text, text_len, text0, word, wild_match, encoded);
5427 /* Search upwards from currently selected frame (so that we can
5428 complete on local vars. */
5430 for (b = get_selected_block (0); b != NULL; b = BLOCK_SUPERBLOCK (b))
5432 if (!BLOCK_SUPERBLOCK (b))
5433 surrounding_static_block = b; /* For elmin of dups */
5435 ALL_BLOCK_SYMBOLS (b, iter, sym)
5437 symbol_completion_add (&result, SYMBOL_LINKAGE_NAME (sym),
5438 text, text_len, text0, word,
5439 wild_match, encoded);
5443 /* Go through the symtabs and check the externs and statics for
5444 symbols which match. */
5446 ALL_SYMTABS (objfile, s)
5449 b = BLOCKVECTOR_BLOCK (BLOCKVECTOR (s), GLOBAL_BLOCK);
5450 ALL_BLOCK_SYMBOLS (b, iter, sym)
5452 symbol_completion_add (&result, SYMBOL_LINKAGE_NAME (sym),
5453 text, text_len, text0, word,
5454 wild_match, encoded);
5458 ALL_SYMTABS (objfile, s)
5461 b = BLOCKVECTOR_BLOCK (BLOCKVECTOR (s), STATIC_BLOCK);
5462 /* Don't do this block twice. */
5463 if (b == surrounding_static_block)
5465 ALL_BLOCK_SYMBOLS (b, iter, sym)
5467 symbol_completion_add (&result, SYMBOL_LINKAGE_NAME (sym),
5468 text, text_len, text0, word,
5469 wild_match, encoded);
5473 /* Append the closing NULL entry. */
5474 string_vector_append (&result, NULL);
5476 return (result.array);
5479 #endif /* GNAT_GDB */
5482 /* Breakpoint-related */
5484 /* Assuming that LINE is pointing at the beginning of an argument to
5485 'break', return a pointer to the delimiter for the initial segment
5486 of that name. This is the first ':', ' ', or end of LINE. */
5489 ada_start_decode_line_1 (char *line)
5491 /* NOTE: strpbrk would be more elegant, but I am reluctant to be
5492 the first to use such a library function in GDB code. */
5494 for (p = line; *p != '\000' && *p != ' ' && *p != ':'; p += 1)
5499 /* *SPEC points to a function and line number spec (as in a break
5500 command), following any initial file name specification.
5502 Return all symbol table/line specfications (sals) consistent with the
5503 information in *SPEC and FILE_TABLE in the following sense:
5504 + FILE_TABLE is null, or the sal refers to a line in the file
5505 named by FILE_TABLE.
5506 + If *SPEC points to an argument with a trailing ':LINENUM',
5507 then the sal refers to that line (or one following it as closely as
5509 + If *SPEC does not start with '*', the sal is in a function with
5512 Returns with 0 elements if no matching non-minimal symbols found.
5514 If *SPEC begins with a function name of the form <NAME>, then NAME
5515 is taken as a literal name; otherwise the function name is subject
5516 to the usual encoding.
5518 *SPEC is updated to point after the function/line number specification.
5520 FUNFIRSTLINE is non-zero if we desire the first line of real code
5523 If CANONICAL is non-NULL, and if any of the sals require a
5524 'canonical line spec', then *CANONICAL is set to point to an array
5525 of strings, corresponding to and equal in length to the returned
5526 list of sals, such that (*CANONICAL)[i] is non-null and contains a
5527 canonical line spec for the ith returned sal, if needed. If no
5528 canonical line specs are required and CANONICAL is non-null,
5529 *CANONICAL is set to NULL.
5531 A 'canonical line spec' is simply a name (in the format of the
5532 breakpoint command) that uniquely identifies a breakpoint position,
5533 with no further contextual information or user selection. It is
5534 needed whenever the file name, function name, and line number
5535 information supplied is insufficient for this unique
5536 identification. Currently overloaded functions, the name '*',
5537 or static functions without a filename yield a canonical line spec.
5538 The array and the line spec strings are allocated on the heap; it
5539 is the caller's responsibility to free them. */
5541 struct symtabs_and_lines
5542 ada_finish_decode_line_1 (char **spec, struct symtab *file_table,
5543 int funfirstline, char ***canonical)
5545 struct ada_symbol_info *symbols;
5546 const struct block *block;
5547 int n_matches, i, line_num;
5548 struct symtabs_and_lines selected;
5549 struct cleanup *old_chain = make_cleanup (null_cleanup, NULL);
5555 char *unquoted_name;
5557 if (file_table == NULL)
5558 block = block_static_block (get_selected_block (0));
5560 block = BLOCKVECTOR_BLOCK (BLOCKVECTOR (file_table), STATIC_BLOCK);
5562 if (canonical != NULL)
5563 *canonical = (char **) NULL;
5565 is_quoted = (**spec && strchr (get_gdb_completer_quote_characters (),
5574 *spec = skip_quoted (*spec);
5575 while (**spec != '\000'
5576 && !strchr (ada_completer_word_break_characters, **spec))
5582 if (file_table != NULL && (*spec)[0] == ':' && isdigit ((*spec)[1]))
5584 line_num = strtol (*spec + 1, spec, 10);
5585 while (**spec == ' ' || **spec == '\t')
5592 error ("Wild-card function with no line number or file name.");
5594 return ada_sals_for_line (file_table->filename, line_num,
5595 funfirstline, canonical, 0);
5598 if (name[0] == '\'')
5606 unquoted_name = (char *) alloca (len - 1);
5607 memcpy (unquoted_name, name + 1, len - 2);
5608 unquoted_name[len - 2] = '\000';
5613 unquoted_name = (char *) alloca (len + 1);
5614 memcpy (unquoted_name, name, len);
5615 unquoted_name[len] = '\000';
5616 lower_name = (char *) alloca (len + 1);
5617 for (i = 0; i < len; i += 1)
5618 lower_name[i] = tolower (name[i]);
5619 lower_name[len] = '\000';
5623 if (lower_name != NULL)
5624 n_matches = ada_lookup_symbol_list (ada_encode (lower_name), block,
5625 VAR_DOMAIN, &symbols);
5627 n_matches = ada_lookup_symbol_list (unquoted_name, block,
5628 VAR_DOMAIN, &symbols);
5629 if (n_matches == 0 && line_num >= 0)
5630 error ("No line number information found for %s.", unquoted_name);
5631 else if (n_matches == 0)
5633 #ifdef HPPA_COMPILER_BUG
5634 /* FIXME: See comment in symtab.c::decode_line_1 */
5636 volatile struct symtab_and_line val;
5637 #define volatile /*nothing */
5639 struct symtab_and_line val;
5641 struct minimal_symbol *msymbol;
5646 if (lower_name != NULL)
5647 msymbol = ada_lookup_simple_minsym (ada_encode (lower_name));
5648 if (msymbol == NULL)
5649 msymbol = ada_lookup_simple_minsym (unquoted_name);
5650 if (msymbol != NULL)
5652 val.pc = SYMBOL_VALUE_ADDRESS (msymbol);
5653 val.section = SYMBOL_BFD_SECTION (msymbol);
5656 val.pc = gdbarch_convert_from_func_ptr_addr (current_gdbarch,
5659 SKIP_PROLOGUE (val.pc);
5661 selected.sals = (struct symtab_and_line *)
5662 xmalloc (sizeof (struct symtab_and_line));
5663 selected.sals[0] = val;
5668 if (!have_full_symbols ()
5669 && !have_partial_symbols () && !have_minimal_symbols ())
5670 error ("No symbol table is loaded. Use the \"file\" command.");
5672 error ("Function \"%s\" not defined.", unquoted_name);
5673 return selected; /* for lint */
5678 struct symtabs_and_lines best_sal =
5679 find_sal_from_funcs_and_line (file_table->filename, line_num,
5680 symbols, n_matches);
5682 adjust_pc_past_prologue (&best_sal.sals[0].pc);
5687 selected.nelts = user_select_syms (symbols, n_matches, n_matches);
5690 selected.sals = (struct symtab_and_line *)
5691 xmalloc (sizeof (struct symtab_and_line) * selected.nelts);
5692 memset (selected.sals, 0, selected.nelts * sizeof (selected.sals[i]));
5693 make_cleanup (xfree, selected.sals);
5696 while (i < selected.nelts)
5698 if (SYMBOL_CLASS (symbols[i].sym) == LOC_BLOCK)
5700 = find_function_start_sal (symbols[i].sym, funfirstline);
5701 else if (SYMBOL_LINE (symbols[i].sym) != 0)
5703 selected.sals[i].symtab =
5705 ? symbols[i].symtab : symtab_for_sym (symbols[i].sym);
5706 selected.sals[i].line = SYMBOL_LINE (symbols[i].sym);
5708 else if (line_num >= 0)
5710 /* Ignore this choice */
5711 symbols[i] = symbols[selected.nelts - 1];
5712 selected.nelts -= 1;
5716 error ("Line number not known for symbol \"%s\"", unquoted_name);
5720 if (canonical != NULL && (line_num >= 0 || n_matches > 1))
5722 *canonical = (char **) xmalloc (sizeof (char *) * selected.nelts);
5723 for (i = 0; i < selected.nelts; i += 1)
5725 extended_canonical_line_spec (selected.sals[i],
5726 SYMBOL_PRINT_NAME (symbols[i].sym));
5729 discard_cleanups (old_chain);
5733 /* The (single) sal corresponding to line LINE_NUM in a symbol table
5734 with file name FILENAME that occurs in one of the functions listed
5735 in the symbol fields of SYMBOLS[0 .. NSYMS-1]. */
5737 static struct symtabs_and_lines
5738 find_sal_from_funcs_and_line (const char *filename, int line_num,
5739 struct ada_symbol_info *symbols, int nsyms)
5741 struct symtabs_and_lines sals;
5742 int best_index, best;
5743 struct linetable *best_linetable;
5744 struct objfile *objfile;
5746 struct symtab *best_symtab;
5748 read_all_symtabs (filename);
5751 best_linetable = NULL;
5754 ALL_SYMTABS (objfile, s)
5756 struct linetable *l;
5761 if (strcmp (filename, s->filename) != 0)
5764 ind = find_line_in_linetable (l, line_num, symbols, nsyms, &exact);
5774 if (best == 0 || l->item[ind].line < best)
5776 best = l->item[ind].line;
5785 error ("Line number not found in designated function.");
5790 sals.sals = (struct symtab_and_line *) xmalloc (sizeof (sals.sals[0]));
5792 init_sal (&sals.sals[0]);
5794 sals.sals[0].line = best_linetable->item[best_index].line;
5795 sals.sals[0].pc = best_linetable->item[best_index].pc;
5796 sals.sals[0].symtab = best_symtab;
5801 /* Return the index in LINETABLE of the best match for LINE_NUM whose
5802 pc falls within one of the functions denoted by the symbol fields
5803 of SYMBOLS[0..NSYMS-1]. Set *EXACTP to 1 if the match is exact,
5807 find_line_in_linetable (struct linetable *linetable, int line_num,
5808 struct ada_symbol_info *symbols, int nsyms,
5811 int i, len, best_index, best;
5813 if (line_num <= 0 || linetable == NULL)
5816 len = linetable->nitems;
5817 for (i = 0, best_index = -1, best = 0; i < len; i += 1)
5820 struct linetable_entry *item = &(linetable->item[i]);
5822 for (k = 0; k < nsyms; k += 1)
5824 if (symbols[k].sym != NULL
5825 && SYMBOL_CLASS (symbols[k].sym) == LOC_BLOCK
5826 && item->pc >= BLOCK_START (SYMBOL_BLOCK_VALUE (symbols[k].sym))
5827 && item->pc < BLOCK_END (SYMBOL_BLOCK_VALUE (symbols[k].sym)))
5834 if (item->line == line_num)
5840 if (item->line > line_num && (best == 0 || item->line < best))
5851 /* Find the smallest k >= LINE_NUM such that k is a line number in
5852 LINETABLE, and k falls strictly within a named function that begins at
5853 or before LINE_NUM. Return -1 if there is no such k. */
5856 nearest_line_number_in_linetable (struct linetable *linetable, int line_num)
5860 if (line_num <= 0 || linetable == NULL || linetable->nitems == 0)
5862 len = linetable->nitems;
5868 struct linetable_entry *item = &(linetable->item[i]);
5870 if (item->line >= line_num && item->line < best)
5873 CORE_ADDR start, end;
5876 find_pc_partial_function (item->pc, &func_name, &start, &end);
5878 if (func_name != NULL && item->pc < end)
5880 if (item->line == line_num)
5884 struct symbol *sym =
5885 standard_lookup (func_name, NULL, VAR_DOMAIN);
5886 if (is_plausible_func_for_line (sym, line_num))
5892 while (i < len && linetable->item[i].pc < end);
5902 return (best == INT_MAX) ? -1 : best;
5906 /* Return the next higher index, k, into LINETABLE such that k > IND,
5907 entry k in LINETABLE has a line number equal to LINE_NUM, k
5908 corresponds to a PC that is in a function different from that
5909 corresponding to IND, and falls strictly within a named function
5910 that begins at a line at or preceding STARTING_LINE.
5911 Return -1 if there is no such k.
5912 IND == -1 corresponds to no function. */
5915 find_next_line_in_linetable (struct linetable *linetable, int line_num,
5916 int starting_line, int ind)
5920 if (line_num <= 0 || linetable == NULL || ind >= linetable->nitems)
5922 len = linetable->nitems;
5926 CORE_ADDR start, end;
5928 if (find_pc_partial_function (linetable->item[ind].pc,
5929 (char **) NULL, &start, &end))
5931 while (ind < len && linetable->item[ind].pc < end)
5943 struct linetable_entry *item = &(linetable->item[i]);
5945 if (item->line >= line_num)
5948 CORE_ADDR start, end;
5951 find_pc_partial_function (item->pc, &func_name, &start, &end);
5953 if (func_name != NULL && item->pc < end)
5955 if (item->line == line_num)
5957 struct symbol *sym =
5958 standard_lookup (func_name, NULL, VAR_DOMAIN);
5959 if (is_plausible_func_for_line (sym, starting_line))
5963 while ((i + 1) < len && linetable->item[i + 1].pc < end)
5975 /* True iff function symbol SYM starts somewhere at or before line #
5979 is_plausible_func_for_line (struct symbol *sym, int line_num)
5981 struct symtab_and_line start_sal;
5986 start_sal = find_function_start_sal (sym, 0);
5988 return (start_sal.line != 0 && line_num >= start_sal.line);
5991 /* Read in all symbol tables corresponding to partial symbol tables
5992 with file name FILENAME. */
5995 read_all_symtabs (const char *filename)
5997 struct partial_symtab *ps;
5998 struct objfile *objfile;
6000 ALL_PSYMTABS (objfile, ps)
6004 if (strcmp (filename, ps->filename) == 0)
6005 PSYMTAB_TO_SYMTAB (ps);
6009 /* All sals corresponding to line LINE_NUM in a symbol table from file
6010 FILENAME, as filtered by the user. Filter out any lines that
6011 reside in functions with "suppressed" names (not corresponding to
6012 explicit Ada functions), if there is at least one in a function
6013 with a non-suppressed name. If CANONICAL is not null, set
6014 it to a corresponding array of canonical line specs.
6015 If ONE_LOCATION_ONLY is set and several matches are found for
6016 the given location, then automatically select the first match found
6017 instead of asking the user which instance should be returned. */
6019 struct symtabs_and_lines
6020 ada_sals_for_line (const char *filename, int line_num,
6021 int funfirstline, char ***canonical, int one_location_only)
6023 struct symtabs_and_lines result;
6024 struct objfile *objfile;
6026 struct cleanup *old_chain = make_cleanup (null_cleanup, NULL);
6029 read_all_symtabs (filename);
6032 (struct symtab_and_line *) xmalloc (4 * sizeof (result.sals[0]));
6035 make_cleanup (free_current_contents, &result.sals);
6037 ALL_SYMTABS (objfile, s)
6039 int ind, target_line_num;
6043 if (strcmp (s->filename, filename) != 0)
6047 nearest_line_number_in_linetable (LINETABLE (s), line_num);
6048 if (target_line_num == -1)
6055 find_next_line_in_linetable (LINETABLE (s),
6056 target_line_num, line_num, ind);
6061 GROW_VECT (result.sals, len, result.nelts + 1);
6062 init_sal (&result.sals[result.nelts]);
6063 result.sals[result.nelts].line = line_num;
6064 result.sals[result.nelts].pc = LINETABLE (s)->item[ind].pc;
6065 result.sals[result.nelts].symtab = s;
6068 adjust_pc_past_prologue (&result.sals[result.nelts].pc);
6074 if (canonical != NULL || result.nelts > 1)
6077 char **func_names = (char **) alloca (result.nelts * sizeof (char *));
6078 int first_choice = (result.nelts > 1) ? 2 : 1;
6079 int *choices = (int *) alloca (result.nelts * sizeof (int));
6081 for (k = 0; k < result.nelts; k += 1)
6083 find_pc_partial_function (result.sals[k].pc, &func_names[k],
6084 (CORE_ADDR *) NULL, (CORE_ADDR *) NULL);
6085 if (func_names[k] == NULL)
6086 error ("Could not find function for one or more breakpoints.");
6089 /* Remove suppressed names, unless all are suppressed. */
6090 for (j = 0; j < result.nelts; j += 1)
6091 if (!is_suppressed_name (func_names[j]))
6093 /* At least one name is unsuppressed, so remove all
6094 suppressed names. */
6095 for (k = n = 0; k < result.nelts; k += 1)
6096 if (!is_suppressed_name (func_names[k]))
6098 func_names[n] = func_names[k];
6099 result.sals[n] = result.sals[k];
6106 if (result.nelts > 1)
6108 if (one_location_only)
6110 /* Automatically select the first of all possible choices. */
6116 printf_unfiltered ("[0] cancel\n");
6117 if (result.nelts > 1)
6118 printf_unfiltered ("[1] all\n");
6119 for (k = 0; k < result.nelts; k += 1)
6120 printf_unfiltered ("[%d] %s\n", k + first_choice,
6121 ada_decode (func_names[k]));
6123 n = get_selections (choices, result.nelts, result.nelts,
6124 result.nelts > 1, "instance-choice");
6127 for (k = 0; k < n; k += 1)
6129 result.sals[k] = result.sals[choices[k]];
6130 func_names[k] = func_names[choices[k]];
6135 if (canonical != NULL && result.nelts == 0)
6137 else if (canonical != NULL)
6139 *canonical = (char **) xmalloc (result.nelts * sizeof (char **));
6140 make_cleanup (xfree, *canonical);
6141 for (k = 0; k < result.nelts; k += 1)
6144 extended_canonical_line_spec (result.sals[k], func_names[k]);
6145 if ((*canonical)[k] == NULL)
6146 error ("Could not locate one or more breakpoints.");
6147 make_cleanup (xfree, (*canonical)[k]);
6152 if (result.nelts == 0)
6154 do_cleanups (old_chain);
6158 discard_cleanups (old_chain);
6163 /* A canonical line specification of the form FILE:NAME:LINENUM for
6164 symbol table and line data SAL. NULL if insufficient
6165 information. The caller is responsible for releasing any space
6169 extended_canonical_line_spec (struct symtab_and_line sal, const char *name)
6173 if (sal.symtab == NULL || sal.symtab->filename == NULL || sal.line <= 0)
6176 r = (char *) xmalloc (strlen (name) + strlen (sal.symtab->filename)
6177 + sizeof (sal.line) * 3 + 3);
6178 sprintf (r, "%s:'%s':%d", sal.symtab->filename, name, sal.line);
6182 /* Return type of Ada breakpoint associated with bp_stat:
6183 0 if not an Ada-specific breakpoint, 1 for break on specific exception,
6184 2 for break on unhandled exception, 3 for assert. */
6187 ada_exception_breakpoint_type (bpstat bs)
6189 return ((!bs || !bs->breakpoint_at) ? 0
6190 : bs->breakpoint_at->break_on_exception);
6193 /* True iff FRAME is very likely to be that of a function that is
6194 part of the runtime system. This is all very heuristic, but is
6195 intended to be used as advice as to what frames are uninteresting
6199 is_known_support_routine (struct frame_info *frame)
6201 struct frame_info *next_frame = get_next_frame (frame);
6202 /* If frame is not innermost, that normally means that frame->pc
6203 points to *after* the call instruction, and we want to get the line
6204 containing the call, never the next line. But if the next frame is
6205 a signal_handler_caller or a dummy frame, then the next frame was
6206 not entered as the result of a call, and we want to get the line
6207 containing frame->pc. */
6208 const int pc_is_after_call =
6210 && get_frame_type (next_frame) != SIGTRAMP_FRAME
6211 && get_frame_type (next_frame) != DUMMY_FRAME;
6212 struct symtab_and_line sal
6213 = find_pc_line (get_frame_pc (frame), pc_is_after_call);
6219 1. The symtab is null (indicating no debugging symbols)
6220 2. The symtab's filename does not exist.
6221 3. The object file's name is one of the standard libraries.
6222 4. The symtab's file name has the form of an Ada library source file.
6223 5. The function at frame's PC has a GNAT-compiler-generated name. */
6225 if (sal.symtab == NULL)
6228 /* On some systems (e.g. VxWorks), the kernel contains debugging
6229 symbols; in this case, the filename referenced by these symbols
6232 if (stat (sal.symtab->filename, &st))
6235 for (i = 0; known_runtime_file_name_patterns[i] != NULL; i += 1)
6237 re_comp (known_runtime_file_name_patterns[i]);
6238 if (re_exec (sal.symtab->filename))
6241 if (sal.symtab->objfile != NULL)
6243 for (i = 0; known_runtime_file_name_patterns[i] != NULL; i += 1)
6245 re_comp (known_runtime_file_name_patterns[i]);
6246 if (re_exec (sal.symtab->objfile->name))
6251 /* If the frame PC points after the call instruction, then we need to
6252 decrement it in order to search for the function associated to this
6253 PC. Otherwise, if the associated call was the last instruction of
6254 the function, we might either find the wrong function or even fail
6255 during the function name lookup. */
6256 if (pc_is_after_call)
6257 func_name = function_name_from_pc (get_frame_pc (frame) - 1);
6259 func_name = function_name_from_pc (get_frame_pc (frame));
6261 if (func_name == NULL)
6264 for (i = 0; known_auxiliary_function_name_patterns[i] != NULL; i += 1)
6266 re_comp (known_auxiliary_function_name_patterns[i]);
6267 if (re_exec (func_name))
6274 /* Find the first frame that contains debugging information and that is not
6275 part of the Ada run-time, starting from FI and moving upward. */
6278 ada_find_printable_frame (struct frame_info *fi)
6280 for (; fi != NULL; fi = get_prev_frame (fi))
6282 if (!is_known_support_routine (fi))
6291 /* Name found for exception associated with last bpstat sent to
6292 ada_adjust_exception_stop. Set to the null string if that bpstat
6293 did not correspond to an Ada exception or no name could be found. */
6295 static char last_exception_name[256];
6297 /* If BS indicates a stop in an Ada exception, try to go up to a frame
6298 that will be meaningful to the user, and save the name of the last
6299 exception (truncated, if necessary) in last_exception_name. */
6302 ada_adjust_exception_stop (bpstat bs)
6305 struct frame_info *fi;
6307 char *selected_frame_func;
6310 last_exception_name[0] = '\0';
6311 fi = get_selected_frame ();
6312 selected_frame_func = function_name_from_pc (get_frame_pc (fi));
6314 switch (ada_exception_breakpoint_type (bs))
6321 /* Unhandled exceptions. Select the frame corresponding to
6322 ada.exceptions.process_raise_exception. This frame is at
6323 least 2 levels up, so we simply skip the first 2 frames
6324 without checking the name of their associated function. */
6325 for (frame_level = 0; frame_level < 2; frame_level += 1)
6327 fi = get_prev_frame (fi);
6330 const char *func_name = function_name_from_pc (get_frame_pc (fi));
6331 if (func_name != NULL
6332 && strcmp (func_name, process_raise_exception_name) == 0)
6333 break; /* We found the frame we were looking for... */
6334 fi = get_prev_frame (fi);
6342 addr = parse_and_eval_address ("e.full_name");
6345 read_memory (addr, last_exception_name, sizeof (last_exception_name) - 1);
6346 last_exception_name[sizeof (last_exception_name) - 1] = '\0';
6347 ada_find_printable_frame (get_selected_frame ());
6350 /* Output Ada exception name (if any) associated with last call to
6351 ada_adjust_exception_stop. */
6354 ada_print_exception_stop (bpstat bs)
6356 if (last_exception_name[0] != '\000')
6358 ui_out_text (uiout, last_exception_name);
6359 ui_out_text (uiout, " at ");
6363 /* Parses the CONDITION string associated with a breakpoint exception
6364 to get the name of the exception on which the breakpoint has been
6365 set. The returned string needs to be deallocated after use. */
6368 exception_name_from_cond (const char *condition)
6370 char *start, *end, *exception_name;
6371 int exception_name_len;
6373 start = strrchr (condition, '&') + 1;
6374 end = strchr (start, ')') - 1;
6375 exception_name_len = end - start + 1;
6378 (char *) xmalloc ((exception_name_len + 1) * sizeof (char));
6379 sprintf (exception_name, "%.*s", exception_name_len, start);
6381 return exception_name;
6384 /* Print Ada-specific exception information about B, other than task
6385 clause. Return non-zero iff B was an Ada exception breakpoint. */
6388 ada_print_exception_breakpoint_nontask (struct breakpoint *b)
6390 if (b->break_on_exception == 1)
6392 if (b->cond_string) /* the breakpoint is on a specific exception. */
6394 char *exception_name = exception_name_from_cond (b->cond_string);
6396 make_cleanup (xfree, exception_name);
6398 ui_out_text (uiout, "on ");
6399 if (ui_out_is_mi_like_p (uiout))
6400 ui_out_field_string (uiout, "exception", exception_name);
6403 ui_out_text (uiout, "exception ");
6404 ui_out_text (uiout, exception_name);
6405 ui_out_text (uiout, " ");
6409 ui_out_text (uiout, "on all exceptions");
6411 else if (b->break_on_exception == 2)
6412 ui_out_text (uiout, "on unhandled exception");
6413 else if (b->break_on_exception == 3)
6414 ui_out_text (uiout, "on assert failure");
6420 /* Print task identifier for breakpoint B, if it is an Ada-specific
6421 breakpoint with non-zero tasking information. */
6424 ada_print_exception_breakpoint_task (struct breakpoint *b)
6428 ui_out_text (uiout, " task ");
6429 ui_out_field_int (uiout, "task", b->task);
6434 ada_is_exception_sym (struct symbol *sym)
6436 char *type_name = type_name_no_tag (SYMBOL_TYPE (sym));
6438 return (SYMBOL_CLASS (sym) != LOC_TYPEDEF
6439 && SYMBOL_CLASS (sym) != LOC_BLOCK
6440 && SYMBOL_CLASS (sym) != LOC_CONST
6441 && type_name != NULL && strcmp (type_name, "exception") == 0);
6445 ada_maybe_exception_partial_symbol (struct partial_symbol *sym)
6447 return (SYMBOL_CLASS (sym) != LOC_TYPEDEF
6448 && SYMBOL_CLASS (sym) != LOC_BLOCK
6449 && SYMBOL_CLASS (sym) != LOC_CONST);
6452 /* Cause the appropriate error if no appropriate runtime symbol is
6453 found to set a breakpoint, using ERR_DESC to describe the
6457 error_breakpoint_runtime_sym_not_found (const char *err_desc)
6459 /* If we are not debugging an Ada program, we can not put exception
6462 if (ada_update_initial_language (language_unknown, NULL) != language_ada)
6463 error ("Unable to break on %s. Is this an Ada main program?", err_desc);
6465 /* If the symbol does not exist, then check that the program is
6466 already started, to make sure that shared libraries have been
6467 loaded. If it is not started, this may mean that the symbol is
6468 in a shared library. */
6470 if (ptid_get_pid (inferior_ptid) == 0)
6471 error ("Unable to break on %s. Try to start the program first.",
6474 /* At this point, we know that we are debugging an Ada program and
6475 that the inferior has been started, but we still are not able to
6476 find the run-time symbols. That can mean that we are in
6477 configurable run time mode, or that a-except as been optimized
6478 out by the linker... In any case, at this point it is not worth
6479 supporting this feature. */
6481 error ("Cannot break on %s in this configuration.", err_desc);
6484 /* Test if NAME is currently defined, and that either ALLOW_TRAMP or
6485 the symbol is not a shared-library trampoline. Return the result of
6489 is_runtime_sym_defined (const char *name, int allow_tramp)
6491 struct minimal_symbol *msym;
6493 msym = lookup_minimal_symbol (name, NULL, NULL);
6494 return (msym != NULL && msym->type != mst_unknown
6495 && (allow_tramp || msym->type != mst_solib_trampoline));
6498 /* If ARG points to an Ada exception or assert breakpoint, rewrite
6499 into equivalent form. Return resulting argument string. Set
6500 *BREAK_ON_EXCEPTIONP to 1 for ordinary break on exception, 2 for
6501 break on unhandled, 3 for assert, 0 otherwise. */
6504 ada_breakpoint_rewrite (char *arg, int *break_on_exceptionp)
6508 *break_on_exceptionp = 0;
6509 if (current_language->la_language == language_ada
6510 && strncmp (arg, "exception", 9) == 0
6511 && (arg[9] == ' ' || arg[9] == '\t' || arg[9] == '\0'))
6513 char *tok, *end_tok;
6515 int has_exception_propagation =
6516 is_runtime_sym_defined (raise_sym_name, 1);
6518 *break_on_exceptionp = 1;
6521 while (*tok == ' ' || *tok == '\t')
6526 while (*end_tok != ' ' && *end_tok != '\t' && *end_tok != '\000')
6529 toklen = end_tok - tok;
6531 arg = (char *) xmalloc (sizeof (longest_exception_template) + toklen);
6532 make_cleanup (xfree, arg);
6535 if (has_exception_propagation)
6536 sprintf (arg, "'%s'", raise_sym_name);
6538 error_breakpoint_runtime_sym_not_found ("exception");
6540 else if (strncmp (tok, "unhandled", toklen) == 0)
6542 if (is_runtime_sym_defined (raise_unhandled_sym_name, 1))
6543 sprintf (arg, "'%s'", raise_unhandled_sym_name);
6545 error_breakpoint_runtime_sym_not_found ("exception");
6547 *break_on_exceptionp = 2;
6551 if (is_runtime_sym_defined (raise_sym_name, 0))
6552 sprintf (arg, "'%s' if long_integer(e) = long_integer(&%.*s)",
6553 raise_sym_name, toklen, tok);
6555 error_breakpoint_runtime_sym_not_found ("specific exception");
6558 else if (current_language->la_language == language_ada
6559 && strncmp (arg, "assert", 6) == 0
6560 && (arg[6] == ' ' || arg[6] == '\t' || arg[6] == '\0'))
6562 char *tok = arg + 6;
6564 if (!is_runtime_sym_defined (raise_assert_sym_name, 1))
6565 error_breakpoint_runtime_sym_not_found ("failed assertion");
6567 *break_on_exceptionp = 3;
6570 (char *) xmalloc (sizeof (raise_assert_sym_name) + strlen (tok) + 2);
6571 make_cleanup (xfree, arg);
6572 sprintf (arg, "'%s'%s", raise_assert_sym_name, tok);
6580 /* True if field number FIELD_NUM in struct or union type TYPE is supposed
6581 to be invisible to users. */
6584 ada_is_ignored_field (struct type *type, int field_num)
6586 if (field_num < 0 || field_num > TYPE_NFIELDS (type))
6590 const char *name = TYPE_FIELD_NAME (type, field_num);
6591 return (name == NULL
6592 || (name[0] == '_' && strncmp (name, "_parent", 7) != 0));
6596 /* True iff TYPE has a tag field. If REFOK, then TYPE may also be a
6597 pointer or reference type whose ultimate target has a tag field. */
6600 ada_is_tagged_type (struct type *type, int refok)
6602 return (ada_lookup_struct_elt_type (type, "_tag", refok, 1, NULL) != NULL);
6605 /* True iff TYPE represents the type of X'Tag */
6608 ada_is_tag_type (struct type *type)
6610 if (type == NULL || TYPE_CODE (type) != TYPE_CODE_PTR)
6614 const char *name = ada_type_name (TYPE_TARGET_TYPE (type));
6615 return (name != NULL
6616 && strcmp (name, "ada__tags__dispatch_table") == 0);
6620 /* The type of the tag on VAL. */
6623 ada_tag_type (struct value *val)
6625 return ada_lookup_struct_elt_type (VALUE_TYPE (val), "_tag", 1, 0, NULL);
6628 /* The value of the tag on VAL. */
6631 ada_value_tag (struct value *val)
6633 return ada_value_struct_elt (val, "_tag", "record");
6636 /* The value of the tag on the object of type TYPE whose contents are
6637 saved at VALADDR, if it is non-null, or is at memory address
6640 static struct value *
6641 value_tag_from_contents_and_address (struct type *type, char *valaddr,
6644 int tag_byte_offset, dummy1, dummy2;
6645 struct type *tag_type;
6646 if (find_struct_field ("_tag", type, 0, &tag_type, &tag_byte_offset,
6649 char *valaddr1 = (valaddr == NULL) ? NULL : valaddr + tag_byte_offset;
6650 CORE_ADDR address1 = (address == 0) ? 0 : address + tag_byte_offset;
6652 return value_from_contents_and_address (tag_type, valaddr1, address1);
6657 static struct type *
6658 type_from_tag (struct value *tag)
6660 const char *type_name = ada_tag_name (tag);
6661 if (type_name != NULL)
6662 return ada_find_any_type (ada_encode (type_name));
6672 /* Wrapper function used by ada_tag_name. Given a struct tag_args*
6673 value ARGS, sets ARGS->name to the tag name of ARGS->tag.
6674 The value stored in ARGS->name is valid until the next call to
6678 ada_tag_name_1 (void *args0)
6680 struct tag_args *args = (struct tag_args *) args0;
6681 static char name[1024];
6685 val = ada_value_struct_elt (args->tag, "tsd", NULL);
6688 val = ada_value_struct_elt (val, "expanded_name", NULL);
6691 read_memory_string (value_as_address (val), name, sizeof (name) - 1);
6692 for (p = name; *p != '\0'; p += 1)
6699 /* The type name of the dynamic type denoted by the 'tag value TAG, as
6703 ada_tag_name (struct value *tag)
6705 struct tag_args args;
6706 if (!ada_is_tag_type (VALUE_TYPE (tag)))
6710 catch_errors (ada_tag_name_1, &args, NULL, RETURN_MASK_ALL);
6714 /* The parent type of TYPE, or NULL if none. */
6717 ada_parent_type (struct type *type)
6721 CHECK_TYPEDEF (type);
6723 if (type == NULL || TYPE_CODE (type) != TYPE_CODE_STRUCT)
6726 for (i = 0; i < TYPE_NFIELDS (type); i += 1)
6727 if (ada_is_parent_field (type, i))
6728 return check_typedef (TYPE_FIELD_TYPE (type, i));
6733 /* True iff field number FIELD_NUM of structure type TYPE contains the
6734 parent-type (inherited) fields of a derived type. Assumes TYPE is
6735 a structure type with at least FIELD_NUM+1 fields. */
6738 ada_is_parent_field (struct type *type, int field_num)
6740 const char *name = TYPE_FIELD_NAME (check_typedef (type), field_num);
6741 return (name != NULL
6742 && (strncmp (name, "PARENT", 6) == 0
6743 || strncmp (name, "_parent", 7) == 0));
6746 /* True iff field number FIELD_NUM of structure type TYPE is a
6747 transparent wrapper field (which should be silently traversed when doing
6748 field selection and flattened when printing). Assumes TYPE is a
6749 structure type with at least FIELD_NUM+1 fields. Such fields are always
6753 ada_is_wrapper_field (struct type *type, int field_num)
6755 const char *name = TYPE_FIELD_NAME (type, field_num);
6756 return (name != NULL
6757 && (strncmp (name, "PARENT", 6) == 0
6758 || strcmp (name, "REP") == 0
6759 || strncmp (name, "_parent", 7) == 0
6760 || name[0] == 'S' || name[0] == 'R' || name[0] == 'O'));
6763 /* True iff field number FIELD_NUM of structure or union type TYPE
6764 is a variant wrapper. Assumes TYPE is a structure type with at least
6765 FIELD_NUM+1 fields. */
6768 ada_is_variant_part (struct type *type, int field_num)
6770 struct type *field_type = TYPE_FIELD_TYPE (type, field_num);
6771 return (TYPE_CODE (field_type) == TYPE_CODE_UNION
6772 || (is_dynamic_field (type, field_num)
6773 && (TYPE_CODE (TYPE_TARGET_TYPE (field_type))
6774 == TYPE_CODE_UNION)));
6777 /* Assuming that VAR_TYPE is a variant wrapper (type of the variant part)
6778 whose discriminants are contained in the record type OUTER_TYPE,
6779 returns the type of the controlling discriminant for the variant. */
6782 ada_variant_discrim_type (struct type *var_type, struct type *outer_type)
6784 char *name = ada_variant_discrim_name (var_type);
6786 ada_lookup_struct_elt_type (outer_type, name, 1, 1, NULL);
6788 return builtin_type_int;
6793 /* Assuming that TYPE is the type of a variant wrapper, and FIELD_NUM is a
6794 valid field number within it, returns 1 iff field FIELD_NUM of TYPE
6795 represents a 'when others' clause; otherwise 0. */
6798 ada_is_others_clause (struct type *type, int field_num)
6800 const char *name = TYPE_FIELD_NAME (type, field_num);
6801 return (name != NULL && name[0] == 'O');
6804 /* Assuming that TYPE0 is the type of the variant part of a record,
6805 returns the name of the discriminant controlling the variant.
6806 The value is valid until the next call to ada_variant_discrim_name. */
6809 ada_variant_discrim_name (struct type *type0)
6811 static char *result = NULL;
6812 static size_t result_len = 0;
6815 const char *discrim_end;
6816 const char *discrim_start;
6818 if (TYPE_CODE (type0) == TYPE_CODE_PTR)
6819 type = TYPE_TARGET_TYPE (type0);
6823 name = ada_type_name (type);
6825 if (name == NULL || name[0] == '\000')
6828 for (discrim_end = name + strlen (name) - 6; discrim_end != name;
6831 if (strncmp (discrim_end, "___XVN", 6) == 0)
6834 if (discrim_end == name)
6837 for (discrim_start = discrim_end; discrim_start != name + 3;
6840 if (discrim_start == name + 1)
6842 if ((discrim_start > name + 3
6843 && strncmp (discrim_start - 3, "___", 3) == 0)
6844 || discrim_start[-1] == '.')
6848 GROW_VECT (result, result_len, discrim_end - discrim_start + 1);
6849 strncpy (result, discrim_start, discrim_end - discrim_start);
6850 result[discrim_end - discrim_start] = '\0';
6854 /* Scan STR for a subtype-encoded number, beginning at position K.
6855 Put the position of the character just past the number scanned in
6856 *NEW_K, if NEW_K!=NULL. Put the scanned number in *R, if R!=NULL.
6857 Return 1 if there was a valid number at the given position, and 0
6858 otherwise. A "subtype-encoded" number consists of the absolute value
6859 in decimal, followed by the letter 'm' to indicate a negative number.
6860 Assumes 0m does not occur. */
6863 ada_scan_number (const char str[], int k, LONGEST * R, int *new_k)
6867 if (!isdigit (str[k]))
6870 /* Do it the hard way so as not to make any assumption about
6871 the relationship of unsigned long (%lu scan format code) and
6874 while (isdigit (str[k]))
6876 RU = RU * 10 + (str[k] - '0');
6883 *R = (-(LONGEST) (RU - 1)) - 1;
6889 /* NOTE on the above: Technically, C does not say what the results of
6890 - (LONGEST) RU or (LONGEST) -RU are for RU == largest positive
6891 number representable as a LONGEST (although either would probably work
6892 in most implementations). When RU>0, the locution in the then branch
6893 above is always equivalent to the negative of RU. */
6900 /* Assuming that TYPE is a variant part wrapper type (a VARIANTS field),
6901 and FIELD_NUM is a valid field number within it, returns 1 iff VAL is
6902 in the range encoded by field FIELD_NUM of TYPE; otherwise 0. */
6905 ada_in_variant (LONGEST val, struct type *type, int field_num)
6907 const char *name = TYPE_FIELD_NAME (type, field_num);
6920 if (!ada_scan_number (name, p + 1, &W, &p))
6929 if (!ada_scan_number (name, p + 1, &L, &p)
6930 || name[p] != 'T' || !ada_scan_number (name, p + 1, &U, &p))
6932 if (val >= L && val <= U)
6944 /* FIXME: Lots of redundancy below. Try to consolidate. */
6946 /* Given a value ARG1 (offset by OFFSET bytes) of a struct or union type
6947 ARG_TYPE, extract and return the value of one of its (non-static)
6948 fields. FIELDNO says which field. Differs from value_primitive_field
6949 only in that it can handle packed values of arbitrary type. */
6951 static struct value *
6952 ada_value_primitive_field (struct value *arg1, int offset, int fieldno,
6953 struct type *arg_type)
6957 CHECK_TYPEDEF (arg_type);
6958 type = TYPE_FIELD_TYPE (arg_type, fieldno);
6960 /* Handle packed fields. */
6962 if (TYPE_FIELD_BITSIZE (arg_type, fieldno) != 0)
6964 int bit_pos = TYPE_FIELD_BITPOS (arg_type, fieldno);
6965 int bit_size = TYPE_FIELD_BITSIZE (arg_type, fieldno);
6967 return ada_value_primitive_packed_val (arg1, VALUE_CONTENTS (arg1),
6968 offset + bit_pos / 8,
6969 bit_pos % 8, bit_size, type);
6972 return value_primitive_field (arg1, offset, fieldno, arg_type);
6975 /* Find field with name NAME in object of type TYPE. If found, return 1
6976 after setting *FIELD_TYPE_P to the field's type, *BYTE_OFFSET_P to
6977 OFFSET + the byte offset of the field within an object of that type,
6978 *BIT_OFFSET_P to the bit offset modulo byte size of the field, and
6979 *BIT_SIZE_P to its size in bits if the field is packed, and 0 otherwise.
6980 Looks inside wrappers for the field. Returns 0 if field not
6983 find_struct_field (char *name, struct type *type, int offset,
6984 struct type **field_type_p,
6985 int *byte_offset_p, int *bit_offset_p, int *bit_size_p)
6989 CHECK_TYPEDEF (type);
6990 *field_type_p = NULL;
6991 *byte_offset_p = *bit_offset_p = *bit_size_p = 0;
6993 for (i = TYPE_NFIELDS (type) - 1; i >= 0; i -= 1)
6995 int bit_pos = TYPE_FIELD_BITPOS (type, i);
6996 int fld_offset = offset + bit_pos / 8;
6997 char *t_field_name = TYPE_FIELD_NAME (type, i);
6999 if (t_field_name == NULL)
7002 else if (field_name_match (t_field_name, name))
7004 int bit_size = TYPE_FIELD_BITSIZE (type, i);
7005 *field_type_p = TYPE_FIELD_TYPE (type, i);
7006 *byte_offset_p = fld_offset;
7007 *bit_offset_p = bit_pos % 8;
7008 *bit_size_p = bit_size;
7011 else if (ada_is_wrapper_field (type, i))
7013 if (find_struct_field (name, TYPE_FIELD_TYPE (type, i), fld_offset,
7014 field_type_p, byte_offset_p, bit_offset_p,
7018 else if (ada_is_variant_part (type, i))
7021 struct type *field_type = check_typedef (TYPE_FIELD_TYPE (type, i));
7023 for (j = TYPE_NFIELDS (field_type) - 1; j >= 0; j -= 1)
7025 if (find_struct_field (name, TYPE_FIELD_TYPE (field_type, j),
7027 + TYPE_FIELD_BITPOS (field_type, j) / 8,
7028 field_type_p, byte_offset_p,
7029 bit_offset_p, bit_size_p))
7039 /* Look for a field NAME in ARG. Adjust the address of ARG by OFFSET bytes,
7040 and search in it assuming it has (class) type TYPE.
7041 If found, return value, else return NULL.
7043 Searches recursively through wrapper fields (e.g., '_parent'). */
7045 static struct value *
7046 ada_search_struct_field (char *name, struct value *arg, int offset,
7050 CHECK_TYPEDEF (type);
7052 for (i = TYPE_NFIELDS (type) - 1; i >= 0; i -= 1)
7054 char *t_field_name = TYPE_FIELD_NAME (type, i);
7056 if (t_field_name == NULL)
7059 else if (field_name_match (t_field_name, name))
7060 return ada_value_primitive_field (arg, offset, i, type);
7062 else if (ada_is_wrapper_field (type, i))
7064 struct value *v = /* Do not let indent join lines here. */
7065 ada_search_struct_field (name, arg,
7066 offset + TYPE_FIELD_BITPOS (type, i) / 8,
7067 TYPE_FIELD_TYPE (type, i));
7072 else if (ada_is_variant_part (type, i))
7075 struct type *field_type = check_typedef (TYPE_FIELD_TYPE (type, i));
7076 int var_offset = offset + TYPE_FIELD_BITPOS (type, i) / 8;
7078 for (j = TYPE_NFIELDS (field_type) - 1; j >= 0; j -= 1)
7080 struct value *v = ada_search_struct_field /* Force line break. */
7082 var_offset + TYPE_FIELD_BITPOS (field_type, j) / 8,
7083 TYPE_FIELD_TYPE (field_type, j));
7092 /* Given ARG, a value of type (pointer or reference to a)*
7093 structure/union, extract the component named NAME from the ultimate
7094 target structure/union and return it as a value with its
7095 appropriate type. If ARG is a pointer or reference and the field
7096 is not packed, returns a reference to the field, otherwise the
7097 value of the field (an lvalue if ARG is an lvalue).
7099 The routine searches for NAME among all members of the structure itself
7100 and (recursively) among all members of any wrapper members
7103 ERR is a name (for use in error messages) that identifies the class
7104 of entity that ARG is supposed to be. ERR may be null, indicating
7105 that on error, the function simply returns NULL, and does not
7106 throw an error. (FIXME: True only if ARG is a pointer or reference
7110 ada_value_struct_elt (struct value *arg, char *name, char *err)
7112 struct type *t, *t1;
7116 t1 = t = check_typedef (VALUE_TYPE (arg));
7117 if (TYPE_CODE (t) == TYPE_CODE_REF)
7119 t1 = TYPE_TARGET_TYPE (t);
7125 error ("Bad value type in a %s.", err);
7128 if (TYPE_CODE (t1) == TYPE_CODE_PTR)
7135 while (TYPE_CODE (t) == TYPE_CODE_PTR)
7137 t1 = TYPE_TARGET_TYPE (t);
7143 error ("Bad value type in a %s.", err);
7146 if (TYPE_CODE (t1) == TYPE_CODE_PTR)
7148 arg = value_ind (arg);
7155 if (TYPE_CODE (t1) != TYPE_CODE_STRUCT && TYPE_CODE (t1) != TYPE_CODE_UNION)
7160 error ("Attempt to extract a component of a value that is not a %s.",
7165 v = ada_search_struct_field (name, arg, 0, t);
7168 int bit_offset, bit_size, byte_offset;
7169 struct type *field_type;
7172 if (TYPE_CODE (t) == TYPE_CODE_PTR)
7173 address = value_as_address (arg);
7175 address = unpack_pointer (t, VALUE_CONTENTS (arg));
7177 t1 = ada_to_fixed_type (ada_get_base_type (t1), NULL, address, NULL);
7178 if (find_struct_field (name, t1, 0,
7179 &field_type, &byte_offset, &bit_offset,
7184 arg = ada_value_ind (arg);
7185 v = ada_value_primitive_packed_val (arg, NULL, byte_offset,
7186 bit_offset, bit_size,
7190 v = value_from_pointer (lookup_reference_type (field_type),
7191 address + byte_offset);
7195 if (v == NULL && err != NULL)
7196 error ("There is no member named %s.", name);
7201 /* Given a type TYPE, look up the type of the component of type named NAME.
7202 If DISPP is non-null, add its byte displacement from the beginning of a
7203 structure (pointed to by a value) of type TYPE to *DISPP (does not
7204 work for packed fields).
7206 Matches any field whose name has NAME as a prefix, possibly
7209 TYPE can be either a struct or union. If REFOK, TYPE may also
7210 be a (pointer or reference)+ to a struct or union, and the
7211 ultimate target type will be searched.
7213 Looks recursively into variant clauses and parent types.
7215 If NOERR is nonzero, return NULL if NAME is not suitably defined or
7216 TYPE is not a type of the right kind. */
7218 static struct type *
7219 ada_lookup_struct_elt_type (struct type *type, char *name, int refok,
7220 int noerr, int *dispp)
7227 if (refok && type != NULL)
7230 CHECK_TYPEDEF (type);
7231 if (TYPE_CODE (type) != TYPE_CODE_PTR
7232 && TYPE_CODE (type) != TYPE_CODE_REF)
7234 type = TYPE_TARGET_TYPE (type);
7238 || (TYPE_CODE (type) != TYPE_CODE_STRUCT
7239 && TYPE_CODE (type) != TYPE_CODE_UNION))
7245 target_terminal_ours ();
7246 gdb_flush (gdb_stdout);
7247 fprintf_unfiltered (gdb_stderr, "Type ");
7249 fprintf_unfiltered (gdb_stderr, "(null)");
7251 type_print (type, "", gdb_stderr, -1);
7252 error (" is not a structure or union type");
7256 type = to_static_fixed_type (type);
7258 for (i = 0; i < TYPE_NFIELDS (type); i += 1)
7260 char *t_field_name = TYPE_FIELD_NAME (type, i);
7264 if (t_field_name == NULL)
7267 else if (field_name_match (t_field_name, name))
7270 *dispp += TYPE_FIELD_BITPOS (type, i) / 8;
7271 return check_typedef (TYPE_FIELD_TYPE (type, i));
7274 else if (ada_is_wrapper_field (type, i))
7277 t = ada_lookup_struct_elt_type (TYPE_FIELD_TYPE (type, i), name,
7282 *dispp += disp + TYPE_FIELD_BITPOS (type, i) / 8;
7287 else if (ada_is_variant_part (type, i))
7290 struct type *field_type = check_typedef (TYPE_FIELD_TYPE (type, i));
7292 for (j = TYPE_NFIELDS (field_type) - 1; j >= 0; j -= 1)
7295 t = ada_lookup_struct_elt_type (TYPE_FIELD_TYPE (field_type, j),
7300 *dispp += disp + TYPE_FIELD_BITPOS (type, i) / 8;
7311 target_terminal_ours ();
7312 gdb_flush (gdb_stdout);
7313 fprintf_unfiltered (gdb_stderr, "Type ");
7314 type_print (type, "", gdb_stderr, -1);
7315 fprintf_unfiltered (gdb_stderr, " has no component named ");
7316 error ("%s", name == NULL ? "<null>" : name);
7322 /* Assuming that VAR_TYPE is the type of a variant part of a record (a union),
7323 within a value of type OUTER_TYPE that is stored in GDB at
7324 OUTER_VALADDR, determine which variant clause (field number in VAR_TYPE,
7325 numbering from 0) is applicable. Returns -1 if none are. */
7328 ada_which_variant_applies (struct type *var_type, struct type *outer_type,
7329 char *outer_valaddr)
7334 struct type *discrim_type;
7335 char *discrim_name = ada_variant_discrim_name (var_type);
7336 LONGEST discrim_val;
7340 ada_lookup_struct_elt_type (outer_type, discrim_name, 1, 1, &disp);
7341 if (discrim_type == NULL)
7343 discrim_val = unpack_long (discrim_type, outer_valaddr + disp);
7346 for (i = 0; i < TYPE_NFIELDS (var_type); i += 1)
7348 if (ada_is_others_clause (var_type, i))
7350 else if (ada_in_variant (discrim_val, var_type, i))
7354 return others_clause;
7359 /* Dynamic-Sized Records */
7361 /* Strategy: The type ostensibly attached to a value with dynamic size
7362 (i.e., a size that is not statically recorded in the debugging
7363 data) does not accurately reflect the size or layout of the value.
7364 Our strategy is to convert these values to values with accurate,
7365 conventional types that are constructed on the fly. */
7367 /* There is a subtle and tricky problem here. In general, we cannot
7368 determine the size of dynamic records without its data. However,
7369 the 'struct value' data structure, which GDB uses to represent
7370 quantities in the inferior process (the target), requires the size
7371 of the type at the time of its allocation in order to reserve space
7372 for GDB's internal copy of the data. That's why the
7373 'to_fixed_xxx_type' routines take (target) addresses as parameters,
7374 rather than struct value*s.
7376 However, GDB's internal history variables ($1, $2, etc.) are
7377 struct value*s containing internal copies of the data that are not, in
7378 general, the same as the data at their corresponding addresses in
7379 the target. Fortunately, the types we give to these values are all
7380 conventional, fixed-size types (as per the strategy described
7381 above), so that we don't usually have to perform the
7382 'to_fixed_xxx_type' conversions to look at their values.
7383 Unfortunately, there is one exception: if one of the internal
7384 history variables is an array whose elements are unconstrained
7385 records, then we will need to create distinct fixed types for each
7386 element selected. */
7388 /* The upshot of all of this is that many routines take a (type, host
7389 address, target address) triple as arguments to represent a value.
7390 The host address, if non-null, is supposed to contain an internal
7391 copy of the relevant data; otherwise, the program is to consult the
7392 target at the target address. */
7394 /* Assuming that VAL0 represents a pointer value, the result of
7395 dereferencing it. Differs from value_ind in its treatment of
7396 dynamic-sized types. */
7399 ada_value_ind (struct value *val0)
7401 struct value *val = unwrap_value (value_ind (val0));
7402 return ada_to_fixed_value (val);
7405 /* The value resulting from dereferencing any "reference to"
7406 qualifiers on VAL0. */
7408 static struct value *
7409 ada_coerce_ref (struct value *val0)
7411 if (TYPE_CODE (VALUE_TYPE (val0)) == TYPE_CODE_REF)
7413 struct value *val = val0;
7415 val = unwrap_value (val);
7416 return ada_to_fixed_value (val);
7422 /* Return OFF rounded upward if necessary to a multiple of
7423 ALIGNMENT (a power of 2). */
7426 align_value (unsigned int off, unsigned int alignment)
7428 return (off + alignment - 1) & ~(alignment - 1);
7431 /* Return the bit alignment required for field #F of template type TYPE. */
7434 field_alignment (struct type *type, int f)
7436 const char *name = TYPE_FIELD_NAME (type, f);
7437 int len = (name == NULL) ? 0 : strlen (name);
7440 if (!isdigit (name[len - 1]))
7443 if (isdigit (name[len - 2]))
7444 align_offset = len - 2;
7446 align_offset = len - 1;
7448 if (align_offset < 7 || strncmp ("___XV", name + align_offset - 6, 5) != 0)
7449 return TARGET_CHAR_BIT;
7451 return atoi (name + align_offset) * TARGET_CHAR_BIT;
7454 /* Find a symbol named NAME. Ignores ambiguity. */
7457 ada_find_any_symbol (const char *name)
7461 sym = standard_lookup (name, get_selected_block (NULL), VAR_DOMAIN);
7462 if (sym != NULL && SYMBOL_CLASS (sym) == LOC_TYPEDEF)
7465 sym = standard_lookup (name, NULL, STRUCT_DOMAIN);
7469 /* Find a type named NAME. Ignores ambiguity. */
7472 ada_find_any_type (const char *name)
7474 struct symbol *sym = ada_find_any_symbol (name);
7477 return SYMBOL_TYPE (sym);
7482 /* Given a symbol NAME and its associated BLOCK, search all symbols
7483 for its ___XR counterpart, which is the ``renaming'' symbol
7484 associated to NAME. Return this symbol if found, return
7488 ada_find_renaming_symbol (const char *name, struct block *block)
7490 const struct symbol *function_sym = block_function (block);
7493 if (function_sym != NULL)
7495 /* If the symbol is defined inside a function, NAME is not fully
7496 qualified. This means we need to prepend the function name
7497 as well as adding the ``___XR'' suffix to build the name of
7498 the associated renaming symbol. */
7499 char *function_name = SYMBOL_LINKAGE_NAME (function_sym);
7500 const int function_name_len = strlen (function_name);
7501 const int rename_len = function_name_len + 2 /* "__" */
7502 + strlen (name) + 6 /* "___XR\0" */ ;
7504 /* Library-level functions are a special case, as GNAT adds
7505 a ``_ada_'' prefix to the function name to avoid namespace
7506 pollution. However, the renaming symbol themselves do not
7507 have this prefix, so we need to skip this prefix if present. */
7508 if (function_name_len > 5 /* "_ada_" */
7509 && strstr (function_name, "_ada_") == function_name)
7510 function_name = function_name + 5;
7512 rename = (char *) alloca (rename_len * sizeof (char));
7513 sprintf (rename, "%s__%s___XR", function_name, name);
7517 const int rename_len = strlen (name) + 6;
7518 rename = (char *) alloca (rename_len * sizeof (char));
7519 sprintf (rename, "%s___XR", name);
7522 return ada_find_any_symbol (rename);
7525 /* Because of GNAT encoding conventions, several GDB symbols may match a
7526 given type name. If the type denoted by TYPE0 is to be preferred to
7527 that of TYPE1 for purposes of type printing, return non-zero;
7528 otherwise return 0. */
7531 ada_prefer_type (struct type *type0, struct type *type1)
7535 else if (type0 == NULL)
7537 else if (TYPE_CODE (type1) == TYPE_CODE_VOID)
7539 else if (TYPE_CODE (type0) == TYPE_CODE_VOID)
7541 else if (TYPE_NAME (type1) == NULL && TYPE_NAME (type0) != NULL)
7543 else if (ada_is_packed_array_type (type0))
7545 else if (ada_is_array_descriptor_type (type0)
7546 && !ada_is_array_descriptor_type (type1))
7548 else if (ada_renaming_type (type0) != NULL
7549 && ada_renaming_type (type1) == NULL)
7554 /* The name of TYPE, which is either its TYPE_NAME, or, if that is
7555 null, its TYPE_TAG_NAME. Null if TYPE is null. */
7558 ada_type_name (struct type *type)
7562 else if (TYPE_NAME (type) != NULL)
7563 return TYPE_NAME (type);
7565 return TYPE_TAG_NAME (type);
7568 /* Find a parallel type to TYPE whose name is formed by appending
7569 SUFFIX to the name of TYPE. */
7572 ada_find_parallel_type (struct type *type, const char *suffix)
7575 static size_t name_len = 0;
7577 char *typename = ada_type_name (type);
7579 if (typename == NULL)
7582 len = strlen (typename);
7584 GROW_VECT (name, name_len, len + strlen (suffix) + 1);
7586 strcpy (name, typename);
7587 strcpy (name + len, suffix);
7589 return ada_find_any_type (name);
7593 /* If TYPE is a variable-size record type, return the corresponding template
7594 type describing its fields. Otherwise, return NULL. */
7596 static struct type *
7597 dynamic_template_type (struct type *type)
7599 CHECK_TYPEDEF (type);
7601 if (type == NULL || TYPE_CODE (type) != TYPE_CODE_STRUCT
7602 || ada_type_name (type) == NULL)
7606 int len = strlen (ada_type_name (type));
7607 if (len > 6 && strcmp (ada_type_name (type) + len - 6, "___XVE") == 0)
7610 return ada_find_parallel_type (type, "___XVE");
7614 /* Assuming that TEMPL_TYPE is a union or struct type, returns
7615 non-zero iff field FIELD_NUM of TEMPL_TYPE has dynamic size. */
7618 is_dynamic_field (struct type *templ_type, int field_num)
7620 const char *name = TYPE_FIELD_NAME (templ_type, field_num);
7622 && TYPE_CODE (TYPE_FIELD_TYPE (templ_type, field_num)) == TYPE_CODE_PTR
7623 && strstr (name, "___XVL") != NULL;
7626 /* The index of the variant field of TYPE, or -1 if TYPE does not
7627 represent a variant record type. */
7630 variant_field_index (struct type *type)
7634 if (type == NULL || TYPE_CODE (type) != TYPE_CODE_STRUCT)
7637 for (f = 0; f < TYPE_NFIELDS (type); f += 1)
7639 if (ada_is_variant_part (type, f))
7645 /* A record type with no fields. */
7647 static struct type *
7648 empty_record (struct objfile *objfile)
7650 struct type *type = alloc_type (objfile);
7651 TYPE_CODE (type) = TYPE_CODE_STRUCT;
7652 TYPE_NFIELDS (type) = 0;
7653 TYPE_FIELDS (type) = NULL;
7654 TYPE_NAME (type) = "<empty>";
7655 TYPE_TAG_NAME (type) = NULL;
7656 TYPE_FLAGS (type) = 0;
7657 TYPE_LENGTH (type) = 0;
7661 /* An ordinary record type (with fixed-length fields) that describes
7662 the value of type TYPE at VALADDR or ADDRESS (see comments at
7663 the beginning of this section) VAL according to GNAT conventions.
7664 DVAL0 should describe the (portion of a) record that contains any
7665 necessary discriminants. It should be NULL if VALUE_TYPE (VAL) is
7666 an outer-level type (i.e., as opposed to a branch of a variant.) A
7667 variant field (unless unchecked) is replaced by a particular branch
7670 If not KEEP_DYNAMIC_FIELDS, then all fields whose position or
7671 length are not statically known are discarded. As a consequence,
7672 VALADDR, ADDRESS and DVAL0 are ignored.
7674 NOTE: Limitations: For now, we assume that dynamic fields and
7675 variants occupy whole numbers of bytes. However, they need not be
7679 ada_template_to_fixed_record_type_1 (struct type *type, char *valaddr,
7680 CORE_ADDR address, struct value *dval0,
7681 int keep_dynamic_fields)
7683 struct value *mark = value_mark ();
7686 int nfields, bit_len;
7689 int fld_bit_len, bit_incr;
7692 /* Compute the number of fields in this record type that are going
7693 to be processed: unless keep_dynamic_fields, this includes only
7694 fields whose position and length are static will be processed. */
7695 if (keep_dynamic_fields)
7696 nfields = TYPE_NFIELDS (type);
7700 while (nfields < TYPE_NFIELDS (type)
7701 && !ada_is_variant_part (type, nfields)
7702 && !is_dynamic_field (type, nfields))
7706 rtype = alloc_type (TYPE_OBJFILE (type));
7707 TYPE_CODE (rtype) = TYPE_CODE_STRUCT;
7708 INIT_CPLUS_SPECIFIC (rtype);
7709 TYPE_NFIELDS (rtype) = nfields;
7710 TYPE_FIELDS (rtype) = (struct field *)
7711 TYPE_ALLOC (rtype, nfields * sizeof (struct field));
7712 memset (TYPE_FIELDS (rtype), 0, sizeof (struct field) * nfields);
7713 TYPE_NAME (rtype) = ada_type_name (type);
7714 TYPE_TAG_NAME (rtype) = NULL;
7715 TYPE_FLAGS (rtype) |= TYPE_FLAG_FIXED_INSTANCE;
7721 for (f = 0; f < nfields; f += 1)
7725 field_alignment (type, f)) + TYPE_FIELD_BITPOS (type, f);
7726 TYPE_FIELD_BITPOS (rtype, f) = off;
7727 TYPE_FIELD_BITSIZE (rtype, f) = 0;
7729 if (ada_is_variant_part (type, f))
7732 fld_bit_len = bit_incr = 0;
7734 else if (is_dynamic_field (type, f))
7737 dval = value_from_contents_and_address (rtype, valaddr, address);
7741 TYPE_FIELD_TYPE (rtype, f) =
7744 (TYPE_TARGET_TYPE (TYPE_FIELD_TYPE (type, f))),
7745 cond_offset_host (valaddr, off / TARGET_CHAR_BIT),
7746 cond_offset_target (address, off / TARGET_CHAR_BIT), dval);
7747 TYPE_FIELD_NAME (rtype, f) = TYPE_FIELD_NAME (type, f);
7748 bit_incr = fld_bit_len =
7749 TYPE_LENGTH (TYPE_FIELD_TYPE (rtype, f)) * TARGET_CHAR_BIT;
7753 TYPE_FIELD_TYPE (rtype, f) = TYPE_FIELD_TYPE (type, f);
7754 TYPE_FIELD_NAME (rtype, f) = TYPE_FIELD_NAME (type, f);
7755 if (TYPE_FIELD_BITSIZE (type, f) > 0)
7756 bit_incr = fld_bit_len =
7757 TYPE_FIELD_BITSIZE (rtype, f) = TYPE_FIELD_BITSIZE (type, f);
7759 bit_incr = fld_bit_len =
7760 TYPE_LENGTH (TYPE_FIELD_TYPE (type, f)) * TARGET_CHAR_BIT;
7762 if (off + fld_bit_len > bit_len)
7763 bit_len = off + fld_bit_len;
7765 TYPE_LENGTH (rtype) =
7766 align_value (bit_len, TARGET_CHAR_BIT) / TARGET_CHAR_BIT;
7769 /* We handle the variant part, if any, at the end because of certain
7770 odd cases in which it is re-ordered so as NOT the last field of
7771 the record. This can happen in the presence of representation
7773 if (variant_field >= 0)
7775 struct type *branch_type;
7777 off = TYPE_FIELD_BITPOS (rtype, variant_field);
7780 dval = value_from_contents_and_address (rtype, valaddr, address);
7785 to_fixed_variant_branch_type
7786 (TYPE_FIELD_TYPE (type, variant_field),
7787 cond_offset_host (valaddr, off / TARGET_CHAR_BIT),
7788 cond_offset_target (address, off / TARGET_CHAR_BIT), dval);
7789 if (branch_type == NULL)
7791 for (f = variant_field + 1; f < TYPE_NFIELDS (rtype); f += 1)
7792 TYPE_FIELDS (rtype)[f - 1] = TYPE_FIELDS (rtype)[f];
7793 TYPE_NFIELDS (rtype) -= 1;
7797 TYPE_FIELD_TYPE (rtype, variant_field) = branch_type;
7798 TYPE_FIELD_NAME (rtype, variant_field) = "S";
7800 TYPE_LENGTH (TYPE_FIELD_TYPE (rtype, variant_field)) *
7802 if (off + fld_bit_len > bit_len)
7803 bit_len = off + fld_bit_len;
7804 TYPE_LENGTH (rtype) =
7805 align_value (bit_len, TARGET_CHAR_BIT) / TARGET_CHAR_BIT;
7809 TYPE_LENGTH (rtype) = align_value (TYPE_LENGTH (rtype), TYPE_LENGTH (type));
7811 value_free_to_mark (mark);
7812 if (TYPE_LENGTH (rtype) > varsize_limit)
7813 error ("record type with dynamic size is larger than varsize-limit");
7817 /* As for ada_template_to_fixed_record_type_1 with KEEP_DYNAMIC_FIELDS
7820 static struct type *
7821 template_to_fixed_record_type (struct type *type, char *valaddr,
7822 CORE_ADDR address, struct value *dval0)
7824 return ada_template_to_fixed_record_type_1 (type, valaddr,
7828 /* An ordinary record type in which ___XVL-convention fields and
7829 ___XVU- and ___XVN-convention field types in TYPE0 are replaced with
7830 static approximations, containing all possible fields. Uses
7831 no runtime values. Useless for use in values, but that's OK,
7832 since the results are used only for type determinations. Works on both
7833 structs and unions. Representation note: to save space, we memorize
7834 the result of this function in the TYPE_TARGET_TYPE of the
7837 static struct type *
7838 template_to_static_fixed_type (struct type *type0)
7844 if (TYPE_TARGET_TYPE (type0) != NULL)
7845 return TYPE_TARGET_TYPE (type0);
7847 nfields = TYPE_NFIELDS (type0);
7850 for (f = 0; f < nfields; f += 1)
7852 struct type *field_type = CHECK_TYPEDEF (TYPE_FIELD_TYPE (type0, f));
7853 struct type *new_type;
7855 if (is_dynamic_field (type0, f))
7856 new_type = to_static_fixed_type (TYPE_TARGET_TYPE (field_type));
7858 new_type = to_static_fixed_type (field_type);
7859 if (type == type0 && new_type != field_type)
7861 TYPE_TARGET_TYPE (type0) = type = alloc_type (TYPE_OBJFILE (type0));
7862 TYPE_CODE (type) = TYPE_CODE (type0);
7863 INIT_CPLUS_SPECIFIC (type);
7864 TYPE_NFIELDS (type) = nfields;
7865 TYPE_FIELDS (type) = (struct field *)
7866 TYPE_ALLOC (type, nfields * sizeof (struct field));
7867 memcpy (TYPE_FIELDS (type), TYPE_FIELDS (type0),
7868 sizeof (struct field) * nfields);
7869 TYPE_NAME (type) = ada_type_name (type0);
7870 TYPE_TAG_NAME (type) = NULL;
7871 TYPE_FLAGS (type) |= TYPE_FLAG_FIXED_INSTANCE;
7872 TYPE_LENGTH (type) = 0;
7874 TYPE_FIELD_TYPE (type, f) = new_type;
7875 TYPE_FIELD_NAME (type, f) = TYPE_FIELD_NAME (type0, f);
7880 /* Given an object of type TYPE whose contents are at VALADDR and
7881 whose address in memory is ADDRESS, returns a revision of TYPE --
7882 a non-dynamic-sized record with a variant part -- in which
7883 the variant part is replaced with the appropriate branch. Looks
7884 for discriminant values in DVAL0, which can be NULL if the record
7885 contains the necessary discriminant values. */
7887 static struct type *
7888 to_record_with_fixed_variant_part (struct type *type, char *valaddr,
7889 CORE_ADDR address, struct value *dval0)
7891 struct value *mark = value_mark ();
7894 struct type *branch_type;
7895 int nfields = TYPE_NFIELDS (type);
7896 int variant_field = variant_field_index (type);
7898 if (variant_field == -1)
7902 dval = value_from_contents_and_address (type, valaddr, address);
7906 rtype = alloc_type (TYPE_OBJFILE (type));
7907 TYPE_CODE (rtype) = TYPE_CODE_STRUCT;
7908 INIT_CPLUS_SPECIFIC (rtype);
7909 TYPE_NFIELDS (rtype) = nfields;
7910 TYPE_FIELDS (rtype) =
7911 (struct field *) TYPE_ALLOC (rtype, nfields * sizeof (struct field));
7912 memcpy (TYPE_FIELDS (rtype), TYPE_FIELDS (type),
7913 sizeof (struct field) * nfields);
7914 TYPE_NAME (rtype) = ada_type_name (type);
7915 TYPE_TAG_NAME (rtype) = NULL;
7916 TYPE_FLAGS (rtype) |= TYPE_FLAG_FIXED_INSTANCE;
7917 TYPE_LENGTH (rtype) = TYPE_LENGTH (type);
7919 branch_type = to_fixed_variant_branch_type
7920 (TYPE_FIELD_TYPE (type, variant_field),
7921 cond_offset_host (valaddr,
7922 TYPE_FIELD_BITPOS (type, variant_field)
7924 cond_offset_target (address,
7925 TYPE_FIELD_BITPOS (type, variant_field)
7926 / TARGET_CHAR_BIT), dval);
7927 if (branch_type == NULL)
7930 for (f = variant_field + 1; f < nfields; f += 1)
7931 TYPE_FIELDS (rtype)[f - 1] = TYPE_FIELDS (rtype)[f];
7932 TYPE_NFIELDS (rtype) -= 1;
7936 TYPE_FIELD_TYPE (rtype, variant_field) = branch_type;
7937 TYPE_FIELD_NAME (rtype, variant_field) = "S";
7938 TYPE_FIELD_BITSIZE (rtype, variant_field) = 0;
7939 TYPE_LENGTH (rtype) += TYPE_LENGTH (branch_type);
7941 TYPE_LENGTH (rtype) -= TYPE_LENGTH (TYPE_FIELD_TYPE (type, variant_field));
7943 value_free_to_mark (mark);
7947 /* An ordinary record type (with fixed-length fields) that describes
7948 the value at (TYPE0, VALADDR, ADDRESS) [see explanation at
7949 beginning of this section]. Any necessary discriminants' values
7950 should be in DVAL, a record value; it may be NULL if the object
7951 at ADDR itself contains any necessary discriminant values.
7952 Additionally, VALADDR and ADDRESS may also be NULL if no discriminant
7953 values from the record are needed. Except in the case that DVAL,
7954 VALADDR, and ADDRESS are all 0 or NULL, a variant field (unless
7955 unchecked) is replaced by a particular branch of the variant.
7957 NOTE: the case in which DVAL and VALADDR are NULL and ADDRESS is 0
7958 is questionable and may be removed. It can arise during the
7959 processing of an unconstrained-array-of-record type where all the
7960 variant branches have exactly the same size. This is because in
7961 such cases, the compiler does not bother to use the XVS convention
7962 when encoding the record. I am currently dubious of this
7963 shortcut and suspect the compiler should be altered. FIXME. */
7965 static struct type *
7966 to_fixed_record_type (struct type *type0, char *valaddr,
7967 CORE_ADDR address, struct value *dval)
7969 struct type *templ_type;
7971 if (TYPE_FLAGS (type0) & TYPE_FLAG_FIXED_INSTANCE)
7974 templ_type = dynamic_template_type (type0);
7976 if (templ_type != NULL)
7977 return template_to_fixed_record_type (templ_type, valaddr, address, dval);
7978 else if (variant_field_index (type0) >= 0)
7980 if (dval == NULL && valaddr == NULL && address == 0)
7982 return to_record_with_fixed_variant_part (type0, valaddr, address,
7987 TYPE_FLAGS (type0) |= TYPE_FLAG_FIXED_INSTANCE;
7993 /* An ordinary record type (with fixed-length fields) that describes
7994 the value at (VAR_TYPE0, VALADDR, ADDRESS), where VAR_TYPE0 is a
7995 union type. Any necessary discriminants' values should be in DVAL,
7996 a record value. That is, this routine selects the appropriate
7997 branch of the union at ADDR according to the discriminant value
7998 indicated in the union's type name. */
8000 static struct type *
8001 to_fixed_variant_branch_type (struct type *var_type0, char *valaddr,
8002 CORE_ADDR address, struct value *dval)
8005 struct type *templ_type;
8006 struct type *var_type;
8008 if (TYPE_CODE (var_type0) == TYPE_CODE_PTR)
8009 var_type = TYPE_TARGET_TYPE (var_type0);
8011 var_type = var_type0;
8013 templ_type = ada_find_parallel_type (var_type, "___XVU");
8015 if (templ_type != NULL)
8016 var_type = templ_type;
8019 ada_which_variant_applies (var_type,
8020 VALUE_TYPE (dval), VALUE_CONTENTS (dval));
8023 return empty_record (TYPE_OBJFILE (var_type));
8024 else if (is_dynamic_field (var_type, which))
8025 return to_fixed_record_type
8026 (TYPE_TARGET_TYPE (TYPE_FIELD_TYPE (var_type, which)),
8027 valaddr, address, dval);
8028 else if (variant_field_index (TYPE_FIELD_TYPE (var_type, which)) >= 0)
8030 to_fixed_record_type
8031 (TYPE_FIELD_TYPE (var_type, which), valaddr, address, dval);
8033 return TYPE_FIELD_TYPE (var_type, which);
8036 /* Assuming that TYPE0 is an array type describing the type of a value
8037 at ADDR, and that DVAL describes a record containing any
8038 discriminants used in TYPE0, returns a type for the value that
8039 contains no dynamic components (that is, no components whose sizes
8040 are determined by run-time quantities). Unless IGNORE_TOO_BIG is
8041 true, gives an error message if the resulting type's size is over
8044 static struct type *
8045 to_fixed_array_type (struct type *type0, struct value *dval,
8048 struct type *index_type_desc;
8049 struct type *result;
8051 if (ada_is_packed_array_type (type0) /* revisit? */
8052 || (TYPE_FLAGS (type0) & TYPE_FLAG_FIXED_INSTANCE))
8055 index_type_desc = ada_find_parallel_type (type0, "___XA");
8056 if (index_type_desc == NULL)
8058 struct type *elt_type0 = check_typedef (TYPE_TARGET_TYPE (type0));
8059 /* NOTE: elt_type---the fixed version of elt_type0---should never
8060 depend on the contents of the array in properly constructed
8062 struct type *elt_type = ada_to_fixed_type (elt_type0, 0, 0, dval);
8064 if (elt_type0 == elt_type)
8067 result = create_array_type (alloc_type (TYPE_OBJFILE (type0)),
8068 elt_type, TYPE_INDEX_TYPE (type0));
8073 struct type *elt_type0;
8076 for (i = TYPE_NFIELDS (index_type_desc); i > 0; i -= 1)
8077 elt_type0 = TYPE_TARGET_TYPE (elt_type0);
8079 /* NOTE: result---the fixed version of elt_type0---should never
8080 depend on the contents of the array in properly constructed
8082 result = ada_to_fixed_type (check_typedef (elt_type0), 0, 0, dval);
8083 for (i = TYPE_NFIELDS (index_type_desc) - 1; i >= 0; i -= 1)
8085 struct type *range_type =
8086 to_fixed_range_type (TYPE_FIELD_NAME (index_type_desc, i),
8087 dval, TYPE_OBJFILE (type0));
8088 result = create_array_type (alloc_type (TYPE_OBJFILE (type0)),
8089 result, range_type);
8091 if (!ignore_too_big && TYPE_LENGTH (result) > varsize_limit)
8092 error ("array type with dynamic size is larger than varsize-limit");
8095 TYPE_FLAGS (result) |= TYPE_FLAG_FIXED_INSTANCE;
8100 /* A standard type (containing no dynamically sized components)
8101 corresponding to TYPE for the value (TYPE, VALADDR, ADDRESS)
8102 DVAL describes a record containing any discriminants used in TYPE0,
8103 and may be NULL if there are none, or if the object of type TYPE at
8104 ADDRESS or in VALADDR contains these discriminants. */
8107 ada_to_fixed_type (struct type *type, char *valaddr,
8108 CORE_ADDR address, struct value *dval)
8110 CHECK_TYPEDEF (type);
8111 switch (TYPE_CODE (type))
8115 case TYPE_CODE_STRUCT:
8117 struct type *static_type = to_static_fixed_type (type);
8118 if (ada_is_tagged_type (static_type, 0))
8120 struct type *real_type =
8121 type_from_tag (value_tag_from_contents_and_address (static_type,
8124 if (real_type != NULL)
8127 return to_fixed_record_type (type, valaddr, address, NULL);
8129 case TYPE_CODE_ARRAY:
8130 return to_fixed_array_type (type, dval, 1);
8131 case TYPE_CODE_UNION:
8135 return to_fixed_variant_branch_type (type, valaddr, address, dval);
8139 /* A standard (static-sized) type corresponding as well as possible to
8140 TYPE0, but based on no runtime data. */
8142 static struct type *
8143 to_static_fixed_type (struct type *type0)
8150 if (TYPE_FLAGS (type0) & TYPE_FLAG_FIXED_INSTANCE)
8153 CHECK_TYPEDEF (type0);
8155 switch (TYPE_CODE (type0))
8159 case TYPE_CODE_STRUCT:
8160 type = dynamic_template_type (type0);
8162 return template_to_static_fixed_type (type);
8164 return template_to_static_fixed_type (type0);
8165 case TYPE_CODE_UNION:
8166 type = ada_find_parallel_type (type0, "___XVU");
8168 return template_to_static_fixed_type (type);
8170 return template_to_static_fixed_type (type0);
8174 /* A static approximation of TYPE with all type wrappers removed. */
8176 static struct type *
8177 static_unwrap_type (struct type *type)
8179 if (ada_is_aligner_type (type))
8181 struct type *type1 = TYPE_FIELD_TYPE (check_typedef (type), 0);
8182 if (ada_type_name (type1) == NULL)
8183 TYPE_NAME (type1) = ada_type_name (type);
8185 return static_unwrap_type (type1);
8189 struct type *raw_real_type = ada_get_base_type (type);
8190 if (raw_real_type == type)
8193 return to_static_fixed_type (raw_real_type);
8197 /* In some cases, incomplete and private types require
8198 cross-references that are not resolved as records (for example,
8200 type FooP is access Foo;
8202 type Foo is array ...;
8203 ). In these cases, since there is no mechanism for producing
8204 cross-references to such types, we instead substitute for FooP a
8205 stub enumeration type that is nowhere resolved, and whose tag is
8206 the name of the actual type. Call these types "non-record stubs". */
8208 /* A type equivalent to TYPE that is not a non-record stub, if one
8209 exists, otherwise TYPE. */
8212 ada_completed_type (struct type *type)
8214 CHECK_TYPEDEF (type);
8215 if (type == NULL || TYPE_CODE (type) != TYPE_CODE_ENUM
8216 || (TYPE_FLAGS (type) & TYPE_FLAG_STUB) == 0
8217 || TYPE_TAG_NAME (type) == NULL)
8221 char *name = TYPE_TAG_NAME (type);
8222 struct type *type1 = ada_find_any_type (name);
8223 return (type1 == NULL) ? type : type1;
8227 /* A value representing the data at VALADDR/ADDRESS as described by
8228 type TYPE0, but with a standard (static-sized) type that correctly
8229 describes it. If VAL0 is not NULL and TYPE0 already is a standard
8230 type, then return VAL0 [this feature is simply to avoid redundant
8231 creation of struct values]. */
8233 static struct value *
8234 ada_to_fixed_value_create (struct type *type0, CORE_ADDR address,
8237 struct type *type = ada_to_fixed_type (type0, 0, address, NULL);
8238 if (type == type0 && val0 != NULL)
8241 return value_from_contents_and_address (type, 0, address);
8244 /* A value representing VAL, but with a standard (static-sized) type
8245 that correctly describes it. Does not necessarily create a new
8248 static struct value *
8249 ada_to_fixed_value (struct value *val)
8251 return ada_to_fixed_value_create (VALUE_TYPE (val),
8252 VALUE_ADDRESS (val) + VALUE_OFFSET (val),
8256 /* If the PC is pointing inside a function prologue, then re-adjust it
8257 past this prologue. */
8260 adjust_pc_past_prologue (CORE_ADDR *pc)
8262 struct symbol *func_sym = find_pc_function (*pc);
8266 const struct symtab_and_line sal =
8267 find_function_start_sal (func_sym, 1);
8274 /* A value representing VAL, but with a standard (static-sized) type
8275 chosen to approximate the real type of VAL as well as possible, but
8276 without consulting any runtime values. For Ada dynamic-sized
8277 types, therefore, the type of the result is likely to be inaccurate. */
8280 ada_to_static_fixed_value (struct value *val)
8283 to_static_fixed_type (static_unwrap_type (VALUE_TYPE (val)));
8284 if (type == VALUE_TYPE (val))
8287 return coerce_unspec_val_to_type (val, type);
8293 /* Table mapping attribute numbers to names.
8294 NOTE: Keep up to date with enum ada_attribute definition in ada-lang.h. */
8296 static const char *attribute_names[] = {
8314 ada_attribute_name (enum exp_opcode n)
8316 if (n >= OP_ATR_FIRST && n <= (int) OP_ATR_VAL)
8317 return attribute_names[n - OP_ATR_FIRST + 1];
8319 return attribute_names[0];
8322 /* Evaluate the 'POS attribute applied to ARG. */
8325 pos_atr (struct value *arg)
8327 struct type *type = VALUE_TYPE (arg);
8329 if (!discrete_type_p (type))
8330 error ("'POS only defined on discrete types");
8332 if (TYPE_CODE (type) == TYPE_CODE_ENUM)
8335 LONGEST v = value_as_long (arg);
8337 for (i = 0; i < TYPE_NFIELDS (type); i += 1)
8339 if (v == TYPE_FIELD_BITPOS (type, i))
8342 error ("enumeration value is invalid: can't find 'POS");
8345 return value_as_long (arg);
8348 static struct value *
8349 value_pos_atr (struct value *arg)
8351 return value_from_longest (builtin_type_ada_int, pos_atr (arg));
8354 /* Evaluate the TYPE'VAL attribute applied to ARG. */
8356 static struct value *
8357 value_val_atr (struct type *type, struct value *arg)
8359 if (!discrete_type_p (type))
8360 error ("'VAL only defined on discrete types");
8361 if (!integer_type_p (VALUE_TYPE (arg)))
8362 error ("'VAL requires integral argument");
8364 if (TYPE_CODE (type) == TYPE_CODE_ENUM)
8366 long pos = value_as_long (arg);
8367 if (pos < 0 || pos >= TYPE_NFIELDS (type))
8368 error ("argument to 'VAL out of range");
8369 return value_from_longest (type, TYPE_FIELD_BITPOS (type, pos));
8372 return value_from_longest (type, value_as_long (arg));
8378 /* True if TYPE appears to be an Ada character type.
8379 [At the moment, this is true only for Character and Wide_Character;
8380 It is a heuristic test that could stand improvement]. */
8383 ada_is_character_type (struct type *type)
8385 const char *name = ada_type_name (type);
8388 && (TYPE_CODE (type) == TYPE_CODE_CHAR
8389 || TYPE_CODE (type) == TYPE_CODE_INT
8390 || TYPE_CODE (type) == TYPE_CODE_RANGE)
8391 && (strcmp (name, "character") == 0
8392 || strcmp (name, "wide_character") == 0
8393 || strcmp (name, "unsigned char") == 0);
8396 /* True if TYPE appears to be an Ada string type. */
8399 ada_is_string_type (struct type *type)
8401 CHECK_TYPEDEF (type);
8403 && TYPE_CODE (type) != TYPE_CODE_PTR
8404 && (ada_is_simple_array_type (type)
8405 || ada_is_array_descriptor_type (type))
8406 && ada_array_arity (type) == 1)
8408 struct type *elttype = ada_array_element_type (type, 1);
8410 return ada_is_character_type (elttype);
8417 /* True if TYPE is a struct type introduced by the compiler to force the
8418 alignment of a value. Such types have a single field with a
8419 distinctive name. */
8422 ada_is_aligner_type (struct type *type)
8424 CHECK_TYPEDEF (type);
8425 return (TYPE_CODE (type) == TYPE_CODE_STRUCT
8426 && TYPE_NFIELDS (type) == 1
8427 && strcmp (TYPE_FIELD_NAME (type, 0), "F") == 0);
8430 /* If there is an ___XVS-convention type parallel to SUBTYPE, return
8431 the parallel type. */
8434 ada_get_base_type (struct type *raw_type)
8436 struct type *real_type_namer;
8437 struct type *raw_real_type;
8439 if (raw_type == NULL || TYPE_CODE (raw_type) != TYPE_CODE_STRUCT)
8442 real_type_namer = ada_find_parallel_type (raw_type, "___XVS");
8443 if (real_type_namer == NULL
8444 || TYPE_CODE (real_type_namer) != TYPE_CODE_STRUCT
8445 || TYPE_NFIELDS (real_type_namer) != 1)
8448 raw_real_type = ada_find_any_type (TYPE_FIELD_NAME (real_type_namer, 0));
8449 if (raw_real_type == NULL)
8452 return raw_real_type;
8455 /* The type of value designated by TYPE, with all aligners removed. */
8458 ada_aligned_type (struct type *type)
8460 if (ada_is_aligner_type (type))
8461 return ada_aligned_type (TYPE_FIELD_TYPE (type, 0));
8463 return ada_get_base_type (type);
8467 /* The address of the aligned value in an object at address VALADDR
8468 having type TYPE. Assumes ada_is_aligner_type (TYPE). */
8471 ada_aligned_value_addr (struct type *type, char *valaddr)
8473 if (ada_is_aligner_type (type))
8474 return ada_aligned_value_addr (TYPE_FIELD_TYPE (type, 0),
8476 TYPE_FIELD_BITPOS (type,
8477 0) / TARGET_CHAR_BIT);
8484 /* The printed representation of an enumeration literal with encoded
8485 name NAME. The value is good to the next call of ada_enum_name. */
8487 ada_enum_name (const char *name)
8489 static char *result;
8490 static size_t result_len = 0;
8493 /* First, unqualify the enumeration name:
8494 1. Search for the last '.' character. If we find one, then skip
8495 all the preceeding characters, the unqualified name starts
8496 right after that dot.
8497 2. Otherwise, we may be debugging on a target where the compiler
8498 translates dots into "__". Search forward for double underscores,
8499 but stop searching when we hit an overloading suffix, which is
8500 of the form "__" followed by digits. */
8502 tmp = strrchr (name, '.');
8507 while ((tmp = strstr (name, "__")) != NULL)
8509 if (isdigit (tmp[2]))
8519 if (name[1] == 'U' || name[1] == 'W')
8521 if (sscanf (name + 2, "%x", &v) != 1)
8527 GROW_VECT (result, result_len, 16);
8528 if (isascii (v) && isprint (v))
8529 sprintf (result, "'%c'", v);
8530 else if (name[1] == 'U')
8531 sprintf (result, "[\"%02x\"]", v);
8533 sprintf (result, "[\"%04x\"]", v);
8539 tmp = strstr (name, "__");
8541 tmp = strstr (name, "$");
8544 GROW_VECT (result, result_len, tmp - name + 1);
8545 strncpy (result, name, tmp - name);
8546 result[tmp - name] = '\0';
8554 static struct value *
8555 evaluate_subexp (struct type *expect_type, struct expression *exp, int *pos,
8558 return (*exp->language_defn->la_exp_desc->evaluate_exp)
8559 (expect_type, exp, pos, noside);
8562 /* Evaluate the subexpression of EXP starting at *POS as for
8563 evaluate_type, updating *POS to point just past the evaluated
8566 static struct value *
8567 evaluate_subexp_type (struct expression *exp, int *pos)
8569 return (*exp->language_defn->la_exp_desc->evaluate_exp)
8570 (NULL_TYPE, exp, pos, EVAL_AVOID_SIDE_EFFECTS);
8573 /* If VAL is wrapped in an aligner or subtype wrapper, return the
8576 static struct value *
8577 unwrap_value (struct value *val)
8579 struct type *type = check_typedef (VALUE_TYPE (val));
8580 if (ada_is_aligner_type (type))
8582 struct value *v = value_struct_elt (&val, NULL, "F",
8583 NULL, "internal structure");
8584 struct type *val_type = check_typedef (VALUE_TYPE (v));
8585 if (ada_type_name (val_type) == NULL)
8586 TYPE_NAME (val_type) = ada_type_name (type);
8588 return unwrap_value (v);
8592 struct type *raw_real_type =
8593 ada_completed_type (ada_get_base_type (type));
8595 if (type == raw_real_type)
8599 coerce_unspec_val_to_type
8600 (val, ada_to_fixed_type (raw_real_type, 0,
8601 VALUE_ADDRESS (val) + VALUE_OFFSET (val),
8606 static struct value *
8607 cast_to_fixed (struct type *type, struct value *arg)
8611 if (type == VALUE_TYPE (arg))
8613 else if (ada_is_fixed_point_type (VALUE_TYPE (arg)))
8614 val = ada_float_to_fixed (type,
8615 ada_fixed_to_float (VALUE_TYPE (arg),
8616 value_as_long (arg)));
8620 value_as_double (value_cast (builtin_type_double, value_copy (arg)));
8621 val = ada_float_to_fixed (type, argd);
8624 return value_from_longest (type, val);
8627 static struct value *
8628 cast_from_fixed_to_double (struct value *arg)
8630 DOUBLEST val = ada_fixed_to_float (VALUE_TYPE (arg),
8631 value_as_long (arg));
8632 return value_from_double (builtin_type_double, val);
8635 /* Coerce VAL as necessary for assignment to an lval of type TYPE, and
8636 return the converted value. */
8638 static struct value *
8639 coerce_for_assign (struct type *type, struct value *val)
8641 struct type *type2 = VALUE_TYPE (val);
8645 CHECK_TYPEDEF (type2);
8646 CHECK_TYPEDEF (type);
8648 if (TYPE_CODE (type2) == TYPE_CODE_PTR
8649 && TYPE_CODE (type) == TYPE_CODE_ARRAY)
8651 val = ada_value_ind (val);
8652 type2 = VALUE_TYPE (val);
8655 if (TYPE_CODE (type2) == TYPE_CODE_ARRAY
8656 && TYPE_CODE (type) == TYPE_CODE_ARRAY)
8658 if (TYPE_LENGTH (type2) != TYPE_LENGTH (type)
8659 || TYPE_LENGTH (TYPE_TARGET_TYPE (type2))
8660 != TYPE_LENGTH (TYPE_TARGET_TYPE (type2)))
8661 error ("Incompatible types in assignment");
8662 VALUE_TYPE (val) = type;
8667 static struct value *
8668 ada_value_binop (struct value *arg1, struct value *arg2, enum exp_opcode op)
8671 struct type *type1, *type2;
8676 type1 = base_type (check_typedef (VALUE_TYPE (arg1)));
8677 type2 = base_type (check_typedef (VALUE_TYPE (arg2)));
8679 if (TYPE_CODE (type1) != TYPE_CODE_INT
8680 || TYPE_CODE (type2) != TYPE_CODE_INT)
8681 return value_binop (arg1, arg2, op);
8690 return value_binop (arg1, arg2, op);
8693 v2 = value_as_long (arg2);
8695 error ("second operand of %s must not be zero.", op_string (op));
8697 if (TYPE_UNSIGNED (type1) || op == BINOP_MOD)
8698 return value_binop (arg1, arg2, op);
8700 v1 = value_as_long (arg1);
8705 if (!TRUNCATION_TOWARDS_ZERO && v1 * (v1 % v2) < 0)
8706 v += v > 0 ? -1 : 1;
8714 /* Should not reach this point. */
8718 val = allocate_value (type1);
8719 store_unsigned_integer (VALUE_CONTENTS_RAW (val),
8720 TYPE_LENGTH (VALUE_TYPE (val)), v);
8725 ada_value_equal (struct value *arg1, struct value *arg2)
8727 if (ada_is_direct_array_type (VALUE_TYPE (arg1))
8728 || ada_is_direct_array_type (VALUE_TYPE (arg2)))
8730 arg1 = ada_coerce_to_simple_array (arg1);
8731 arg2 = ada_coerce_to_simple_array (arg2);
8732 if (TYPE_CODE (VALUE_TYPE (arg1)) != TYPE_CODE_ARRAY
8733 || TYPE_CODE (VALUE_TYPE (arg2)) != TYPE_CODE_ARRAY)
8734 error ("Attempt to compare array with non-array");
8735 /* FIXME: The following works only for types whose
8736 representations use all bits (no padding or undefined bits)
8737 and do not have user-defined equality. */
8739 TYPE_LENGTH (VALUE_TYPE (arg1)) == TYPE_LENGTH (VALUE_TYPE (arg2))
8740 && memcmp (VALUE_CONTENTS (arg1), VALUE_CONTENTS (arg2),
8741 TYPE_LENGTH (VALUE_TYPE (arg1))) == 0;
8743 return value_equal (arg1, arg2);
8747 ada_evaluate_subexp (struct type *expect_type, struct expression *exp,
8748 int *pos, enum noside noside)
8751 int tem, tem2, tem3;
8753 struct value *arg1 = NULL, *arg2 = NULL, *arg3;
8756 struct value **argvec;
8760 op = exp->elts[pc].opcode;
8767 unwrap_value (evaluate_subexp_standard
8768 (expect_type, exp, pos, noside));
8772 struct value *result;
8774 result = evaluate_subexp_standard (expect_type, exp, pos, noside);
8775 /* The result type will have code OP_STRING, bashed there from
8776 OP_ARRAY. Bash it back. */
8777 if (TYPE_CODE (VALUE_TYPE (result)) == TYPE_CODE_STRING)
8778 TYPE_CODE (VALUE_TYPE (result)) = TYPE_CODE_ARRAY;
8784 type = exp->elts[pc + 1].type;
8785 arg1 = evaluate_subexp (type, exp, pos, noside);
8786 if (noside == EVAL_SKIP)
8788 if (type != check_typedef (VALUE_TYPE (arg1)))
8790 if (ada_is_fixed_point_type (type))
8791 arg1 = cast_to_fixed (type, arg1);
8792 else if (ada_is_fixed_point_type (VALUE_TYPE (arg1)))
8793 arg1 = value_cast (type, cast_from_fixed_to_double (arg1));
8794 else if (VALUE_LVAL (arg1) == lval_memory)
8796 /* This is in case of the really obscure (and undocumented,
8797 but apparently expected) case of (Foo) Bar.all, where Bar
8798 is an integer constant and Foo is a dynamic-sized type.
8799 If we don't do this, ARG1 will simply be relabeled with
8801 if (noside == EVAL_AVOID_SIDE_EFFECTS)
8802 return value_zero (to_static_fixed_type (type), not_lval);
8804 ada_to_fixed_value_create
8805 (type, VALUE_ADDRESS (arg1) + VALUE_OFFSET (arg1), 0);
8808 arg1 = value_cast (type, arg1);
8814 type = exp->elts[pc + 1].type;
8815 return ada_evaluate_subexp (type, exp, pos, noside);
8818 arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
8819 arg2 = evaluate_subexp (VALUE_TYPE (arg1), exp, pos, noside);
8820 if (noside == EVAL_SKIP || noside == EVAL_AVOID_SIDE_EFFECTS)
8822 if (ada_is_fixed_point_type (VALUE_TYPE (arg1)))
8823 arg2 = cast_to_fixed (VALUE_TYPE (arg1), arg2);
8824 else if (ada_is_fixed_point_type (VALUE_TYPE (arg2)))
8826 ("Fixed-point values must be assigned to fixed-point variables");
8828 arg2 = coerce_for_assign (VALUE_TYPE (arg1), arg2);
8829 return ada_value_assign (arg1, arg2);
8832 arg1 = evaluate_subexp_with_coercion (exp, pos, noside);
8833 arg2 = evaluate_subexp_with_coercion (exp, pos, noside);
8834 if (noside == EVAL_SKIP)
8836 if ((ada_is_fixed_point_type (VALUE_TYPE (arg1))
8837 || ada_is_fixed_point_type (VALUE_TYPE (arg2)))
8838 && VALUE_TYPE (arg1) != VALUE_TYPE (arg2))
8839 error ("Operands of fixed-point addition must have the same type");
8840 return value_cast (VALUE_TYPE (arg1), value_add (arg1, arg2));
8843 arg1 = evaluate_subexp_with_coercion (exp, pos, noside);
8844 arg2 = evaluate_subexp_with_coercion (exp, pos, noside);
8845 if (noside == EVAL_SKIP)
8847 if ((ada_is_fixed_point_type (VALUE_TYPE (arg1))
8848 || ada_is_fixed_point_type (VALUE_TYPE (arg2)))
8849 && VALUE_TYPE (arg1) != VALUE_TYPE (arg2))
8850 error ("Operands of fixed-point subtraction must have the same type");
8851 return value_cast (VALUE_TYPE (arg1), value_sub (arg1, arg2));
8855 arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
8856 arg2 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
8857 if (noside == EVAL_SKIP)
8859 else if (noside == EVAL_AVOID_SIDE_EFFECTS
8860 && (op == BINOP_DIV || op == BINOP_REM || op == BINOP_MOD))
8861 return value_zero (VALUE_TYPE (arg1), not_lval);
8864 if (ada_is_fixed_point_type (VALUE_TYPE (arg1)))
8865 arg1 = cast_from_fixed_to_double (arg1);
8866 if (ada_is_fixed_point_type (VALUE_TYPE (arg2)))
8867 arg2 = cast_from_fixed_to_double (arg2);
8868 return ada_value_binop (arg1, arg2, op);
8873 arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
8874 arg2 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
8875 if (noside == EVAL_SKIP)
8877 else if (noside == EVAL_AVOID_SIDE_EFFECTS
8878 && (op == BINOP_DIV || op == BINOP_REM || op == BINOP_MOD))
8879 return value_zero (VALUE_TYPE (arg1), not_lval);
8881 return ada_value_binop (arg1, arg2, op);
8884 case BINOP_NOTEQUAL:
8885 arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
8886 arg2 = evaluate_subexp (VALUE_TYPE (arg1), exp, pos, noside);
8887 if (noside == EVAL_SKIP)
8889 if (noside == EVAL_AVOID_SIDE_EFFECTS)
8892 tem = ada_value_equal (arg1, arg2);
8893 if (op == BINOP_NOTEQUAL)
8895 return value_from_longest (LA_BOOL_TYPE, (LONGEST) tem);
8898 arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
8899 if (noside == EVAL_SKIP)
8901 else if (ada_is_fixed_point_type (VALUE_TYPE (arg1)))
8902 return value_cast (VALUE_TYPE (arg1), value_neg (arg1));
8904 return value_neg (arg1);
8908 if (noside == EVAL_SKIP)
8913 else if (SYMBOL_DOMAIN (exp->elts[pc + 2].symbol) == UNDEF_DOMAIN)
8914 /* Only encountered when an unresolved symbol occurs in a
8915 context other than a function call, in which case, it is
8917 error ("Unexpected unresolved symbol, %s, during evaluation",
8918 SYMBOL_PRINT_NAME (exp->elts[pc + 2].symbol));
8919 else if (noside == EVAL_AVOID_SIDE_EFFECTS)
8923 (to_static_fixed_type
8924 (static_unwrap_type (SYMBOL_TYPE (exp->elts[pc + 2].symbol))),
8930 unwrap_value (evaluate_subexp_standard
8931 (expect_type, exp, pos, noside));
8932 return ada_to_fixed_value (arg1);
8938 /* Allocate arg vector, including space for the function to be
8939 called in argvec[0] and a terminating NULL. */
8940 nargs = longest_to_int (exp->elts[pc + 1].longconst);
8942 (struct value **) alloca (sizeof (struct value *) * (nargs + 2));
8944 if (exp->elts[*pos].opcode == OP_VAR_VALUE
8945 && SYMBOL_DOMAIN (exp->elts[pc + 5].symbol) == UNDEF_DOMAIN)
8946 error ("Unexpected unresolved symbol, %s, during evaluation",
8947 SYMBOL_PRINT_NAME (exp->elts[pc + 5].symbol));
8950 for (tem = 0; tem <= nargs; tem += 1)
8951 argvec[tem] = evaluate_subexp (NULL_TYPE, exp, pos, noside);
8954 if (noside == EVAL_SKIP)
8958 if (ada_is_packed_array_type (desc_base_type (VALUE_TYPE (argvec[0]))))
8959 argvec[0] = ada_coerce_to_simple_array (argvec[0]);
8960 else if (TYPE_CODE (VALUE_TYPE (argvec[0])) == TYPE_CODE_REF
8961 || (TYPE_CODE (VALUE_TYPE (argvec[0])) == TYPE_CODE_ARRAY
8962 && VALUE_LVAL (argvec[0]) == lval_memory))
8963 argvec[0] = value_addr (argvec[0]);
8965 type = check_typedef (VALUE_TYPE (argvec[0]));
8966 if (TYPE_CODE (type) == TYPE_CODE_PTR)
8968 switch (TYPE_CODE (check_typedef (TYPE_TARGET_TYPE (type))))
8970 case TYPE_CODE_FUNC:
8971 type = check_typedef (TYPE_TARGET_TYPE (type));
8973 case TYPE_CODE_ARRAY:
8975 case TYPE_CODE_STRUCT:
8976 if (noside != EVAL_AVOID_SIDE_EFFECTS)
8977 argvec[0] = ada_value_ind (argvec[0]);
8978 type = check_typedef (TYPE_TARGET_TYPE (type));
8981 error ("cannot subscript or call something of type `%s'",
8982 ada_type_name (VALUE_TYPE (argvec[0])));
8987 switch (TYPE_CODE (type))
8989 case TYPE_CODE_FUNC:
8990 if (noside == EVAL_AVOID_SIDE_EFFECTS)
8991 return allocate_value (TYPE_TARGET_TYPE (type));
8992 return call_function_by_hand (argvec[0], nargs, argvec + 1);
8993 case TYPE_CODE_STRUCT:
8997 arity = ada_array_arity (type);
8998 type = ada_array_element_type (type, nargs);
9000 error ("cannot subscript or call a record");
9002 error ("wrong number of subscripts; expecting %d", arity);
9003 if (noside == EVAL_AVOID_SIDE_EFFECTS)
9004 return allocate_value (ada_aligned_type (type));
9006 unwrap_value (ada_value_subscript
9007 (argvec[0], nargs, argvec + 1));
9009 case TYPE_CODE_ARRAY:
9010 if (noside == EVAL_AVOID_SIDE_EFFECTS)
9012 type = ada_array_element_type (type, nargs);
9014 error ("element type of array unknown");
9016 return allocate_value (ada_aligned_type (type));
9019 unwrap_value (ada_value_subscript
9020 (ada_coerce_to_simple_array (argvec[0]),
9021 nargs, argvec + 1));
9022 case TYPE_CODE_PTR: /* Pointer to array */
9023 type = to_fixed_array_type (TYPE_TARGET_TYPE (type), NULL, 1);
9024 if (noside == EVAL_AVOID_SIDE_EFFECTS)
9026 type = ada_array_element_type (type, nargs);
9028 error ("element type of array unknown");
9030 return allocate_value (ada_aligned_type (type));
9033 unwrap_value (ada_value_ptr_subscript (argvec[0], type,
9034 nargs, argvec + 1));
9037 error ("Internal error in evaluate_subexp");
9042 struct value *array = evaluate_subexp (NULL_TYPE, exp, pos, noside);
9043 struct value *low_bound_val =
9044 evaluate_subexp (NULL_TYPE, exp, pos, noside);
9045 LONGEST low_bound = pos_atr (low_bound_val);
9047 = pos_atr (evaluate_subexp (NULL_TYPE, exp, pos, noside));
9048 if (noside == EVAL_SKIP)
9051 /* If this is a reference to an aligner type, then remove all
9053 if (TYPE_CODE (VALUE_TYPE (array)) == TYPE_CODE_REF
9054 && ada_is_aligner_type (TYPE_TARGET_TYPE (VALUE_TYPE (array))))
9055 TYPE_TARGET_TYPE (VALUE_TYPE (array)) =
9056 ada_aligned_type (TYPE_TARGET_TYPE (VALUE_TYPE (array)));
9058 if (ada_is_packed_array_type (VALUE_TYPE (array)))
9059 error ("cannot slice a packed array");
9061 /* If this is a reference to an array or an array lvalue,
9062 convert to a pointer. */
9063 if (TYPE_CODE (VALUE_TYPE (array)) == TYPE_CODE_REF
9064 || (TYPE_CODE (VALUE_TYPE (array)) == TYPE_CODE_ARRAY
9065 && VALUE_LVAL (array) == lval_memory))
9066 array = value_addr (array);
9068 if (noside == EVAL_AVOID_SIDE_EFFECTS
9069 && ada_is_array_descriptor_type (check_typedef
9070 (VALUE_TYPE (array))))
9071 return empty_array (ada_type_of_array (array, 0), low_bound);
9073 array = ada_coerce_to_simple_array_ptr (array);
9075 if (TYPE_CODE (VALUE_TYPE (array)) == TYPE_CODE_PTR)
9077 if (high_bound < low_bound || noside == EVAL_AVOID_SIDE_EFFECTS)
9078 return empty_array (TYPE_TARGET_TYPE (VALUE_TYPE (array)),
9082 struct type *arr_type0 =
9083 to_fixed_array_type (TYPE_TARGET_TYPE (VALUE_TYPE (array)),
9085 return ada_value_slice_ptr (array, arr_type0,
9086 (int) low_bound, (int) high_bound);
9089 else if (noside == EVAL_AVOID_SIDE_EFFECTS)
9091 else if (high_bound < low_bound)
9092 return empty_array (VALUE_TYPE (array), low_bound);
9094 return ada_value_slice (array, (int) low_bound, (int) high_bound);
9099 arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
9100 type = exp->elts[pc + 1].type;
9102 if (noside == EVAL_SKIP)
9105 switch (TYPE_CODE (type))
9108 lim_warning ("Membership test incompletely implemented; "
9109 "always returns true", 0);
9110 return value_from_longest (builtin_type_int, (LONGEST) 1);
9112 case TYPE_CODE_RANGE:
9113 arg2 = value_from_longest (builtin_type_int, TYPE_LOW_BOUND (type));
9114 arg3 = value_from_longest (builtin_type_int,
9115 TYPE_HIGH_BOUND (type));
9117 value_from_longest (builtin_type_int,
9118 (value_less (arg1, arg3)
9119 || value_equal (arg1, arg3))
9120 && (value_less (arg2, arg1)
9121 || value_equal (arg2, arg1)));
9124 case BINOP_IN_BOUNDS:
9126 arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
9127 arg2 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
9129 if (noside == EVAL_SKIP)
9132 if (noside == EVAL_AVOID_SIDE_EFFECTS)
9133 return value_zero (builtin_type_int, not_lval);
9135 tem = longest_to_int (exp->elts[pc + 1].longconst);
9137 if (tem < 1 || tem > ada_array_arity (VALUE_TYPE (arg2)))
9138 error ("invalid dimension number to '%s", "range");
9140 arg3 = ada_array_bound (arg2, tem, 1);
9141 arg2 = ada_array_bound (arg2, tem, 0);
9144 value_from_longest (builtin_type_int,
9145 (value_less (arg1, arg3)
9146 || value_equal (arg1, arg3))
9147 && (value_less (arg2, arg1)
9148 || value_equal (arg2, arg1)));
9150 case TERNOP_IN_RANGE:
9151 arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
9152 arg2 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
9153 arg3 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
9155 if (noside == EVAL_SKIP)
9159 value_from_longest (builtin_type_int,
9160 (value_less (arg1, arg3)
9161 || value_equal (arg1, arg3))
9162 && (value_less (arg2, arg1)
9163 || value_equal (arg2, arg1)));
9169 struct type *type_arg;
9170 if (exp->elts[*pos].opcode == OP_TYPE)
9172 evaluate_subexp (NULL_TYPE, exp, pos, EVAL_SKIP);
9174 type_arg = exp->elts[pc + 2].type;
9178 arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
9182 if (exp->elts[*pos].opcode != OP_LONG)
9183 error ("illegal operand to '%s", ada_attribute_name (op));
9184 tem = longest_to_int (exp->elts[*pos + 2].longconst);
9187 if (noside == EVAL_SKIP)
9190 if (type_arg == NULL)
9192 arg1 = ada_coerce_ref (arg1);
9194 if (ada_is_packed_array_type (VALUE_TYPE (arg1)))
9195 arg1 = ada_coerce_to_simple_array (arg1);
9197 if (tem < 1 || tem > ada_array_arity (VALUE_TYPE (arg1)))
9198 error ("invalid dimension number to '%s",
9199 ada_attribute_name (op));
9201 if (noside == EVAL_AVOID_SIDE_EFFECTS)
9203 type = ada_index_type (VALUE_TYPE (arg1), tem);
9206 ("attempt to take bound of something that is not an array");
9207 return allocate_value (type);
9212 default: /* Should never happen. */
9213 error ("unexpected attribute encountered");
9215 return ada_array_bound (arg1, tem, 0);
9217 return ada_array_bound (arg1, tem, 1);
9219 return ada_array_length (arg1, tem);
9222 else if (discrete_type_p (type_arg))
9224 struct type *range_type;
9225 char *name = ada_type_name (type_arg);
9227 if (name != NULL && TYPE_CODE (type_arg) != TYPE_CODE_ENUM)
9229 to_fixed_range_type (name, NULL, TYPE_OBJFILE (type_arg));
9230 if (range_type == NULL)
9231 range_type = type_arg;
9235 error ("unexpected attribute encountered");
9237 return discrete_type_low_bound (range_type);
9239 return discrete_type_high_bound (range_type);
9241 error ("the 'length attribute applies only to array types");
9244 else if (TYPE_CODE (type_arg) == TYPE_CODE_FLT)
9245 error ("unimplemented type attribute");
9250 if (ada_is_packed_array_type (type_arg))
9251 type_arg = decode_packed_array_type (type_arg);
9253 if (tem < 1 || tem > ada_array_arity (type_arg))
9254 error ("invalid dimension number to '%s",
9255 ada_attribute_name (op));
9257 type = ada_index_type (type_arg, tem);
9260 ("attempt to take bound of something that is not an array");
9261 if (noside == EVAL_AVOID_SIDE_EFFECTS)
9262 return allocate_value (type);
9267 error ("unexpected attribute encountered");
9269 low = ada_array_bound_from_type (type_arg, tem, 0, &type);
9270 return value_from_longest (type, low);
9272 high = ada_array_bound_from_type (type_arg, tem, 1, &type);
9273 return value_from_longest (type, high);
9275 low = ada_array_bound_from_type (type_arg, tem, 0, &type);
9276 high = ada_array_bound_from_type (type_arg, tem, 1, NULL);
9277 return value_from_longest (type, high - low + 1);
9283 arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
9284 if (noside == EVAL_SKIP)
9287 if (noside == EVAL_AVOID_SIDE_EFFECTS)
9288 return value_zero (ada_tag_type (arg1), not_lval);
9290 return ada_value_tag (arg1);
9294 evaluate_subexp (NULL_TYPE, exp, pos, EVAL_SKIP);
9295 arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
9296 arg2 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
9297 if (noside == EVAL_SKIP)
9299 else if (noside == EVAL_AVOID_SIDE_EFFECTS)
9300 return value_zero (VALUE_TYPE (arg1), not_lval);
9302 return value_binop (arg1, arg2,
9303 op == OP_ATR_MIN ? BINOP_MIN : BINOP_MAX);
9305 case OP_ATR_MODULUS:
9307 struct type *type_arg = exp->elts[pc + 2].type;
9308 evaluate_subexp (NULL_TYPE, exp, pos, EVAL_SKIP);
9310 if (noside == EVAL_SKIP)
9313 if (!ada_is_modular_type (type_arg))
9314 error ("'modulus must be applied to modular type");
9316 return value_from_longest (TYPE_TARGET_TYPE (type_arg),
9317 ada_modulus (type_arg));
9322 evaluate_subexp (NULL_TYPE, exp, pos, EVAL_SKIP);
9323 arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
9324 if (noside == EVAL_SKIP)
9326 else if (noside == EVAL_AVOID_SIDE_EFFECTS)
9327 return value_zero (builtin_type_ada_int, not_lval);
9329 return value_pos_atr (arg1);
9332 arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
9333 if (noside == EVAL_SKIP)
9335 else if (noside == EVAL_AVOID_SIDE_EFFECTS)
9336 return value_zero (builtin_type_ada_int, not_lval);
9338 return value_from_longest (builtin_type_ada_int,
9340 * TYPE_LENGTH (VALUE_TYPE (arg1)));
9343 evaluate_subexp (NULL_TYPE, exp, pos, EVAL_SKIP);
9344 arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
9345 type = exp->elts[pc + 2].type;
9346 if (noside == EVAL_SKIP)
9348 else if (noside == EVAL_AVOID_SIDE_EFFECTS)
9349 return value_zero (type, not_lval);
9351 return value_val_atr (type, arg1);
9354 arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
9355 arg2 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
9356 if (noside == EVAL_SKIP)
9358 else if (noside == EVAL_AVOID_SIDE_EFFECTS)
9359 return value_zero (VALUE_TYPE (arg1), not_lval);
9361 return value_binop (arg1, arg2, op);
9364 arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
9365 if (noside == EVAL_SKIP)
9371 arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
9372 if (noside == EVAL_SKIP)
9374 if (value_less (arg1, value_zero (VALUE_TYPE (arg1), not_lval)))
9375 return value_neg (arg1);
9380 if (expect_type && TYPE_CODE (expect_type) == TYPE_CODE_PTR)
9381 expect_type = TYPE_TARGET_TYPE (check_typedef (expect_type));
9382 arg1 = evaluate_subexp (expect_type, exp, pos, noside);
9383 if (noside == EVAL_SKIP)
9385 type = check_typedef (VALUE_TYPE (arg1));
9386 if (noside == EVAL_AVOID_SIDE_EFFECTS)
9388 if (ada_is_array_descriptor_type (type))
9389 /* GDB allows dereferencing GNAT array descriptors. */
9391 struct type *arrType = ada_type_of_array (arg1, 0);
9392 if (arrType == NULL)
9393 error ("Attempt to dereference null array pointer.");
9394 return value_at_lazy (arrType, 0, NULL);
9396 else if (TYPE_CODE (type) == TYPE_CODE_PTR
9397 || TYPE_CODE (type) == TYPE_CODE_REF
9398 /* In C you can dereference an array to get the 1st elt. */
9399 || TYPE_CODE (type) == TYPE_CODE_ARRAY)
9402 (to_static_fixed_type
9403 (ada_aligned_type (check_typedef (TYPE_TARGET_TYPE (type)))),
9405 else if (TYPE_CODE (type) == TYPE_CODE_INT)
9406 /* GDB allows dereferencing an int. */
9407 return value_zero (builtin_type_int, lval_memory);
9409 error ("Attempt to take contents of a non-pointer value.");
9411 arg1 = ada_coerce_ref (arg1); /* FIXME: What is this for?? */
9412 type = check_typedef (VALUE_TYPE (arg1));
9414 if (ada_is_array_descriptor_type (type))
9415 /* GDB allows dereferencing GNAT array descriptors. */
9416 return ada_coerce_to_simple_array (arg1);
9418 return ada_value_ind (arg1);
9420 case STRUCTOP_STRUCT:
9421 tem = longest_to_int (exp->elts[pc + 1].longconst);
9422 (*pos) += 3 + BYTES_TO_EXP_ELEM (tem + 1);
9423 arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
9424 if (noside == EVAL_SKIP)
9426 if (noside == EVAL_AVOID_SIDE_EFFECTS)
9428 struct type *type1 = VALUE_TYPE (arg1);
9429 if (ada_is_tagged_type (type1, 1))
9431 type = ada_lookup_struct_elt_type (type1,
9432 &exp->elts[pc + 2].string,
9435 /* In this case, we assume that the field COULD exist
9436 in some extension of the type. Return an object of
9437 "type" void, which will match any formal
9438 (see ada_type_match). */
9439 return value_zero (builtin_type_void, lval_memory);
9443 ada_lookup_struct_elt_type (type1, &exp->elts[pc + 2].string, 1,
9446 return value_zero (ada_aligned_type (type), lval_memory);
9450 ada_to_fixed_value (unwrap_value
9451 (ada_value_struct_elt
9452 (arg1, &exp->elts[pc + 2].string, "record")));
9454 /* The value is not supposed to be used. This is here to make it
9455 easier to accommodate expressions that contain types. */
9457 if (noside == EVAL_SKIP)
9459 else if (noside == EVAL_AVOID_SIDE_EFFECTS)
9460 return allocate_value (builtin_type_void);
9462 error ("Attempt to use a type name as an expression");
9466 return value_from_longest (builtin_type_long, (LONGEST) 1);
9472 /* If TYPE encodes an Ada fixed-point type, return the suffix of the
9473 type name that encodes the 'small and 'delta information.
9474 Otherwise, return NULL. */
9477 fixed_type_info (struct type *type)
9479 const char *name = ada_type_name (type);
9480 enum type_code code = (type == NULL) ? TYPE_CODE_UNDEF : TYPE_CODE (type);
9482 if ((code == TYPE_CODE_INT || code == TYPE_CODE_RANGE) && name != NULL)
9484 const char *tail = strstr (name, "___XF_");
9490 else if (code == TYPE_CODE_RANGE && TYPE_TARGET_TYPE (type) != type)
9491 return fixed_type_info (TYPE_TARGET_TYPE (type));
9496 /* Returns non-zero iff TYPE represents an Ada fixed-point type. */
9499 ada_is_fixed_point_type (struct type *type)
9501 return fixed_type_info (type) != NULL;
9504 /* Return non-zero iff TYPE represents a System.Address type. */
9507 ada_is_system_address_type (struct type *type)
9509 return (TYPE_NAME (type)
9510 && strcmp (TYPE_NAME (type), "system__address") == 0);
9513 /* Assuming that TYPE is the representation of an Ada fixed-point
9514 type, return its delta, or -1 if the type is malformed and the
9515 delta cannot be determined. */
9518 ada_delta (struct type *type)
9520 const char *encoding = fixed_type_info (type);
9523 if (sscanf (encoding, "_%ld_%ld", &num, &den) < 2)
9526 return (DOUBLEST) num / (DOUBLEST) den;
9529 /* Assuming that ada_is_fixed_point_type (TYPE), return the scaling
9530 factor ('SMALL value) associated with the type. */
9533 scaling_factor (struct type *type)
9535 const char *encoding = fixed_type_info (type);
9536 unsigned long num0, den0, num1, den1;
9539 n = sscanf (encoding, "_%lu_%lu_%lu_%lu", &num0, &den0, &num1, &den1);
9544 return (DOUBLEST) num1 / (DOUBLEST) den1;
9546 return (DOUBLEST) num0 / (DOUBLEST) den0;
9550 /* Assuming that X is the representation of a value of fixed-point
9551 type TYPE, return its floating-point equivalent. */
9554 ada_fixed_to_float (struct type *type, LONGEST x)
9556 return (DOUBLEST) x *scaling_factor (type);
9559 /* The representation of a fixed-point value of type TYPE
9560 corresponding to the value X. */
9563 ada_float_to_fixed (struct type *type, DOUBLEST x)
9565 return (LONGEST) (x / scaling_factor (type) + 0.5);
9569 /* VAX floating formats */
9571 /* Non-zero iff TYPE represents one of the special VAX floating-point
9575 ada_is_vax_floating_type (struct type *type)
9578 (ada_type_name (type) == NULL) ? 0 : strlen (ada_type_name (type));
9581 && (TYPE_CODE (type) == TYPE_CODE_INT
9582 || TYPE_CODE (type) == TYPE_CODE_RANGE)
9583 && strncmp (ada_type_name (type) + name_len - 6, "___XF", 5) == 0;
9586 /* The type of special VAX floating-point type this is, assuming
9587 ada_is_vax_floating_point. */
9590 ada_vax_float_type_suffix (struct type *type)
9592 return ada_type_name (type)[strlen (ada_type_name (type)) - 1];
9595 /* A value representing the special debugging function that outputs
9596 VAX floating-point values of the type represented by TYPE. Assumes
9597 ada_is_vax_floating_type (TYPE). */
9600 ada_vax_float_print_function (struct type *type)
9602 switch (ada_vax_float_type_suffix (type))
9605 return get_var_value ("DEBUG_STRING_F", 0);
9607 return get_var_value ("DEBUG_STRING_D", 0);
9609 return get_var_value ("DEBUG_STRING_G", 0);
9611 error ("invalid VAX floating-point type");
9618 /* Scan STR beginning at position K for a discriminant name, and
9619 return the value of that discriminant field of DVAL in *PX. If
9620 PNEW_K is not null, put the position of the character beyond the
9621 name scanned in *PNEW_K. Return 1 if successful; return 0 and do
9622 not alter *PX and *PNEW_K if unsuccessful. */
9625 scan_discrim_bound (char *str, int k, struct value *dval, LONGEST * px,
9628 static char *bound_buffer = NULL;
9629 static size_t bound_buffer_len = 0;
9632 struct value *bound_val;
9634 if (dval == NULL || str == NULL || str[k] == '\0')
9637 pend = strstr (str + k, "__");
9641 k += strlen (bound);
9645 GROW_VECT (bound_buffer, bound_buffer_len, pend - (str + k) + 1);
9646 bound = bound_buffer;
9647 strncpy (bound_buffer, str + k, pend - (str + k));
9648 bound[pend - (str + k)] = '\0';
9652 bound_val = ada_search_struct_field (bound, dval, 0, VALUE_TYPE (dval));
9653 if (bound_val == NULL)
9656 *px = value_as_long (bound_val);
9662 /* Value of variable named NAME in the current environment. If
9663 no such variable found, then if ERR_MSG is null, returns 0, and
9664 otherwise causes an error with message ERR_MSG. */
9666 static struct value *
9667 get_var_value (char *name, char *err_msg)
9669 struct ada_symbol_info *syms;
9672 nsyms = ada_lookup_symbol_list (name, get_selected_block (0), VAR_DOMAIN,
9677 if (err_msg == NULL)
9680 error ("%s", err_msg);
9683 return value_of_variable (syms[0].sym, syms[0].block);
9686 /* Value of integer variable named NAME in the current environment. If
9687 no such variable found, returns 0, and sets *FLAG to 0. If
9688 successful, sets *FLAG to 1. */
9691 get_int_var_value (char *name, int *flag)
9693 struct value *var_val = get_var_value (name, 0);
9705 return value_as_long (var_val);
9710 /* Return a range type whose base type is that of the range type named
9711 NAME in the current environment, and whose bounds are calculated
9712 from NAME according to the GNAT range encoding conventions.
9713 Extract discriminant values, if needed, from DVAL. If a new type
9714 must be created, allocate in OBJFILE's space. The bounds
9715 information, in general, is encoded in NAME, the base type given in
9716 the named range type. */
9718 static struct type *
9719 to_fixed_range_type (char *name, struct value *dval, struct objfile *objfile)
9721 struct type *raw_type = ada_find_any_type (name);
9722 struct type *base_type;
9725 if (raw_type == NULL)
9726 base_type = builtin_type_int;
9727 else if (TYPE_CODE (raw_type) == TYPE_CODE_RANGE)
9728 base_type = TYPE_TARGET_TYPE (raw_type);
9730 base_type = raw_type;
9732 subtype_info = strstr (name, "___XD");
9733 if (subtype_info == NULL)
9737 static char *name_buf = NULL;
9738 static size_t name_len = 0;
9739 int prefix_len = subtype_info - name;
9745 GROW_VECT (name_buf, name_len, prefix_len + 5);
9746 strncpy (name_buf, name, prefix_len);
9747 name_buf[prefix_len] = '\0';
9750 bounds_str = strchr (subtype_info, '_');
9753 if (*subtype_info == 'L')
9755 if (!ada_scan_number (bounds_str, n, &L, &n)
9756 && !scan_discrim_bound (bounds_str, n, dval, &L, &n))
9758 if (bounds_str[n] == '_')
9760 else if (bounds_str[n] == '.') /* FIXME? SGI Workshop kludge. */
9767 strcpy (name_buf + prefix_len, "___L");
9768 L = get_int_var_value (name_buf, &ok);
9771 lim_warning ("Unknown lower bound, using 1.", 1);
9776 if (*subtype_info == 'U')
9778 if (!ada_scan_number (bounds_str, n, &U, &n)
9779 && !scan_discrim_bound (bounds_str, n, dval, &U, &n))
9785 strcpy (name_buf + prefix_len, "___U");
9786 U = get_int_var_value (name_buf, &ok);
9789 lim_warning ("Unknown upper bound, using %ld.", (long) L);
9794 if (objfile == NULL)
9795 objfile = TYPE_OBJFILE (base_type);
9796 type = create_range_type (alloc_type (objfile), base_type, L, U);
9797 TYPE_NAME (type) = name;
9802 /* True iff NAME is the name of a range type. */
9805 ada_is_range_type_name (const char *name)
9807 return (name != NULL && strstr (name, "___XD"));
9813 /* True iff TYPE is an Ada modular type. */
9816 ada_is_modular_type (struct type *type)
9818 struct type *subranged_type = base_type (type);
9820 return (subranged_type != NULL && TYPE_CODE (type) == TYPE_CODE_RANGE
9821 && TYPE_CODE (subranged_type) != TYPE_CODE_ENUM
9822 && TYPE_UNSIGNED (subranged_type));
9825 /* Assuming ada_is_modular_type (TYPE), the modulus of TYPE. */
9828 ada_modulus (struct type * type)
9830 return TYPE_HIGH_BOUND (type) + 1;
9834 /* Information about operators given special treatment in functions
9836 /* Format: OP_DEFN (<operator>, <operator length>, <# args>, <binop>). */
9838 #define ADA_OPERATORS \
9839 OP_DEFN (OP_VAR_VALUE, 4, 0, 0) \
9840 OP_DEFN (BINOP_IN_BOUNDS, 3, 2, 0) \
9841 OP_DEFN (TERNOP_IN_RANGE, 1, 3, 0) \
9842 OP_DEFN (OP_ATR_FIRST, 1, 2, 0) \
9843 OP_DEFN (OP_ATR_LAST, 1, 2, 0) \
9844 OP_DEFN (OP_ATR_LENGTH, 1, 2, 0) \
9845 OP_DEFN (OP_ATR_IMAGE, 1, 2, 0) \
9846 OP_DEFN (OP_ATR_MAX, 1, 3, 0) \
9847 OP_DEFN (OP_ATR_MIN, 1, 3, 0) \
9848 OP_DEFN (OP_ATR_MODULUS, 1, 1, 0) \
9849 OP_DEFN (OP_ATR_POS, 1, 2, 0) \
9850 OP_DEFN (OP_ATR_SIZE, 1, 1, 0) \
9851 OP_DEFN (OP_ATR_TAG, 1, 1, 0) \
9852 OP_DEFN (OP_ATR_VAL, 1, 2, 0) \
9853 OP_DEFN (UNOP_QUAL, 3, 1, 0) \
9854 OP_DEFN (UNOP_IN_RANGE, 3, 1, 0)
9857 ada_operator_length (struct expression *exp, int pc, int *oplenp, int *argsp)
9859 switch (exp->elts[pc - 1].opcode)
9862 operator_length_standard (exp, pc, oplenp, argsp);
9865 #define OP_DEFN(op, len, args, binop) \
9866 case op: *oplenp = len; *argsp = args; break;
9873 ada_op_name (enum exp_opcode opcode)
9878 return op_name_standard (opcode);
9879 #define OP_DEFN(op, len, args, binop) case op: return #op;
9885 /* As for operator_length, but assumes PC is pointing at the first
9886 element of the operator, and gives meaningful results only for the
9887 Ada-specific operators. */
9890 ada_forward_operator_length (struct expression *exp, int pc,
9891 int *oplenp, int *argsp)
9893 switch (exp->elts[pc].opcode)
9896 *oplenp = *argsp = 0;
9898 #define OP_DEFN(op, len, args, binop) \
9899 case op: *oplenp = len; *argsp = args; break;
9906 ada_dump_subexp_body (struct expression *exp, struct ui_file *stream, int elt)
9908 enum exp_opcode op = exp->elts[elt].opcode;
9913 ada_forward_operator_length (exp, elt, &oplen, &nargs);
9917 /* Ada attributes ('Foo). */
9924 case OP_ATR_MODULUS:
9933 fprintf_filtered (stream, "Type @");
9934 gdb_print_host_address (exp->elts[pc + 1].type, stream);
9935 fprintf_filtered (stream, " (");
9936 type_print (exp->elts[pc + 1].type, NULL, stream, 0);
9937 fprintf_filtered (stream, ")");
9939 case BINOP_IN_BOUNDS:
9940 fprintf_filtered (stream, " (%d)", (int) exp->elts[pc + 2].longconst);
9942 case TERNOP_IN_RANGE:
9946 return dump_subexp_body_standard (exp, stream, elt);
9950 for (i = 0; i < nargs; i += 1)
9951 elt = dump_subexp (exp, stream, elt);
9956 /* The Ada extension of print_subexp (q.v.). */
9959 ada_print_subexp (struct expression *exp, int *pos,
9960 struct ui_file *stream, enum precedence prec)
9964 enum exp_opcode op = exp->elts[pc].opcode;
9966 ada_forward_operator_length (exp, pc, &oplen, &nargs);
9971 print_subexp_standard (exp, pos, stream, prec);
9976 fputs_filtered (SYMBOL_NATURAL_NAME (exp->elts[pc + 2].symbol), stream);
9979 case BINOP_IN_BOUNDS:
9981 print_subexp (exp, pos, stream, PREC_SUFFIX);
9982 fputs_filtered (" in ", stream);
9983 print_subexp (exp, pos, stream, PREC_SUFFIX);
9984 fputs_filtered ("'range", stream);
9985 if (exp->elts[pc + 1].longconst > 1)
9986 fprintf_filtered (stream, "(%ld)",
9987 (long) exp->elts[pc + 1].longconst);
9990 case TERNOP_IN_RANGE:
9992 if (prec >= PREC_EQUAL)
9993 fputs_filtered ("(", stream);
9994 print_subexp (exp, pos, stream, PREC_SUFFIX);
9995 fputs_filtered (" in ", stream);
9996 print_subexp (exp, pos, stream, PREC_EQUAL);
9997 fputs_filtered (" .. ", stream);
9998 print_subexp (exp, pos, stream, PREC_EQUAL);
9999 if (prec >= PREC_EQUAL)
10000 fputs_filtered (")", stream);
10005 case OP_ATR_LENGTH:
10009 case OP_ATR_MODULUS:
10015 if (exp->elts[*pos].opcode == OP_TYPE)
10017 if (TYPE_CODE (exp->elts[*pos + 1].type) != TYPE_CODE_VOID)
10018 LA_PRINT_TYPE (exp->elts[*pos + 1].type, "", stream, 0, 0);
10022 print_subexp (exp, pos, stream, PREC_SUFFIX);
10023 fprintf_filtered (stream, "'%s", ada_attribute_name (op));
10027 for (tem = 1; tem < nargs; tem += 1)
10029 fputs_filtered ((tem == 1) ? " (" : ", ", stream);
10030 print_subexp (exp, pos, stream, PREC_ABOVE_COMMA);
10032 fputs_filtered (")", stream);
10038 type_print (exp->elts[pc + 1].type, "", stream, 0);
10039 fputs_filtered ("'(", stream);
10040 print_subexp (exp, pos, stream, PREC_PREFIX);
10041 fputs_filtered (")", stream);
10044 case UNOP_IN_RANGE:
10046 print_subexp (exp, pos, stream, PREC_SUFFIX);
10047 fputs_filtered (" in ", stream);
10048 LA_PRINT_TYPE (exp->elts[pc + 1].type, "", stream, 1, 0);
10053 /* Table mapping opcodes into strings for printing operators
10054 and precedences of the operators. */
10056 static const struct op_print ada_op_print_tab[] = {
10057 {":=", BINOP_ASSIGN, PREC_ASSIGN, 1},
10058 {"or else", BINOP_LOGICAL_OR, PREC_LOGICAL_OR, 0},
10059 {"and then", BINOP_LOGICAL_AND, PREC_LOGICAL_AND, 0},
10060 {"or", BINOP_BITWISE_IOR, PREC_BITWISE_IOR, 0},
10061 {"xor", BINOP_BITWISE_XOR, PREC_BITWISE_XOR, 0},
10062 {"and", BINOP_BITWISE_AND, PREC_BITWISE_AND, 0},
10063 {"=", BINOP_EQUAL, PREC_EQUAL, 0},
10064 {"/=", BINOP_NOTEQUAL, PREC_EQUAL, 0},
10065 {"<=", BINOP_LEQ, PREC_ORDER, 0},
10066 {">=", BINOP_GEQ, PREC_ORDER, 0},
10067 {">", BINOP_GTR, PREC_ORDER, 0},
10068 {"<", BINOP_LESS, PREC_ORDER, 0},
10069 {">>", BINOP_RSH, PREC_SHIFT, 0},
10070 {"<<", BINOP_LSH, PREC_SHIFT, 0},
10071 {"+", BINOP_ADD, PREC_ADD, 0},
10072 {"-", BINOP_SUB, PREC_ADD, 0},
10073 {"&", BINOP_CONCAT, PREC_ADD, 0},
10074 {"*", BINOP_MUL, PREC_MUL, 0},
10075 {"/", BINOP_DIV, PREC_MUL, 0},
10076 {"rem", BINOP_REM, PREC_MUL, 0},
10077 {"mod", BINOP_MOD, PREC_MUL, 0},
10078 {"**", BINOP_EXP, PREC_REPEAT, 0},
10079 {"@", BINOP_REPEAT, PREC_REPEAT, 0},
10080 {"-", UNOP_NEG, PREC_PREFIX, 0},
10081 {"+", UNOP_PLUS, PREC_PREFIX, 0},
10082 {"not ", UNOP_LOGICAL_NOT, PREC_PREFIX, 0},
10083 {"not ", UNOP_COMPLEMENT, PREC_PREFIX, 0},
10084 {"abs ", UNOP_ABS, PREC_PREFIX, 0},
10085 {".all", UNOP_IND, PREC_SUFFIX, 1},
10086 {"'access", UNOP_ADDR, PREC_SUFFIX, 1},
10087 {"'size", OP_ATR_SIZE, PREC_SUFFIX, 1},
10091 /* Assorted Types and Interfaces */
10093 struct type *builtin_type_ada_int;
10094 struct type *builtin_type_ada_short;
10095 struct type *builtin_type_ada_long;
10096 struct type *builtin_type_ada_long_long;
10097 struct type *builtin_type_ada_char;
10098 struct type *builtin_type_ada_float;
10099 struct type *builtin_type_ada_double;
10100 struct type *builtin_type_ada_long_double;
10101 struct type *builtin_type_ada_natural;
10102 struct type *builtin_type_ada_positive;
10103 struct type *builtin_type_ada_system_address;
10105 struct type **const (ada_builtin_types[]) =
10107 &builtin_type_ada_int,
10108 &builtin_type_ada_long,
10109 &builtin_type_ada_short,
10110 &builtin_type_ada_char,
10111 &builtin_type_ada_float,
10112 &builtin_type_ada_double,
10113 &builtin_type_ada_long_long,
10114 &builtin_type_ada_long_double,
10115 &builtin_type_ada_natural, &builtin_type_ada_positive,
10116 /* The following types are carried over from C for convenience. */
10118 &builtin_type_long,
10119 &builtin_type_short,
10120 &builtin_type_char,
10121 &builtin_type_float,
10122 &builtin_type_double,
10123 &builtin_type_long_long,
10124 &builtin_type_void,
10125 &builtin_type_signed_char,
10126 &builtin_type_unsigned_char,
10127 &builtin_type_unsigned_short,
10128 &builtin_type_unsigned_int,
10129 &builtin_type_unsigned_long,
10130 &builtin_type_unsigned_long_long,
10131 &builtin_type_long_double,
10132 &builtin_type_complex, &builtin_type_double_complex, 0};
10134 /* Not really used, but needed in the ada_language_defn. */
10137 emit_char (int c, struct ui_file *stream, int quoter)
10139 ada_emit_char (c, stream, quoter, 1);
10145 warnings_issued = 0;
10146 return ada_parse ();
10149 static const struct exp_descriptor ada_exp_descriptor = {
10151 ada_operator_length,
10153 ada_dump_subexp_body,
10154 ada_evaluate_subexp
10157 const struct language_defn ada_language_defn = {
10158 "ada", /* Language name */
10163 case_sensitive_on, /* Yes, Ada is case-insensitive, but
10164 that's not quite what this means. */
10167 ada_lookup_minimal_symbol,
10168 #endif /* GNAT_GDB */
10170 &ada_exp_descriptor,
10174 ada_printchar, /* Print a character constant */
10175 ada_printstr, /* Function to print string constant */
10176 emit_char, /* Function to print single char (not used) */
10177 ada_create_fundamental_type, /* Create fundamental type in this language */
10178 ada_print_type, /* Print a type using appropriate syntax */
10179 ada_val_print, /* Print a value using appropriate syntax */
10180 ada_value_print, /* Print a top-level value */
10181 NULL, /* Language specific skip_trampoline */
10182 NULL, /* value_of_this */
10183 ada_lookup_symbol_nonlocal, /* Looking up non-local symbols. */
10184 basic_lookup_transparent_type, /* lookup_transparent_type */
10185 ada_la_decode, /* Language specific symbol demangler */
10186 NULL, /* Language specific class_name_from_physname */
10187 ada_op_print_tab, /* expression operators for printing */
10188 0, /* c-style arrays */
10189 1, /* String lower bound */
10190 &builtin_type_ada_char,
10191 ada_get_gdb_completer_word_break_characters,
10193 ada_translate_error_message, /* Substitute Ada-specific terminology
10194 in errors and warnings. */
10195 #endif /* GNAT_GDB */
10200 build_ada_types (struct gdbarch *current_gdbarch)
10202 builtin_type_ada_int =
10203 init_type (TYPE_CODE_INT, TARGET_INT_BIT / TARGET_CHAR_BIT,
10204 0, "integer", (struct objfile *) NULL);
10205 builtin_type_ada_long =
10206 init_type (TYPE_CODE_INT, TARGET_LONG_BIT / TARGET_CHAR_BIT,
10207 0, "long_integer", (struct objfile *) NULL);
10208 builtin_type_ada_short =
10209 init_type (TYPE_CODE_INT, TARGET_SHORT_BIT / TARGET_CHAR_BIT,
10210 0, "short_integer", (struct objfile *) NULL);
10211 builtin_type_ada_char =
10212 init_type (TYPE_CODE_INT, TARGET_CHAR_BIT / TARGET_CHAR_BIT,
10213 0, "character", (struct objfile *) NULL);
10214 builtin_type_ada_float =
10215 init_type (TYPE_CODE_FLT, TARGET_FLOAT_BIT / TARGET_CHAR_BIT,
10216 0, "float", (struct objfile *) NULL);
10217 builtin_type_ada_double =
10218 init_type (TYPE_CODE_FLT, TARGET_DOUBLE_BIT / TARGET_CHAR_BIT,
10219 0, "long_float", (struct objfile *) NULL);
10220 builtin_type_ada_long_long =
10221 init_type (TYPE_CODE_INT, TARGET_LONG_LONG_BIT / TARGET_CHAR_BIT,
10222 0, "long_long_integer", (struct objfile *) NULL);
10223 builtin_type_ada_long_double =
10224 init_type (TYPE_CODE_FLT, TARGET_LONG_DOUBLE_BIT / TARGET_CHAR_BIT,
10225 0, "long_long_float", (struct objfile *) NULL);
10226 builtin_type_ada_natural =
10227 init_type (TYPE_CODE_INT, TARGET_INT_BIT / TARGET_CHAR_BIT,
10228 0, "natural", (struct objfile *) NULL);
10229 builtin_type_ada_positive =
10230 init_type (TYPE_CODE_INT, TARGET_INT_BIT / TARGET_CHAR_BIT,
10231 0, "positive", (struct objfile *) NULL);
10234 builtin_type_ada_system_address =
10235 lookup_pointer_type (init_type (TYPE_CODE_VOID, 1, 0, "void",
10236 (struct objfile *) NULL));
10237 TYPE_NAME (builtin_type_ada_system_address) = "system__address";
10241 _initialize_ada_language (void)
10244 build_ada_types (current_gdbarch);
10245 gdbarch_data_register_post_init (build_ada_types);
10246 add_language (&ada_language_defn);
10248 varsize_limit = 65536;
10250 add_setshow_uinteger_cmd ("varsize-limit", class_support,
10252 Set the maximum number of bytes allowed in a dynamic-sized object.", "\
10253 Show the maximum number of bytes allowed in a dynamic-sized object.",
10254 NULL, NULL, &setlist, &showlist);
10255 obstack_init (&cache_space);
10256 #endif /* GNAT_GDB */
10258 obstack_init (&symbol_list_obstack);
10260 decoded_names_store = htab_create_alloc
10261 (256, htab_hash_string, (int (*)(const void *, const void *)) streq,
10262 NULL, xcalloc, xfree);
10265 /* Create a fundamental Ada type using default reasonable for the current
10268 Some object/debugging file formats (DWARF version 1, COFF, etc) do not
10269 define fundamental types such as "int" or "double". Others (stabs or
10270 DWARF version 2, etc) do define fundamental types. For the formats which
10271 don't provide fundamental types, gdb can create such types using this
10274 FIXME: Some compilers distinguish explicitly signed integral types
10275 (signed short, signed int, signed long) from "regular" integral types
10276 (short, int, long) in the debugging information. There is some dis-
10277 agreement as to how useful this feature is. In particular, gcc does
10278 not support this. Also, only some debugging formats allow the
10279 distinction to be passed on to a debugger. For now, we always just
10280 use "short", "int", or "long" as the type name, for both the implicit
10281 and explicitly signed types. This also makes life easier for the
10282 gdb test suite since we don't have to account for the differences
10283 in output depending upon what the compiler and debugging format
10284 support. We will probably have to re-examine the issue when gdb
10285 starts taking it's fundamental type information directly from the
10288 static struct type *
10289 ada_create_fundamental_type (struct objfile *objfile, int typeid)
10291 struct type *type = NULL;
10296 /* FIXME: For now, if we are asked to produce a type not in this
10297 language, create the equivalent of a C integer type with the
10298 name "<?type?>". When all the dust settles from the type
10299 reconstruction work, this should probably become an error. */
10300 type = init_type (TYPE_CODE_INT,
10301 TARGET_INT_BIT / TARGET_CHAR_BIT,
10302 0, "<?type?>", objfile);
10303 warning ("internal error: no Ada fundamental type %d", typeid);
10306 type = init_type (TYPE_CODE_VOID,
10307 TARGET_CHAR_BIT / TARGET_CHAR_BIT,
10308 0, "void", objfile);
10311 type = init_type (TYPE_CODE_INT,
10312 TARGET_CHAR_BIT / TARGET_CHAR_BIT,
10313 0, "character", objfile);
10315 case FT_SIGNED_CHAR:
10316 type = init_type (TYPE_CODE_INT,
10317 TARGET_CHAR_BIT / TARGET_CHAR_BIT,
10318 0, "signed char", objfile);
10320 case FT_UNSIGNED_CHAR:
10321 type = init_type (TYPE_CODE_INT,
10322 TARGET_CHAR_BIT / TARGET_CHAR_BIT,
10323 TYPE_FLAG_UNSIGNED, "unsigned char", objfile);
10326 type = init_type (TYPE_CODE_INT,
10327 TARGET_SHORT_BIT / TARGET_CHAR_BIT,
10328 0, "short_integer", objfile);
10330 case FT_SIGNED_SHORT:
10331 type = init_type (TYPE_CODE_INT,
10332 TARGET_SHORT_BIT / TARGET_CHAR_BIT,
10333 0, "short_integer", objfile);
10335 case FT_UNSIGNED_SHORT:
10336 type = init_type (TYPE_CODE_INT,
10337 TARGET_SHORT_BIT / TARGET_CHAR_BIT,
10338 TYPE_FLAG_UNSIGNED, "unsigned short", objfile);
10341 type = init_type (TYPE_CODE_INT,
10342 TARGET_INT_BIT / TARGET_CHAR_BIT,
10343 0, "integer", objfile);
10345 case FT_SIGNED_INTEGER:
10346 type = init_type (TYPE_CODE_INT, TARGET_INT_BIT / TARGET_CHAR_BIT, 0, "integer", objfile); /* FIXME -fnf */
10348 case FT_UNSIGNED_INTEGER:
10349 type = init_type (TYPE_CODE_INT,
10350 TARGET_INT_BIT / TARGET_CHAR_BIT,
10351 TYPE_FLAG_UNSIGNED, "unsigned int", objfile);
10354 type = init_type (TYPE_CODE_INT,
10355 TARGET_LONG_BIT / TARGET_CHAR_BIT,
10356 0, "long_integer", objfile);
10358 case FT_SIGNED_LONG:
10359 type = init_type (TYPE_CODE_INT,
10360 TARGET_LONG_BIT / TARGET_CHAR_BIT,
10361 0, "long_integer", objfile);
10363 case FT_UNSIGNED_LONG:
10364 type = init_type (TYPE_CODE_INT,
10365 TARGET_LONG_BIT / TARGET_CHAR_BIT,
10366 TYPE_FLAG_UNSIGNED, "unsigned long", objfile);
10369 type = init_type (TYPE_CODE_INT,
10370 TARGET_LONG_LONG_BIT / TARGET_CHAR_BIT,
10371 0, "long_long_integer", objfile);
10373 case FT_SIGNED_LONG_LONG:
10374 type = init_type (TYPE_CODE_INT,
10375 TARGET_LONG_LONG_BIT / TARGET_CHAR_BIT,
10376 0, "long_long_integer", objfile);
10378 case FT_UNSIGNED_LONG_LONG:
10379 type = init_type (TYPE_CODE_INT,
10380 TARGET_LONG_LONG_BIT / TARGET_CHAR_BIT,
10381 TYPE_FLAG_UNSIGNED, "unsigned long long", objfile);
10384 type = init_type (TYPE_CODE_FLT,
10385 TARGET_FLOAT_BIT / TARGET_CHAR_BIT,
10386 0, "float", objfile);
10388 case FT_DBL_PREC_FLOAT:
10389 type = init_type (TYPE_CODE_FLT,
10390 TARGET_DOUBLE_BIT / TARGET_CHAR_BIT,
10391 0, "long_float", objfile);
10393 case FT_EXT_PREC_FLOAT:
10394 type = init_type (TYPE_CODE_FLT,
10395 TARGET_LONG_DOUBLE_BIT / TARGET_CHAR_BIT,
10396 0, "long_long_float", objfile);
10403 ada_dump_symtab (struct symtab *s)
10406 fprintf (stderr, "New symtab: [\n");
10407 fprintf (stderr, " Name: %s/%s;\n",
10408 s->dirname ? s->dirname : "?", s->filename ? s->filename : "?");
10409 fprintf (stderr, " Format: %s;\n", s->debugformat);
10410 if (s->linetable != NULL)
10412 fprintf (stderr, " Line table (section %d):\n", s->block_line_section);
10413 for (i = 0; i < s->linetable->nitems; i += 1)
10415 struct linetable_entry *e = s->linetable->item + i;
10416 fprintf (stderr, " %4ld: %8lx\n", (long) e->line, (long) e->pc);
10419 fprintf (stderr, "]\n");