* configure.ac (CONFIG_SRCS): Add py-auto-load.o even if not using

python.
	* configure: Regenerate.
	* main.c: #include "python/python.h".
	(captured_main): Defer loading auto-loaded scripts until after
	local_gdbinit has been sourced.
	* python/py-auto-load.c (gdbpy_global_auto_load): New global.
	(load_auto_scripts_for_objfile): New function.
	(auto_load_new_objfile): Call it.
	* python/python.h (gdbpy_global_auto_load): Declare.
	(load_auto_scripts_for_objfile): Declare.
This commit is contained in:
Doug Evans
2010-04-23 18:09:16 +00:00
parent 66d0954266
commit 88a1906b0d
6 changed files with 76 additions and 9 deletions

@ -28,9 +28,24 @@
#include "progspace.h"
#include "objfiles.h"
#include "python.h"
#include "python-internal.h"
#include "cli/cli-cmds.h"
/* Internal-use flag to enable/disable auto-loading.
This is true if we should auto-load python code when an objfile is opened,
false otherwise.
Both gdbpy_auto_load && gdbpy_global_auto_load must be true to enable
auto-loading.
This flag exists to facilitate deferring auto-loading during start-up
until after ./.gdbinit has been read; it may augment the search directories
used to find the scripts. */
int gdbpy_global_auto_load = 1;
#ifdef HAVE_PYTHON
#include "python-internal.h"
/* NOTE: It's trivial to also support auto-loading normal gdb scripts.
There has yet to be a need so it's not implemented. */
@ -66,7 +81,9 @@ struct loaded_script_entry
const char *full_path;
};
/* This is true if we should auto-load python code when an objfile is opened,
/* User-settable option to enable/disable auto-loading:
maint set python auto-load on|off
This is true if we should auto-load python code when an objfile is opened,
false otherwise. */
static int gdbpy_auto_load = 1;
@ -377,7 +394,15 @@ auto_load_new_objfile (struct objfile *objfile)
if (!objfile->name)
return;
if (gdbpy_auto_load)
load_auto_scripts_for_objfile (objfile);
}
/* Load any auto-loaded scripts for OBJFILE. */
void
load_auto_scripts_for_objfile (struct objfile *objfile)
{
if (gdbpy_auto_load && gdbpy_global_auto_load)
{
auto_load_objfile_script (objfile, GDBPY_AUTO_FILE_NAME);
auto_load_section_scripts (objfile, GDBPY_AUTO_SECTION_NAME);
@ -457,3 +482,12 @@ Enables or disables auto-loading of Python code when an object is opened."),
_("Print dump of auto-loaded section scripts matching REGEXP."),
&maintenanceprintlist);
}
#else /* ! HAVE_PYTHON */
void
load_auto_scripts_for_objfile (struct objfile *objfile)
{
}
#endif /* ! HAVE_PYTHON */

@ -22,6 +22,8 @@
#include "value.h"
extern int gdbpy_global_auto_load;
void eval_python_from_control_command (struct command_line *);
void source_python_script (FILE *stream, const char *file);
@ -34,4 +36,6 @@ int apply_val_pretty_printer (struct type *type, const gdb_byte *valaddr,
void preserve_python_values (struct objfile *objfile, htab_t copied_types);
void load_auto_scripts_for_objfile (struct objfile *objfile);
#endif /* GDB_PYTHON_H */