aboutsummaryrefslogtreecommitdiff
path: root/gdb
diff options
context:
space:
mode:
authorPedro Alves <palves@redhat.com>2011-06-22 17:52:37 +0000
committerPedro Alves <palves@redhat.com>2011-06-22 17:52:37 +0000
commit9ac4176b6d170664f13074e4dd69b8f110fdb931 (patch)
tree161cb9f7754f8fdd7453e49066a0959859d052bf /gdb
parentc56053d23c108509c8978f31799e9abe654d91d5 (diff)
downloadgdb-9ac4176b6d170664f13074e4dd69b8f110fdb931.zip
gdb-9ac4176b6d170664f13074e4dd69b8f110fdb931.tar.gz
gdb-9ac4176b6d170664f13074e4dd69b8f110fdb931.tar.bz2
2011-06-22 Pedro Alves <pedro@codesourcery.com>
* ada-lang.c: Include arch-utils.h. (ada_decode_exception_location): Make static. (catch_ada_exception_command): Moved here from breakpoint.c. (ada_decode_assert_location): Make static. (catch_assert_command): Moved here from breakpoint.c. (_initialize_ada_lang): Install the exception and assert catchpoint commands here. * ada-lang.h (ada_decode_exception_location) (ada_decode_assert_location): Delete declarations. * breakpoint.c (CATCH_PERMANENT, CATCH_TEMPORARY): Moved to breakpoint.h. (create_ada_exception_breakpoint): Make extern. (catch_ada_exception_command, catch_assert_command): Moved to ada-lang.c. (add_catch_command): Make extern. (_initilize_breakpoint): Don't install the exception and assert catchpoint commands here. * breakpoint.h (CATCH_PERMANENT, CATCH_TEMPORARY): Moved from breakpoint.c (add_catch_command, create_ada_exception_breakpoint): Declare.
Diffstat (limited to 'gdb')
-rw-r--r--gdb/ChangeLog23
-rw-r--r--gdb/ada-lang.c66
-rw-r--r--gdb/ada-lang.h11
-rw-r--r--gdb/breakpoint.c73
-rw-r--r--gdb/breakpoint.h30
5 files changed, 119 insertions, 84 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index f4f27ef..c522422 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,5 +1,28 @@
2011-06-22 Pedro Alves <pedro@codesourcery.com>
+ * ada-lang.c: Include arch-utils.h.
+ (ada_decode_exception_location): Make static.
+ (catch_ada_exception_command): Moved here from breakpoint.c.
+ (ada_decode_assert_location): Make static.
+ (catch_assert_command): Moved here from breakpoint.c.
+ (_initialize_ada_lang): Install the exception and assert
+ catchpoint commands here.
+ * ada-lang.h (ada_decode_exception_location)
+ (ada_decode_assert_location): Delete declarations.
+ * breakpoint.c (CATCH_PERMANENT, CATCH_TEMPORARY): Moved to
+ breakpoint.h.
+ (create_ada_exception_breakpoint): Make extern.
+ (catch_ada_exception_command, catch_assert_command): Moved to
+ ada-lang.c.
+ (add_catch_command): Make extern.
+ (_initilize_breakpoint): Don't install the exception and assert
+ catchpoint commands here.
+ * breakpoint.h (CATCH_PERMANENT, CATCH_TEMPORARY): Moved from
+ breakpoint.c
+ (add_catch_command, create_ada_exception_breakpoint): Declare.
+
+2011-06-22 Pedro Alves <pedro@codesourcery.com>
+
* breakpoint.c (init_raw_breakpoint_without_location): Don't add
the breakpoint to the breakpoint chain here.
(set_raw_breakpoint_without_location): Add the breakpoint to the
diff --git a/gdb/ada-lang.c b/gdb/ada-lang.c
index 0e3973b..05fd75d 100644
--- a/gdb/ada-lang.c
+++ b/gdb/ada-lang.c
@@ -61,6 +61,7 @@
#include "psymtab.h"
#include "value.h"
#include "mi/mi-common.h"
+#include "arch-utils.h"
/* Define whether or not the C operator '/' truncates towards zero for
differently signed operands (truncation direction is undefined in C).
@@ -11339,7 +11340,7 @@ ada_exception_sal (enum exception_catchpoint_kind ex, char *exp_string,
See ada_exception_sal for a description of all the remaining
function arguments of this function. */
-struct symtab_and_line
+static struct symtab_and_line
ada_decode_exception_location (char *args, char **addr_string,
char **exp_string, char **cond_string,
struct expression **cond,
@@ -11352,7 +11353,33 @@ ada_decode_exception_location (char *args, char **addr_string,
cond, ops);
}
-struct symtab_and_line
+/* Implement the "catch exception" command. */
+
+static void
+catch_ada_exception_command (char *arg, int from_tty,
+ struct cmd_list_element *command)
+{
+ struct gdbarch *gdbarch = get_current_arch ();
+ int tempflag;
+ struct symtab_and_line sal;
+ char *addr_string = NULL;
+ char *exp_string = NULL;
+ char *cond_string = NULL;
+ struct expression *cond = NULL;
+ struct breakpoint_ops *ops = NULL;
+
+ tempflag = get_cmd_context (command) == CATCH_TEMPORARY;
+
+ if (!arg)
+ arg = "";
+ sal = ada_decode_exception_location (arg, &addr_string, &exp_string,
+ &cond_string, &cond, &ops);
+ create_ada_exception_breakpoint (gdbarch, sal, addr_string, exp_string,
+ cond_string, cond, ops, tempflag,
+ from_tty);
+}
+
+static struct symtab_and_line
ada_decode_assert_location (char *args, char **addr_string,
struct breakpoint_ops **ops)
{
@@ -11370,6 +11397,26 @@ ada_decode_assert_location (char *args, char **addr_string,
ops);
}
+/* Implement the "catch assert" command. */
+
+static void
+catch_assert_command (char *arg, int from_tty,
+ struct cmd_list_element *command)
+{
+ struct gdbarch *gdbarch = get_current_arch ();
+ int tempflag;
+ struct symtab_and_line sal;
+ char *addr_string = NULL;
+ struct breakpoint_ops *ops = NULL;
+
+ tempflag = get_cmd_context (command) == CATCH_TEMPORARY;
+
+ if (!arg)
+ arg = "";
+ sal = ada_decode_assert_location (arg, &addr_string, &ops);
+ create_ada_exception_breakpoint (gdbarch, sal, addr_string, NULL, NULL, NULL,
+ ops, tempflag, from_tty);
+}
/* Operators */
/* Information about operators given special treatment in functions
below. */
@@ -11942,6 +11989,21 @@ this incurs a slight performance penalty, so it is recommended to NOT change\n\
this option to \"off\" unless necessary."),
NULL, NULL, &set_ada_list, &show_ada_list);
+ add_catch_command ("exception", _("\
+Catch Ada exceptions, when raised.\n\
+With an argument, catch only exceptions with the given name."),
+ catch_ada_exception_command,
+ NULL,
+ CATCH_PERMANENT,
+ CATCH_TEMPORARY);
+ add_catch_command ("assert", _("\
+Catch failed Ada assertions, when raised.\n\
+With an argument, catch only exceptions with the given name."),
+ catch_assert_command,
+ NULL,
+ CATCH_PERMANENT,
+ CATCH_TEMPORARY);
+
varsize_limit = 65536;
obstack_init (&symbol_list_obstack);
diff --git a/gdb/ada-lang.h b/gdb/ada-lang.h
index 7902124..e0366fc 100644
--- a/gdb/ada-lang.h
+++ b/gdb/ada-lang.h
@@ -387,15 +387,4 @@ extern int ada_build_task_list (int warn_if_null);
extern int ada_exception_catchpoint_p (struct breakpoint *b);
-extern struct symtab_and_line
- ada_decode_exception_location (char *args, char **addr_string,
- char **exp_string, char **cond_string,
- struct expression **cond,
- struct breakpoint_ops **ops);
-
-extern struct symtab_and_line
- ada_decode_assert_location (char *args, char **addr_string,
- struct breakpoint_ops **ops);
-
-
#endif
diff --git a/gdb/breakpoint.c b/gdb/breakpoint.c
index a3e89c2..714437e 100644
--- a/gdb/breakpoint.c
+++ b/gdb/breakpoint.c
@@ -76,10 +76,6 @@
#include "mi/mi-common.h"
#include "python/python.h"
-/* Arguments to pass as context to some catch command handlers. */
-#define CATCH_PERMANENT ((void *) (uintptr_t) 0)
-#define CATCH_TEMPORARY ((void *) (uintptr_t) 1)
-
/* Prototypes for local functions. */
static void enable_delete_command (char *, int);
@@ -10024,9 +10020,7 @@ catch_throw_command (char *arg, int from_tty, struct cmd_list_element *command)
catch_exception_command_1 (EX_EVENT_THROW, arg, tempflag, from_tty);
}
-/* Create a breakpoint struct for Ada exception catchpoints. */
-
-static void
+void
create_ada_exception_breakpoint (struct gdbarch *gdbarch,
struct symtab_and_line sal,
char *addr_string,
@@ -10077,32 +10071,6 @@ create_ada_exception_breakpoint (struct gdbarch *gdbarch,
update_global_location_list (1);
}
-/* Implement the "catch exception" command. */
-
-static void
-catch_ada_exception_command (char *arg, int from_tty,
- struct cmd_list_element *command)
-{
- struct gdbarch *gdbarch = get_current_arch ();
- int tempflag;
- struct symtab_and_line sal;
- char *addr_string = NULL;
- char *exp_string = NULL;
- char *cond_string = NULL;
- struct expression *cond = NULL;
- struct breakpoint_ops *ops = NULL;
-
- tempflag = get_cmd_context (command) == CATCH_TEMPORARY;
-
- if (!arg)
- arg = "";
- sal = ada_decode_exception_location (arg, &addr_string, &exp_string,
- &cond_string, &cond, &ops);
- create_ada_exception_breakpoint (gdbarch, sal, addr_string, exp_string,
- cond_string, cond, ops, tempflag,
- from_tty);
-}
-
/* Cleanup function for a syscall filter list. */
static void
clean_up_filters (void *arg)
@@ -10201,27 +10169,6 @@ this architecture yet."));
&catch_syscall_breakpoint_ops);
}
-/* Implement the "catch assert" command. */
-
-static void
-catch_assert_command (char *arg, int from_tty,
- struct cmd_list_element *command)
-{
- struct gdbarch *gdbarch = get_current_arch ();
- int tempflag;
- struct symtab_and_line sal;
- char *addr_string = NULL;
- struct breakpoint_ops *ops = NULL;
-
- tempflag = get_cmd_context (command) == CATCH_TEMPORARY;
-
- if (!arg)
- arg = "";
- sal = ada_decode_assert_location (arg, &addr_string, &ops);
- create_ada_exception_breakpoint (gdbarch, sal, addr_string, NULL, NULL, NULL,
- ops, tempflag, from_tty);
-}
-
static void
catch_command (char *arg, int from_tty)
{
@@ -12956,9 +12903,7 @@ static struct cmd_list_element *catch_cmdlist;
/* List of subcommands for "tcatch". */
static struct cmd_list_element *tcatch_cmdlist;
-/* Like add_cmd, but add the command to both the "catch" and "tcatch"
- lists, and pass some additional user data to the command function. */
-static void
+void
add_catch_command (char *name, char *docstring,
void (*sfunc) (char *args, int from_tty,
struct cmd_list_element *command),
@@ -13324,20 +13269,6 @@ Arguments, if given, should be one or more system call names\n\
catch_syscall_completer,
CATCH_PERMANENT,
CATCH_TEMPORARY);
- add_catch_command ("exception", _("\
-Catch Ada exceptions, when raised.\n\
-With an argument, catch only exceptions with the given name."),
- catch_ada_exception_command,
- NULL,
- CATCH_PERMANENT,
- CATCH_TEMPORARY);
- add_catch_command ("assert", _("\
-Catch failed Ada assertions, when raised.\n\
-With an argument, catch only exceptions with the given name."),
- catch_assert_command,
- NULL,
- CATCH_PERMANENT,
- CATCH_TEMPORARY);
c = add_com ("watch", class_breakpoint, watch_command, _("\
Set a watchpoint for an expression.\n\
diff --git a/gdb/breakpoint.h b/gdb/breakpoint.h
index b7be68c..9dbf23b 100644
--- a/gdb/breakpoint.h
+++ b/gdb/breakpoint.h
@@ -984,6 +984,36 @@ extern void awatch_command_wrapper (char *, int, int);
extern void rwatch_command_wrapper (char *, int, int);
extern void tbreak_command (char *, int);
+/* Arguments to pass as context to some catch command handlers. */
+#define CATCH_PERMANENT ((void *) (uintptr_t) 0)
+#define CATCH_TEMPORARY ((void *) (uintptr_t) 1)
+
+/* Like add_cmd, but add the command to both the "catch" and "tcatch"
+ lists, and pass some additional user data to the command
+ function. */
+
+extern void
+ add_catch_command (char *name, char *docstring,
+ void (*sfunc) (char *args, int from_tty,
+ struct cmd_list_element *command),
+ char **(*completer) (struct cmd_list_element *cmd,
+ char *text, char *word),
+ void *user_data_catch,
+ void *user_data_tcatch);
+
+/* Create a breakpoint struct for Ada exception catchpoints. */
+
+extern void
+ create_ada_exception_breakpoint (struct gdbarch *gdbarch,
+ struct symtab_and_line sal,
+ char *addr_string,
+ char *exp_string,
+ char *cond_string,
+ struct expression *cond,
+ struct breakpoint_ops *ops,
+ int tempflag,
+ int from_tty);
+
extern int create_breakpoint (struct gdbarch *gdbarch, char *arg,
char *cond_string, int thread,
int parse_condition_and_thread,