]> git.ipfire.org Git - thirdparty/binutils-gdb.git/blame - gdb/ada-lang.h
* configure.in (hppa*-*-netbsd*, hppa*-*-openbsd): Set COREFILE to
[thirdparty/binutils-gdb.git] / gdb / ada-lang.h
CommitLineData
14f9c5c9 1/* Ada language support definitions for GDB, the GNU debugger.
4c4b4cd2
PH
2 Copyright 1992, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004
3 Free Software Foundation, Inc.
14f9c5c9
AS
4
5This file is part of GDB.
6
7This program is free software; you can redistribute it and/or modify
8it under the terms of the GNU General Public License as published by
9the Free Software Foundation; either version 2 of the License, or
10(at your option) any later version.
11
12This program is distributed in the hope that it will be useful,
13but WITHOUT ANY WARRANTY; without even the implied warranty of
14MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15GNU General Public License for more details.
16
17You should have received a copy of the GNU General Public License
18along with this program; if not, write to the Free Software
19Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
20
21#if !defined (ADA_LANG_H)
22#define ADA_LANG_H 1
23
da3331ec
AC
24struct partial_symbol;
25
14f9c5c9
AS
26#include "value.h"
27#include "gdbtypes.h"
4c4b4cd2
PH
28#include "breakpoint.h"
29
30/* Names of specific files known to be part of the runtime
31 system and that might consider (confusing) debugging information.
32 Each name (a basic regular expression string) is followed by a
33 comma. FIXME: Should be part of a configuration file. */
34#if defined(__alpha__) && defined(__osf__) && !defined(VXWORKS_TARGET)
35#define ADA_KNOWN_RUNTIME_FILE_NAME_PATTERNS \
36 "^[agis]-.*\\.ad[bs]$", \
37 "/usr/shlib/libpthread\\.so",
38#elif defined (__linux__)
39#define ADA_KNOWN_RUNTIME_FILE_NAME_PATTERNS \
40 "^[agis]-.*\\.ad[bs]$", \
41 "/lib.*/libpthread\\.so[.0-9]*$", "/lib.*/libpthread\\.a$", \
42 "/lib.*/libc\\.so[.0-9]*$", "/lib.*/libc\\.a$",
43#endif
14f9c5c9 44
4c4b4cd2
PH
45#if !defined (ADA_KNOWN_RUNTIME_FILE_NAME_PATTERNS)
46#define ADA_KNOWN_RUNTIME_FILE_NAME_PATTERNS \
47 "^[agis]-.*\\.ad[bs]$",
48#endif
49
50/* Names of compiler-generated auxiliary functions probably of no
51 interest to users. Each name (a basic regular expression string)
52 is followed by a comma. */
53#define ADA_KNOWN_AUXILIARY_FUNCTION_NAME_PATTERNS \
54 "___clean[.a-zA-Z0-9_]*$",
fe898f56 55
4c4b4cd2
PH
56/* The maximum number of frame levels searched for non-local,
57 * non-global symbols. This limit exists as a precaution to prevent
58 * infinite search loops when the stack is screwed up. */
59#define MAX_ENCLOSING_FRAME_LEVELS 7
14f9c5c9 60
4c4b4cd2
PH
61/* Maximum number of steps followed in looking for the ultimate
62 referent of a renaming. This prevents certain infinite loops that
63 can otherwise result. */
64#define MAX_RENAMING_CHAIN_LENGTH 10
14f9c5c9 65
4c4b4cd2
PH
66struct block;
67
68/* Corresponding encoded/decoded names and opcodes for Ada user-definable
14f9c5c9 69 operators. */
d2e4a39e
AS
70struct ada_opname_map
71{
4c4b4cd2
PH
72 const char *encoded;
73 const char *decoded;
14f9c5c9
AS
74 enum exp_opcode op;
75};
76
4c4b4cd2 77/* Table of Ada operators in encoded and decoded forms. */
14f9c5c9
AS
78/* Defined in ada-lang.c */
79extern const struct ada_opname_map ada_opname_table[];
80
4c4b4cd2
PH
81enum ada_operator
82 {
83 /* X IN A'RANGE(N). N is an immediate operand, surrounded by
84 BINOP_IN_BOUNDS before and after. A is an array, X an index
85 value. Evaluates to true iff X is within range of the Nth
86 dimension (1-based) of A. (A multi-dimensional array
87 type is represented as array of array of ...) */
88 BINOP_IN_BOUNDS = OP_EXTENDED0,
89
90 /* X IN L .. U. True iff L <= X <= U. */
91 TERNOP_IN_RANGE,
92
93 /* Ada attributes ('Foo). */
94 OP_ATR_FIRST,
95 OP_ATR_LAST,
96 OP_ATR_LENGTH,
97 OP_ATR_IMAGE,
98 OP_ATR_MAX,
99 OP_ATR_MIN,
100 OP_ATR_MODULUS,
101 OP_ATR_POS,
102 OP_ATR_SIZE,
103 OP_ATR_TAG,
104 OP_ATR_VAL,
105
106 /* Ada type qualification. It is encoded as for UNOP_CAST, above,
107 and denotes the TYPE'(EXPR) construct. */
108 UNOP_QUAL,
109
110 /* X IN TYPE. The `TYPE' argument is immediate, with
111 UNOP_IN_RANGE before and after it. True iff X is a member of
112 type TYPE (typically a subrange). */
113 UNOP_IN_RANGE,
114
115 /* End marker */
116 OP_ADA_LAST
117 };
118
119/* A triple, (symbol, block, symtab), representing one instance of a
120 * symbol-lookup operation. */
121struct ada_symbol_info {
122 struct symbol* sym;
123 struct block* block;
124 struct symtab* symtab;
14f9c5c9
AS
125};
126
d2e4a39e
AS
127extern struct type *builtin_type_ada_int;
128extern struct type *builtin_type_ada_short;
129extern struct type *builtin_type_ada_long;
130extern struct type *builtin_type_ada_long_long;
131extern struct type *builtin_type_ada_char;
132extern struct type *builtin_type_ada_float;
133extern struct type *builtin_type_ada_double;
134extern struct type *builtin_type_ada_long_double;
135extern struct type *builtin_type_ada_natural;
136extern struct type *builtin_type_ada_positive;
137extern struct type *builtin_type_ada_system_address;
14f9c5c9 138
4c4b4cd2
PH
139/* The maximum number of tasks known to the Ada runtime */
140extern const int MAX_NUMBER_OF_KNOWN_TASKS;
141
142/* Assuming V points to an array of S objects, make sure that it contains at
14f9c5c9
AS
143 least M objects, updating V and S as necessary. */
144
4c4b4cd2 145#define GROW_VECT(v, s, m) \
14f9c5c9
AS
146 if ((s) < (m)) grow_vect ((void**) &(v), &(s), (m), sizeof(*(v)));
147
d2e4a39e 148extern void grow_vect (void **, size_t *, size_t, int);
14f9c5c9 149
4c4b4cd2
PH
150extern int ada_get_field_index (const struct type *type,
151 const char *field_name,
152 int maybe_missing);
14f9c5c9 153
4c4b4cd2 154extern int ada_parse (void); /* Defined in ada-exp.y */
14f9c5c9 155
4c4b4cd2
PH
156extern void ada_error (char *); /* Defined in ada-exp.y */
157
158 /* Defined in ada-typeprint.c */
d2e4a39e 159extern void ada_print_type (struct type *, char *, struct ui_file *, int,
4c4b4cd2 160 int);
14f9c5c9 161
d2e4a39e 162extern int ada_val_print (struct type *, char *, int, CORE_ADDR,
4c4b4cd2
PH
163 struct ui_file *, int, int, int,
164 enum val_prettyprint);
14f9c5c9 165
d2e4a39e 166extern int ada_value_print (struct value *, struct ui_file *, int,
4c4b4cd2 167 enum val_prettyprint);
14f9c5c9 168
4c4b4cd2 169 /* Defined in ada-lang.c */
14f9c5c9 170
d2e4a39e 171extern struct value *value_from_contents_and_address (struct type *, char *,
4c4b4cd2 172 CORE_ADDR);
14f9c5c9
AS
173
174extern void ada_emit_char (int, struct ui_file *, int, int);
175
d2e4a39e 176extern void ada_printchar (int, struct ui_file *);
14f9c5c9 177
d2e4a39e 178extern void ada_printstr (struct ui_file *, char *, unsigned int, int, int);
14f9c5c9 179
d2e4a39e 180extern void ada_convert_actuals (struct value *, int, struct value **,
4c4b4cd2 181 CORE_ADDR *);
14f9c5c9 182
d2e4a39e 183extern struct value *ada_value_subscript (struct value *, int,
4c4b4cd2 184 struct value **);
14f9c5c9 185
d2e4a39e 186extern struct type *ada_array_element_type (struct type *, int);
14f9c5c9 187
d2e4a39e 188extern int ada_array_arity (struct type *);
14f9c5c9 189
d2e4a39e 190struct type *ada_type_of_array (struct value *, int);
14f9c5c9 191
d2e4a39e 192extern struct value *ada_coerce_to_simple_array_ptr (struct value *);
14f9c5c9 193
4c4b4cd2 194extern int ada_is_simple_array_type (struct type *);
14f9c5c9 195
4c4b4cd2 196extern int ada_is_array_descriptor_type (struct type *);
14f9c5c9 197
d2e4a39e 198extern int ada_is_bogus_array_descriptor (struct type *);
14f9c5c9 199
d2e4a39e 200extern struct type *ada_index_type (struct type *, int);
14f9c5c9 201
d2e4a39e 202extern struct value *ada_array_bound (struct value *, int, int);
14f9c5c9 203
4c4b4cd2 204extern char *ada_decode_symbol (const struct general_symbol_info*);
14f9c5c9 205
4c4b4cd2 206extern const char *ada_decode (const char*);
14f9c5c9 207
4c4b4cd2
PH
208extern enum language ada_update_initial_language (enum language,
209 struct partial_symtab*);
14f9c5c9 210
4c4b4cd2 211extern void clear_ada_sym_cache (void);
14f9c5c9 212
4c4b4cd2
PH
213extern char **ada_make_symbol_completion_list (const char *text0,
214 const char *word);
14f9c5c9 215
4c4b4cd2
PH
216extern int ada_lookup_symbol_list (const char *, const struct block *,
217 domain_enum, struct ada_symbol_info**);
218
219extern char *ada_fold_name (const char *);
220
221extern struct symbol *ada_lookup_symbol (const char *, const struct block *,
222 domain_enum, int *,
223 struct symtab **);
224
225extern struct minimal_symbol *ada_lookup_simple_minsym (const char *);
14f9c5c9 226
d2e4a39e 227extern void ada_fill_in_ada_prototype (struct symbol *);
14f9c5c9 228
4c4b4cd2 229extern int user_select_syms (struct ada_symbol_info *, int, int);
14f9c5c9 230
d2e4a39e 231extern int get_selections (int *, int, int, int, char *);
14f9c5c9 232
d2e4a39e 233extern char *ada_start_decode_line_1 (char *);
14f9c5c9 234
d2e4a39e 235extern struct symtabs_and_lines ada_finish_decode_line_1 (char **,
4c4b4cd2
PH
236 struct symtab *,
237 int, char ***);
238
239extern struct symtabs_and_lines ada_sals_for_line (const char*, int,
240 int, char***, int);
14f9c5c9 241
d2e4a39e 242extern int ada_scan_number (const char *, int, LONGEST *, int *);
14f9c5c9 243
d2e4a39e 244extern struct type *ada_parent_type (struct type *);
14f9c5c9 245
d2e4a39e 246extern int ada_is_ignored_field (struct type *, int);
14f9c5c9 247
d2e4a39e 248extern int ada_is_packed_array_type (struct type *);
14f9c5c9 249
d2e4a39e 250extern struct value *ada_value_primitive_packed_val (struct value *, char *,
4c4b4cd2
PH
251 long, int, int,
252 struct type *);
14f9c5c9 253
d2e4a39e 254extern struct type *ada_coerce_to_simple_array_type (struct type *);
14f9c5c9 255
d2e4a39e 256extern int ada_is_character_type (struct type *);
14f9c5c9 257
d2e4a39e 258extern int ada_is_string_type (struct type *);
14f9c5c9 259
4c4b4cd2
PH
260extern int ada_is_tagged_type (struct type *, int);
261
262extern int ada_is_tag_type (struct type *);
14f9c5c9 263
d2e4a39e 264extern struct type *ada_tag_type (struct value *);
14f9c5c9 265
d2e4a39e 266extern struct value *ada_value_tag (struct value *);
14f9c5c9 267
4c4b4cd2
PH
268extern const char *ada_tag_name (struct value *);
269
d2e4a39e 270extern int ada_is_parent_field (struct type *, int);
14f9c5c9 271
d2e4a39e 272extern int ada_is_wrapper_field (struct type *, int);
14f9c5c9 273
d2e4a39e 274extern int ada_is_variant_part (struct type *, int);
14f9c5c9 275
d2e4a39e 276extern struct type *ada_variant_discrim_type (struct type *, struct type *);
14f9c5c9 277
d2e4a39e 278extern int ada_is_others_clause (struct type *, int);
14f9c5c9 279
d2e4a39e 280extern int ada_in_variant (LONGEST, struct type *, int);
14f9c5c9 281
d2e4a39e 282extern char *ada_variant_discrim_name (struct type *);
14f9c5c9 283
d2e4a39e 284extern struct value *ada_value_struct_elt (struct value *, char *, char *);
14f9c5c9 285
d2e4a39e 286extern int ada_is_aligner_type (struct type *);
14f9c5c9 287
d2e4a39e 288extern struct type *ada_aligned_type (struct type *);
14f9c5c9 289
d2e4a39e 290extern char *ada_aligned_value_addr (struct type *, char *);
14f9c5c9 291
4c4b4cd2 292extern const char *ada_attribute_name (enum exp_opcode);
14f9c5c9 293
d2e4a39e 294extern int ada_is_fixed_point_type (struct type *);
14f9c5c9 295
4c4b4cd2
PH
296extern int ada_is_system_address_type (struct type *);
297
d2e4a39e 298extern DOUBLEST ada_delta (struct type *);
14f9c5c9
AS
299
300extern DOUBLEST ada_fixed_to_float (struct type *, LONGEST);
301
d2e4a39e 302extern LONGEST ada_float_to_fixed (struct type *, DOUBLEST);
14f9c5c9 303
d2e4a39e 304extern int ada_is_vax_floating_type (struct type *);
14f9c5c9 305
d2e4a39e 306extern int ada_vax_float_type_suffix (struct type *);
14f9c5c9 307
d2e4a39e 308extern struct value *ada_vax_float_print_function (struct type *);
14f9c5c9 309
d2e4a39e 310extern struct type *ada_system_address_type (void);
14f9c5c9 311
d2e4a39e 312extern int ada_which_variant_applies (struct type *, struct type *, char *);
14f9c5c9 313
d2e4a39e 314extern struct type *ada_to_fixed_type (struct type *, char *, CORE_ADDR,
4c4b4cd2
PH
315 struct value *);
316
317extern struct type *
318 ada_template_to_fixed_record_type_1 (struct type *type, char *valaddr,
319 CORE_ADDR address, struct value *dval0,
320 int keep_dynamic_fields);
14f9c5c9 321
d2e4a39e 322extern int ada_name_prefix_len (const char *);
14f9c5c9 323
d2e4a39e 324extern char *ada_type_name (struct type *);
14f9c5c9 325
d2e4a39e 326extern struct type *ada_find_parallel_type (struct type *,
4c4b4cd2
PH
327 const char *suffix);
328
329extern LONGEST get_int_var_value (char *, int *);
14f9c5c9 330
4c4b4cd2 331extern struct symbol *ada_find_any_symbol (const char *name);
14f9c5c9 332
d2e4a39e 333extern struct type *ada_find_any_type (const char *name);
14f9c5c9 334
4c4b4cd2
PH
335extern struct symbol *ada_find_renaming_symbol (const char *name,
336 struct block *block);
337
d2e4a39e 338extern int ada_prefer_type (struct type *, struct type *);
14f9c5c9 339
d2e4a39e 340extern struct type *ada_get_base_type (struct type *);
14f9c5c9 341
d2e4a39e 342extern struct type *ada_completed_type (struct type *);
14f9c5c9 343
4c4b4cd2 344extern char *ada_encode (const char *);
14f9c5c9 345
d2e4a39e 346extern const char *ada_enum_name (const char *);
14f9c5c9 347
d2e4a39e 348extern int ada_is_modular_type (struct type *);
14f9c5c9 349
d2e4a39e 350extern LONGEST ada_modulus (struct type *);
14f9c5c9 351
d2e4a39e 352extern struct value *ada_value_ind (struct value *);
14f9c5c9 353
d2e4a39e 354extern void ada_print_scalar (struct type *, LONGEST, struct ui_file *);
14f9c5c9 355
d2e4a39e 356extern int ada_is_range_type_name (const char *);
14f9c5c9 357
d2e4a39e 358extern const char *ada_renaming_type (struct type *);
14f9c5c9 359
d2e4a39e 360extern int ada_is_object_renaming (struct symbol *);
14f9c5c9 361
4c4b4cd2 362extern char *ada_simple_renamed_entity (struct symbol *);
14f9c5c9 363
d2e4a39e 364extern char *ada_breakpoint_rewrite (char *, int *);
14f9c5c9 365
4c4b4cd2
PH
366extern char *ada_main_name (void);
367
14f9c5c9
AS
368/* Tasking-related: ada-tasks.c */
369
370extern int valid_task_id (int);
371
14f9c5c9
AS
372extern void init_task_list (void);
373
4c4b4cd2
PH
374extern int ada_is_exception_breakpoint (bpstat bs);
375
376extern void ada_adjust_exception_stop (bpstat bs);
14f9c5c9 377
4c4b4cd2 378extern void ada_print_exception_stop (bpstat bs);
14f9c5c9 379
4c4b4cd2 380extern int ada_get_current_task (ptid_t);
14f9c5c9 381
4c4b4cd2
PH
382extern int breakpoint_ada_task_match (CORE_ADDR, ptid_t);
383
384extern int ada_print_exception_breakpoint_nontask (struct breakpoint *);
385
386extern void ada_print_exception_breakpoint_task (struct breakpoint *);
14f9c5c9 387
d2e4a39e 388extern int ada_maybe_exception_partial_symbol (struct partial_symbol *sym);
14f9c5c9 389
d2e4a39e 390extern int ada_is_exception_sym (struct symbol *sym);
14f9c5c9 391
4c4b4cd2
PH
392extern void ada_find_printable_frame (struct frame_info *fi);
393
394extern void ada_reset_thread_registers (void);
14f9c5c9
AS
395
396#endif