diff options
author | Doug Evans <xdje42@gmail.com> | 2014-03-11 00:02:19 -0400 |
---|---|---|
committer | Doug Evans <xdje42@gmail.com> | 2014-03-11 00:04:53 -0400 |
commit | c1966e261a3c0e0a32639d464a5ebee83aa31144 (patch) | |
tree | dcda80e75307d811075d13945cad1a17ab105c2e /gdb/guile/guile.c | |
parent | f32d1b7f589d70c6f5e15f83b0f6f94ef18bb1dd (diff) | |
download | gdb-c1966e261a3c0e0a32639d464a5ebee83aa31144.zip gdb-c1966e261a3c0e0a32639d464a5ebee83aa31144.tar.gz gdb-c1966e261a3c0e0a32639d464a5ebee83aa31144.tar.bz2 |
* guile/guile.c (call_initialize_gdb_module): New function.
(initialize_guile): Replace call to scm_init_guile with call to
scm_with_guile.
Diffstat (limited to 'gdb/guile/guile.c')
-rw-r--r-- | gdb/guile/guile.c | 28 |
1 files changed, 18 insertions, 10 deletions
diff --git a/gdb/guile/guile.c b/gdb/guile/guile.c index b7134f7..f2fd8d8 100644 --- a/gdb/guile/guile.c +++ b/gdb/guile/guile.c @@ -561,6 +561,20 @@ initialize_gdb_module (void *data) gdb_scheme_initialized = 1; } +/* Utility to call scm_c_define_module+initialize_gdb_module from + within scm_with_guile. */ + +static void * +call_initialize_gdb_module (void *data) +{ + /* Most of the initialization is done by initialize_gdb_module. + It is called via scm_c_define_module so that the initialization is + performed within the desired module. */ + scm_c_define_module (gdbscm_module_name, initialize_gdb_module, NULL); + + return NULL; +} + /* A callback to finish Guile initialization after gdb has finished all its initialization. This is the extension_language_ops.finish_initialization "method". */ @@ -697,20 +711,14 @@ _initialize_guile (void) install_gdb_commands (); #if HAVE_GUILE - /* The Guile docs say scm_init_guile isn't as portable as the other Guile - initialization routines. However, this is the easiest to use. - We can switch to a more portable routine if/when the need arises - and if it can be used with gdb. */ - scm_init_guile (); - /* The Python support puts the C side in module "_gdb", leaving the Python side to define module "gdb" which imports "_gdb". There is evidently no similar convention in Guile so we skip this. */ - /* The rest of the initialization is done by initialize_gdb_module. - scm_c_define_module is used as it allows us to perform the initialization - within the desired module. */ - scm_c_define_module (gdbscm_module_name, initialize_gdb_module, NULL); + /* scm_with_guile is the most portable way to initialize Guile. + Plus we need to initialize the Guile support while in Guile mode + (e.g., called from within a call to scm_with_guile). */ + scm_with_guile (call_initialize_gdb_module, NULL); /* Set Guile's backtrace to match the "set guile print-stack" default. [N.B. The two settings are still separate.] |