Add support for inlining scripts into .debug_gdb_scripts.

include/gdb/ChangeLog:

	* section-scripts.h: Remove "future extension" comment.
	(SECTION_SCRIPT_ID_PYTHON_TEXT): New macro.
	(SECTION_SCRIPT_ID_SCHEME_TEXT): New macro.

gdb/ChangeLog:

	* NEWS: Mention inlined scripts in .debug_gdb_scripts section.
	* auto-load.c: #include ctype.h.
	(struct auto_load_pspace_info): Replace member loaded_scripts with
	new members loaded_script_files, loaded_script_texts.
	(auto_load_pspace_data_cleanup): Update.
	(init_loaded_scripts_info): Update.
	(get_auto_load_pspace_data_for_loading): Update.
	(maybe_add_script_file): Renamed from maybe_add_script.  All callers
	updated.
	(maybe_add_script_text): New function.
	(clear_section_scripts): Update.
	(source_script_file, execute_script_contents): New functions.
	(source_section_scripts): Add support for
	SECTION_SCRIPT_ID_PYTHON_TEXT, SECTION_SCRIPT_ID_GUILE_TEXT.
	(print_scripts): New function.
	(auto_load_info_scripts): Also print inlined scripts.
	(maybe_print_unsupported_script_warning): Renamed from
	unsupported_script_warning_print.  All callers updated.
	(maybe_print_script_not_found_warning): Renamed from
	script_not_found_warning_print.  All callers updated.
	* extension-priv.h (struct extension_language_script_ops): New member
	objfile_script_executor.
	* extension.c (ext_lang_objfile_script_executor): New function.
	* extension.h (objfile_script_executor_func): New typedef.
	(ext_lang_objfile_script_executor): Declare.
	* guile/guile-internal.h (gdbscm_execute_objfile_script): Declare.
	* guile/guile.c (guile_extension_script_ops): Update.
	* guile/scm-objfile.c (gdbscm_execute_objfile_script): New function.
	* python/python.c (python_extension_script_ops): Update.
	(gdbpy_execute_objfile_script): New function.

gdb/doc/ChangeLog:

	* gdb.texinfo (dotdebug_gdb_scripts section): Update docs to
	distinguish script files vs inlined scripts.
	* python.texi (Python Auto-loading): Ditto.

gdb/testsuite/ChangeLog:

	* gdb.guile/scm-section-script.c: Add duplicate inlined section script
	entries.  Duplicate file section script entries.
	* gdb.guile/scm-section-script.exp: Add tests for duplicate entries,
	inlined entries.  Add test for safe-path rejection.
	* gdb.python/py-section-script.c: Add duplicate inlined section script
	entries.  Duplicate file section script entries.
	* gdb.python/py-section-script.exp: Add tests for duplicate entries,
	inlined entries.  Add test for safe-path rejection.
This commit is contained in:
Doug Evans
2015-01-31 12:01:13 -08:00
parent 312809f883
commit 9f0500621b
20 changed files with 744 additions and 194 deletions

View File

@ -28,8 +28,6 @@
Other unused values needn't specify different scripting languages,
but we have no need for anything else at the moment.
Future extension: Include the contents of the script in the section.
These values are defined as macros so that they can be used in embedded
asms and assembler source files. */
@ -47,4 +45,18 @@
file. */
#define SECTION_SCRIPT_ID_SCHEME_FILE 3
/* The record is a nul-terminated string.
The first line is the name of the script.
Subsequent lines are interpreted as a python script. */
#define SECTION_SCRIPT_ID_PYTHON_TEXT 4
/* Native GDB scripts are not currently supported in .debug_gdb_scripts,
but we reserve a value for it. */
/*#define SECTION_SCRIPT_ID_GDB_TEXT 5*/
/* The record is a nul-terminated string.
The first line is the name of the script.
Subsequent lines are interpreted as a guile(scheme) script. */
#define SECTION_SCRIPT_ID_SCHEME_TEXT 6
#endif /* GDB_SECTION_SCRIPTS_H */