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