diff options
author | Doug Evans <xdje42@gmail.com> | 2014-06-03 00:29:49 -0700 |
---|---|---|
committer | Doug Evans <xdje42@gmail.com> | 2014-06-03 00:29:49 -0700 |
commit | e698b8c41cbb2648a11a2ae806922c44d1482aed (patch) | |
tree | 4a3ded90e95596c985b7940cb82e50abd773d194 /gdb/guile/scm-exception.c | |
parent | fb1f94b09a3d12a231f6be8fadf421ab578dc4ba (diff) | |
download | gdb-e698b8c41cbb2648a11a2ae806922c44d1482aed.zip gdb-e698b8c41cbb2648a11a2ae806922c44d1482aed.tar.gz gdb-e698b8c41cbb2648a11a2ae806922c44d1482aed.tar.bz2 |
Add command support for Guile.
* Makefile.in (SUBDIR_GUILE_OBS): Add scm-cmd.o.
(SUBDIR_GUILE_SRCS): Add scm-cmd.c.
(scm-cmd.o): New rule.
* guile/guile-internal.h (gdbscm_gc_xstrdup): Declare.
(gdbscm_user_error_p): Declare.
(gdbscm_parse_command_name): Declare.
(gdbscm_valid_command_class_p): Declare.
(gdbscm_initialize_commands): Declare.
* guile/guile.c (initialize_gdb_module): Call
gdbscm_initialize_commands.
* guile/lib/gdb.scm: Export command symbols.
* guile/lib/gdb/init.scm (%exception-keys): Add gdb:user-error.
(throw-user-error): New function.
* guile/scm-cmd.c: New file.
* guile/scm-exception.c (user_error_symbol): New static global.
(gdbscm_user_error_p): New function.
(gdbscm_initialize_exceptions): Set user_error_symbol.
* scm-utils.c (gdbscm_gc_xstrdup): New function.
testsuite/
* gdb.guile/scm-cmd.c: New file.
* gdb.guile/scm-cmd.exp: New file.
doc/
* guile.texi (Guile API): Add entry for Commands In Guile.
(Basic Guile) <parse-and-eval>: Add reference.
(Basic Guile) <string->argv>: Move definition to Commands In Guile.
(GDB Scheme Data Types): Mention <gdb:command> object.
(Commands In Guile): New node.
Diffstat (limited to 'gdb/guile/scm-exception.c')
-rw-r--r-- | gdb/guile/scm-exception.c | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/gdb/guile/scm-exception.c b/gdb/guile/scm-exception.c index f773a7d..0f3c875 100644 --- a/gdb/guile/scm-exception.c +++ b/gdb/guile/scm-exception.c @@ -64,6 +64,9 @@ static SCM memory_error_symbol; /* User interrupt, e.g., RETURN_QUIT in struct gdb_exception. */ static SCM signal_symbol; +/* A user error, e.g., bad arg to gdb command. */ +static SCM user_error_symbol; + /* Printing the stack is done by first capturing the stack and recording it in a <gdb:exception> object with this key and with the ARGS field set to (cons real-key (cons stack real-args)). @@ -391,6 +394,15 @@ gdbscm_memory_error_p (SCM key) return scm_is_eq (key, memory_error_symbol); } +/* Return non-zero if KEY is gdb:user-error. + Note: This is an excp_matcher_func function. */ + +int +gdbscm_user_error_p (SCM key) +{ + return scm_is_eq (key, user_error_symbol); +} + /* Wrapper around scm_throw to throw a gdb:exception. This function does not return. This function cannot be called from inside TRY_CATCH. */ @@ -663,6 +675,8 @@ gdbscm_initialize_exceptions (void) memory_error_symbol = scm_from_latin1_symbol ("gdb:memory-error"); + user_error_symbol = scm_from_latin1_symbol ("gdb:user-error"); + gdbscm_invalid_object_error_symbol = scm_from_latin1_symbol ("gdb:invalid-object-error"); |