/* Ada language support definitions for GDB, the GNU debugger.
- Copyright (C) 1992, 1997-2005, 2007-2012 Free Software Foundation,
- Inc.
+ Copyright (C) 1992-2014 Free Software Foundation, Inc.
This file is part of GDB.
struct frame_info;
struct inferior;
+struct type_print_options;
#include "value.h"
#include "gdbtypes.h"
#include "breakpoint.h"
+#include "vec.h"
/* Names of specific files known to be part of the runtime
system and that might consider (confusing) debugging information.
#if !defined (ADA_KNOWN_RUNTIME_FILE_NAME_PATTERNS)
#define ADA_KNOWN_RUNTIME_FILE_NAME_PATTERNS \
+ "^unwind-seh.c$", \
"^[agis]-.*\\.ad[bs]$",
#endif
struct symbol *sym;
/* The block where the symbol was found. */
- struct block *block;
+ const struct block *block;
};
/* Denotes a type of renaming symbol (see ada_parse_renaming). */
ADA_SUBPROGRAM_RENAMING
};
+/* The different types of catchpoints that we introduced for catching
+ Ada exceptions. */
+
+enum ada_exception_catchpoint_kind
+{
+ ada_catch_exception,
+ ada_catch_exception_unhandled,
+ ada_catch_assert
+};
+
/* Ada task structures. */
struct ada_task_info
/* Defined in ada-typeprint.c */
extern void ada_print_type (struct type *, const char *, struct ui_file *, int,
- int);
+ int, const struct type_print_options *);
extern void ada_print_typedef (struct type *type, struct symbol *new_symbol,
struct ui_file *stream);
extern struct type *ada_get_decoded_type (struct type *type);
-extern char *ada_decode_symbol (const struct general_symbol_info*);
+extern const char *ada_decode_symbol (const struct general_symbol_info *);
extern const char *ada_decode (const char*);
extern void clear_ada_sym_cache (void);
extern int ada_lookup_symbol_list (const char *, const struct block *,
- domain_enum, struct ada_symbol_info**,
- int);
+ domain_enum, struct ada_symbol_info**);
extern char *ada_fold_name (const char *);
extern struct symbol *ada_lookup_symbol (const char *, const struct block *,
domain_enum, int *);
-extern struct symbol *
-ada_lookup_encoded_symbol (const char *, const struct block *,
- domain_enum namespace, struct block **);
+extern void ada_lookup_encoded_symbol
+ (const char *name, const struct block *block, domain_enum namespace,
+ struct ada_symbol_info *symbol_info);
-extern struct minimal_symbol *ada_lookup_simple_minsym (const char *);
+extern struct bound_minimal_symbol ada_lookup_simple_minsym (const char *);
extern void ada_fill_in_ada_prototype (struct symbol *);
extern const char *ada_tag_name (struct value *);
+extern struct value *ada_tag_value_at_base_address (struct value *obj);
+
extern int ada_is_parent_field (struct type *, int);
extern int ada_is_wrapper_field (struct type *, int);
extern LONGEST get_int_var_value (char *, int *);
extern struct symbol *ada_find_renaming_symbol (struct symbol *name_sym,
- struct block *block);
+ const struct block *block);
extern int ada_prefer_type (struct type *, struct type *);
extern char *ada_name_for_lookup (const char *name);
+extern void create_ada_exception_catchpoint
+ (struct gdbarch *gdbarch, enum ada_exception_catchpoint_kind ex_kind,
+ char *excep_string, char *cond_string, int tempflag, int disabled,
+ int from_tty);
+
+/* Some information about a given Ada exception. */
+
+typedef struct ada_exc_info
+{
+ /* The name of the exception. */
+ const char *name;
+
+ /* The address of the symbol corresponding to that exception. */
+ CORE_ADDR addr;
+} ada_exc_info;
+
+DEF_VEC_O(ada_exc_info);
+
+extern VEC(ada_exc_info) *ada_exceptions_list (const char *regexp);
+
/* Tasking-related: ada-tasks.c */
extern int valid_task_id (int);