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