* ada-lang.h (ada_find_printable_frame): Remove.
[platform/upstream/binutils.git] / gdb / ada-lang.h
1 /* Ada language support definitions for GDB, the GNU debugger.
2
3    Copyright (C) 1992, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
4    2005, 2007
5    Free Software Foundation, Inc.
6
7 This file is part of GDB.
8
9 This program is free software; you can redistribute it and/or modify
10 it under the terms of the GNU General Public License as published by
11 the Free Software Foundation; either version 2 of the License, or
12 (at your option) any later version.
13
14 This program is distributed in the hope that it will be useful,
15 but WITHOUT ANY WARRANTY; without even the implied warranty of
16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
17 GNU General Public License for more details.
18
19 You should have received a copy of the GNU General Public License
20 along with this program; if not, write to the Free Software
21 Foundation, Inc., 51 Franklin Street, Fifth Floor,
22 Boston, MA 02110-1301, USA.  */
23
24 #if !defined (ADA_LANG_H)
25 #define ADA_LANG_H 1
26
27 struct partial_symbol;
28 struct frame_info;
29
30 #include "value.h"
31 #include "gdbtypes.h"
32 #include "breakpoint.h"
33
34 /* Names of specific files known to be part of the runtime
35    system and that might consider (confusing) debugging information.
36    Each name (a basic regular expression string) is followed by a
37    comma.  FIXME: Should be part of a configuration file. */
38 #if defined(__alpha__) && defined(__osf__)
39 #define ADA_KNOWN_RUNTIME_FILE_NAME_PATTERNS \
40    "^[agis]-.*\\.ad[bs]$", \
41    "/usr/shlib/libpthread\\.so",
42 #elif defined (__linux__)
43 #define ADA_KNOWN_RUNTIME_FILE_NAME_PATTERNS \
44    "^[agis]-.*\\.ad[bs]$", \
45    "/lib.*/libpthread\\.so[.0-9]*$", "/lib.*/libpthread\\.a$", \
46    "/lib.*/libc\\.so[.0-9]*$", "/lib.*/libc\\.a$",
47 #endif
48
49 #if !defined (ADA_KNOWN_RUNTIME_FILE_NAME_PATTERNS)
50 #define ADA_KNOWN_RUNTIME_FILE_NAME_PATTERNS \
51    "^[agis]-.*\\.ad[bs]$",
52 #endif
53
54 /* Names of compiler-generated auxiliary functions probably of no
55    interest to users. Each name (a basic regular expression string)
56    is followed by a comma. */
57 #define ADA_KNOWN_AUXILIARY_FUNCTION_NAME_PATTERNS \
58    "___clean[.$a-zA-Z0-9_]*$",
59
60 /* The maximum number of frame levels searched for non-local,
61  * non-global symbols.  This limit exists as a precaution to prevent
62  * infinite search loops when the stack is screwed up. */
63 #define MAX_ENCLOSING_FRAME_LEVELS 7
64
65 /* Maximum number of steps followed in looking for the ultimate
66    referent of a renaming.  This prevents certain infinite loops that
67    can otherwise result. */
68 #define MAX_RENAMING_CHAIN_LENGTH 10
69
70 struct block;
71
72 /* Corresponding encoded/decoded names and opcodes for Ada user-definable
73    operators. */
74 struct ada_opname_map
75 {
76   const char *encoded;
77   const char *decoded;
78   enum exp_opcode op;
79 };
80
81 /* Table of Ada operators in encoded and decoded forms. */
82 /* Defined in ada-lang.c */
83 extern const struct ada_opname_map ada_opname_table[];
84
85 enum ada_operator 
86   {
87     /* X IN A'RANGE(N).  N is an immediate operand, surrounded by 
88        BINOP_IN_BOUNDS before and after.  A is an array, X an index 
89        value.  Evaluates to true iff X is within range of the Nth
90        dimension (1-based) of A.  (A multi-dimensional array
91        type is represented as array of array of ...) */
92     BINOP_IN_BOUNDS = OP_EXTENDED0,
93
94     /* X IN L .. U.  True iff L <= X <= U.  */
95     TERNOP_IN_RANGE,
96
97     /* Ada attributes ('Foo). */
98     OP_ATR_FIRST,
99     OP_ATR_LAST,
100     OP_ATR_LENGTH,
101     OP_ATR_IMAGE,
102     OP_ATR_MAX,
103     OP_ATR_MIN,
104     OP_ATR_MODULUS,
105     OP_ATR_POS,
106     OP_ATR_SIZE,
107     OP_ATR_TAG,
108     OP_ATR_VAL,
109
110     /* Ada type qualification.  It is encoded as for UNOP_CAST, above, 
111        and denotes the TYPE'(EXPR) construct. */
112     UNOP_QUAL,
113
114     /* X IN TYPE.  The `TYPE' argument is immediate, with 
115        UNOP_IN_RANGE before and after it. True iff X is a member of 
116        type TYPE (typically a subrange). */
117     UNOP_IN_RANGE,
118
119     /* An aggregate.   A single immediate operand, N>0, gives
120        the number of component specifications that follow.  The
121        immediate operand is followed by a second OP_AGGREGATE.  
122        Next come N component specifications.  A component
123        specification is either an OP_OTHERS (others=>...), an
124        OP_CHOICES (for named associations), or other expression (for
125        positional aggregates only).  Aggregates currently
126        occur only as the right sides of assignments. */
127     OP_AGGREGATE,
128
129     /* An others clause.  Followed by a single expression. */
130     OP_OTHERS,
131
132     /* An aggregate component association.  A single immediate operand, N, 
133        gives the number of choices that follow.  This is followed by a second
134        OP_CHOICES operator.  Next come N operands, each of which is an
135        expression, an OP_DISCRETE_RANGE, or an OP_NAME---the latter 
136        for a simple name that must be a record component name and does 
137        not correspond to a single existing symbol.  After the N choice 
138        indicators comes an expression giving the value.
139
140        In an aggregate such as (X => E1, ...), where X is a simple
141        name, X could syntactically be either a component_selector_name 
142        or an expression used as a discrete_choice, depending on the
143        aggregate's type context.  Since this is not known at parsing
144        time, we don't attempt to disambiguate X if it has multiple
145        definitions, but instead supply an OP_NAME.  If X has a single
146        definition, we represent it with an OP_VAR_VALUE, even though
147        it may turn out to be within a record aggregate.  Aggregate 
148        evaluation can use either OP_NAMEs or OP_VAR_VALUEs to get a
149        record field name, and can evaluate OP_VAR_VALUE normally to
150        get its value as an expression.  Unfortunately, we lose out in
151        cases where X has multiple meanings and is part of an array
152        aggregate.  I hope these are not common enough to annoy users,
153        who can work around the problem in any case by putting
154        parentheses around X. */
155     OP_CHOICES,
156
157     /* A positional aggregate component association.  The operator is 
158        followed by a single integer indicating the position in the 
159        aggregate (0-based), followed by a second OP_POSITIONAL.  Next 
160        follows a single expression giving the component value.  */
161     OP_POSITIONAL,
162
163     /* A range of values.  Followed by two expressions giving the
164        upper and lower bounds of the range. */
165     OP_DISCRETE_RANGE,       
166
167     /* End marker */
168     OP_ADA_LAST
169   };
170
171 /* A triple, (symbol, block, symtab), representing one instance of a 
172  * symbol-lookup operation. */
173 struct ada_symbol_info {
174   struct symbol* sym;
175   struct block* block;
176   struct symtab* symtab;
177 };
178
179 /* Ada task structures.  */
180
181 /* Ada task control block, as defined in the GNAT runt-time library.  */
182
183 struct task_control_block
184 {
185   char state;
186   CORE_ADDR parent;
187   int priority;
188   char image [32];
189   int image_len;    /* This field is not always present in the ATCB.  */
190   CORE_ADDR call;
191   CORE_ADDR thread;
192   CORE_ADDR lwp;    /* This field is not always present in the ATCB.  */
193
194   /* If the task is waiting on a task entry, this field contains the
195    task_id of the other task.  */
196   CORE_ADDR called_task;
197 };
198
199 struct task_ptid
200 {
201   int pid;                      /* The Process id */
202   long lwp;                     /* The Light Weight Process id */
203   long tid;                     /* The Thread id */
204 };
205 typedef struct task_ptid task_ptid_t;
206
207 struct task_entry
208 {
209   CORE_ADDR task_id;
210   struct task_control_block atcb;
211   int task_num;
212   int known_tasks_index;
213   struct task_entry *next_task;
214   task_ptid_t task_ptid;
215   int stack_per;
216 };
217
218 /* task entry list.  */
219 extern struct task_entry *task_list;
220
221
222 /* Assuming V points to an array of S objects,  make sure that it contains at
223    least M objects, updating V and S as necessary. */
224
225 #define GROW_VECT(v, s, m)                                              \
226    if ((s) < (m)) (v) = grow_vect (v, &(s), m, sizeof *(v));
227
228 extern void *grow_vect (void *, size_t *, size_t, int);
229
230 extern int ada_get_field_index (const struct type *type,
231                                 const char *field_name,
232                                 int maybe_missing);
233
234 extern int ada_parse (void);    /* Defined in ada-exp.y */
235
236 extern void ada_error (char *); /* Defined in ada-exp.y */
237
238                         /* Defined in ada-typeprint.c */
239 extern void ada_print_type (struct type *, char *, struct ui_file *, int,
240                             int);
241
242 extern int ada_val_print (struct type *, const gdb_byte *, int, CORE_ADDR,
243                           struct ui_file *, int, int, int,
244                           enum val_prettyprint);
245
246 extern int ada_value_print (struct value *, struct ui_file *, int,
247                             enum val_prettyprint);
248
249                                 /* Defined in ada-lang.c */
250
251 extern struct value *value_from_contents_and_address (struct type *,
252                                                       const gdb_byte *,
253                                                       CORE_ADDR);
254
255 extern void ada_emit_char (int, struct ui_file *, int, int);
256
257 extern void ada_printchar (int, struct ui_file *);
258
259 extern void ada_printstr (struct ui_file *, const gdb_byte *,
260                           unsigned int, int, int);
261
262 extern void ada_convert_actuals (struct value *, int, struct value **,
263                                  CORE_ADDR *);
264
265 extern struct value *ada_value_subscript (struct value *, int,
266                                           struct value **);
267
268 extern struct type *ada_array_element_type (struct type *, int);
269
270 extern int ada_array_arity (struct type *);
271
272 struct type *ada_type_of_array (struct value *, int);
273
274 extern struct value *ada_coerce_to_simple_array_ptr (struct value *);
275
276 extern int ada_is_simple_array_type (struct type *);
277
278 extern int ada_is_array_descriptor_type (struct type *);
279
280 extern int ada_is_bogus_array_descriptor (struct type *);
281
282 extern struct type *ada_index_type (struct type *, int);
283
284 extern struct value *ada_array_bound (struct value *, int, int);
285
286 extern char *ada_decode_symbol (const struct general_symbol_info*);
287
288 extern const char *ada_decode (const char*);
289
290 extern enum language ada_update_initial_language (enum language, 
291                                                   struct partial_symtab*);
292
293 extern void clear_ada_sym_cache (void);
294
295 extern char **ada_make_symbol_completion_list (const char *text0,
296                                                const char *word);
297
298 extern int ada_lookup_symbol_list (const char *, const struct block *,
299                                    domain_enum, struct ada_symbol_info**);
300
301 extern char *ada_fold_name (const char *);
302
303 extern struct symbol *ada_lookup_symbol (const char *, const struct block *,
304                                          domain_enum, int *, 
305                                          struct symtab **);
306
307 extern struct minimal_symbol *ada_lookup_simple_minsym (const char *);
308
309 extern void ada_fill_in_ada_prototype (struct symbol *);
310
311 extern int user_select_syms (struct ada_symbol_info *, int, int);
312
313 extern int get_selections (int *, int, int, int, char *);
314
315 extern char *ada_start_decode_line_1 (char *);
316
317 extern struct symtabs_and_lines ada_finish_decode_line_1 (char **,
318                                                           struct symtab *,
319                                                           int, char ***);
320
321 extern struct symtabs_and_lines ada_sals_for_line (const char*, int,
322                                                    int, char***, int);
323
324 extern int ada_scan_number (const char *, int, LONGEST *, int *);
325
326 extern struct type *ada_parent_type (struct type *);
327
328 extern int ada_is_ignored_field (struct type *, int);
329
330 extern int ada_is_packed_array_type (struct type *);
331
332 extern struct value *ada_value_primitive_packed_val (struct value *,
333                                                      const gdb_byte *,
334                                                      long, int, int,
335                                                      struct type *);
336
337 extern struct type *ada_coerce_to_simple_array_type (struct type *);
338
339 extern int ada_is_character_type (struct type *);
340
341 extern int ada_is_string_type (struct type *);
342
343 extern int ada_is_tagged_type (struct type *, int);
344
345 extern int ada_is_tag_type (struct type *);
346
347 extern struct type *ada_tag_type (struct value *);
348
349 extern struct value *ada_value_tag (struct value *);
350
351 extern const char *ada_tag_name (struct value *);
352
353 extern int ada_is_parent_field (struct type *, int);
354
355 extern int ada_is_wrapper_field (struct type *, int);
356
357 extern int ada_is_variant_part (struct type *, int);
358
359 extern struct type *ada_variant_discrim_type (struct type *, struct type *);
360
361 extern int ada_is_others_clause (struct type *, int);
362
363 extern int ada_in_variant (LONGEST, struct type *, int);
364
365 extern char *ada_variant_discrim_name (struct type *);
366
367 extern struct value *ada_value_struct_elt (struct value *, char *, int);
368
369 extern int ada_is_aligner_type (struct type *);
370
371 extern struct type *ada_aligned_type (struct type *);
372
373 extern const gdb_byte *ada_aligned_value_addr (struct type *,
374                                                const gdb_byte *);
375
376 extern const char *ada_attribute_name (enum exp_opcode);
377
378 extern int ada_is_fixed_point_type (struct type *);
379
380 extern int ada_is_system_address_type (struct type *);
381
382 extern DOUBLEST ada_delta (struct type *);
383
384 extern DOUBLEST ada_fixed_to_float (struct type *, LONGEST);
385
386 extern LONGEST ada_float_to_fixed (struct type *, DOUBLEST);
387
388 extern int ada_is_vax_floating_type (struct type *);
389
390 extern int ada_vax_float_type_suffix (struct type *);
391
392 extern struct value *ada_vax_float_print_function (struct type *);
393
394 extern struct type *ada_system_address_type (void);
395
396 extern int ada_which_variant_applies (struct type *, struct type *,
397                                       const gdb_byte *);
398
399 extern struct type *ada_to_fixed_type (struct type *, const gdb_byte *,
400                                        CORE_ADDR, struct value *);
401
402 extern struct type *ada_template_to_fixed_record_type_1 (struct type *type,
403                                                          const gdb_byte *valaddr,
404                                                          CORE_ADDR address,
405                                                          struct value *dval0,
406                                                          int keep_dynamic_fields);
407
408 extern int ada_name_prefix_len (const char *);
409
410 extern char *ada_type_name (struct type *);
411
412 extern struct type *ada_find_parallel_type (struct type *,
413                                             const char *suffix);
414
415 extern LONGEST get_int_var_value (char *, int *);
416
417 extern struct symbol *ada_find_any_symbol (const char *name);
418
419 extern struct type *ada_find_any_type (const char *name);
420
421 extern struct symbol *ada_find_renaming_symbol (const char *name,
422                                                 struct block *block);
423
424 extern int ada_prefer_type (struct type *, struct type *);
425
426 extern struct type *ada_get_base_type (struct type *);
427
428 extern struct type *ada_check_typedef (struct type *);
429
430 extern char *ada_encode (const char *);
431
432 extern const char *ada_enum_name (const char *);
433
434 extern int ada_is_modular_type (struct type *);
435
436 extern ULONGEST ada_modulus (struct type *);
437
438 extern struct value *ada_value_ind (struct value *);
439
440 extern void ada_print_scalar (struct type *, LONGEST, struct ui_file *);
441
442 extern int ada_is_range_type_name (const char *);
443
444 extern const char *ada_renaming_type (struct type *);
445
446 extern int ada_is_object_renaming (struct symbol *);
447
448 extern char *ada_simple_renamed_entity (struct symbol *);
449
450 extern char *ada_breakpoint_rewrite (char *, int *);
451
452 extern char *ada_main_name (void);
453
454 /* Tasking-related: ada-tasks.c */
455
456 extern int valid_task_id (int);
457
458 extern void init_task_list (void);
459
460 extern int ada_is_exception_breakpoint (bpstat bs);
461
462 extern void ada_adjust_exception_stop (bpstat bs);
463
464 extern void ada_print_exception_stop (bpstat bs);
465
466 extern int ada_get_current_task (ptid_t);
467
468 extern int breakpoint_ada_task_match (CORE_ADDR, ptid_t);
469
470 extern int ada_print_exception_breakpoint_nontask (struct breakpoint *);
471
472 extern void ada_print_exception_breakpoint_task (struct breakpoint *);
473
474 extern void ada_reset_thread_registers (void);
475
476 extern int ada_build_task_list (void);
477
478 /* Look up a symbol by name using the search conventions of 
479    a specific language (optional block, optional symtab). 
480    FIXME: Should be symtab.h. */
481
482 extern struct symbol *lookup_symbol_in_language (const char *, 
483                                                  const struct block *,
484                                                  domain_enum, 
485                                                  enum language,
486                                                  int *,
487                                                  struct symtab **);
488
489 extern int ada_exception_catchpoint_p (struct breakpoint *b);
490   
491 extern struct symtab_and_line
492   ada_decode_exception_location (char *args, char **addr_string,
493                                  char **exp_string, char **cond_string,
494                                  struct expression **cond,
495                                  struct breakpoint_ops **ops);
496
497 extern struct symtab_and_line
498   ada_decode_assert_location (char *args, char **addr_string,
499                               struct breakpoint_ops **ops);
500
501
502 #endif