bf88dd6849
auto-load: Implementation. * NEWS: New descriptions for "info auto-load", "info auto-load gdb-scripts", "info auto-load python-scripts", "info auto-load local-gdbinit" and "info auto-load libthread-db". Deprecate "info auto-load-scripts", "set auto-load-scripts on|off" and "show auto-load-scripts". New description for "set auto-load", "show auto-load", "set auto-load gdb-scripts", "show auto-load gdb-scripts", "set auto-load python-scripts", "show auto-load python-scripts", "set auto-load local-gdbinit", "show auto-load local-gdbinit", "set auto-load libthread-db" and "show auto-load libthread-db". * auto-load.c: Remove include python/python-internal.h. Add includes exceptions.h, cli/cli-script.h, gdbcmd.h, cli/cli-decode.h and cli/cli-setshow.h. (GDB_AUTO_FILE_NAME, source_gdb_script_for_objfile) (auto_load_gdb_scripts, show_auto_load_gdb_scripts): New. (gdbpy_global_auto_load): Rename to ... (global_auto_load): ... here. (auto_load_local_gdbinit, auto_load_local_gdbinit_pathname) (auto_load_local_gdbinit_loaded, show_auto_load_local_gdbinit) (script_language_gdb, source_gdb_script_for_objfile): New. (struct loaded_script): New field language. (hash_loaded_script_entry, eq_loaded_script_entry): Calculate also LANGUAGE. (maybe_add_script): Add parameter language. Drop redundant entry.full_path initialization. Initialize entry.language and (*slot)->language. (auto_load_objfile_script): Change parameter suffix to language. Remove the call of maybe_add_script. Call language->source_script_for_objfile. (load_auto_scripts_for_objfile, struct collect_matching_scripts_data): New. (collect_matching_scripts): Adjust it for struct collect_matching_scripts_data. (auto_load_info_scripts_pattern_nl): New variable. (info_auto_load_scripts): Rename to ... (auto_load_info_scripts): ... here, add parameter language. Adjust it for struct collect_matching_scripts_data. (info_auto_load_gdb_scripts, info_auto_load_local_gdbinit) (set_auto_load_cmd, auto_load_set_cmdlist_get, show_auto_load_cmd) (auto_load_show_cmdlist_get, info_auto_load_cmd) (auto_load_info_cmdlist_get): New. (_initialize_auto_load): Move add_info of "auto-load-scripts" to python/py-auto-load.c. New installment for "set auto-load gdb-scripts", "info auto-load gdb-scripts", "set auto-load local-gdbinit" and "info auto-load local-gdbinit". * auto-load.h (struct script_language): New. (gdbpy_global_auto_load): Rename to ... (global_auto_load): ... here. (auto_load_local_gdbinit, auto_load_local_gdbinit_pathname) (auto_load_local_gdbinit_loaded): New declarations. (maybe_add_script): New parameter language. (auto_load_objfile_script): Change parameter suffix to language. (load_auto_scripts_for_objfile, auto_load_info_scripts_pattern_nl) (auto_load_info_scripts, auto_load_set_cmdlist_get) (auto_load_show_cmdlist_get, auto_load_info_cmdlist_get): New declarations. * linux-thread-db.c: Include auto-load.h and ctype.h. (auto_load_thread_db, show_auto_load_thread_db): New. (struct thread_db_info): New field filename. (delete_thread_db_info): Call xfree for FILENAME. (try_thread_db_load): Initialize FILENAME. (try_thread_db_load_from_pdir, try_thread_db_load_from_dir): Return if !AUTO_LOAD_THREAD_DB. (info_auto_load_libthread_db_compare, info_auto_load_libthread_db): New. (_initialize_thread_db): Install auto_load_thread_db as "set auto-load libthread-db" and install info_auto_load_libthread_db as "info auto-load libthread-db". * main.c (captured_main): Rename gdbpy_global_auto_load to global_auto_load. Initialize AUTO_LOAD_LOCAL_GDBINIT_PATHNAME and AUTO_LOAD_LOCAL_GDBINIT_LOADED. (print_gdb_help): Extend the help for 'local init file'. * python/py-auto-load.c: Remove a comment about gdb scripts extension. (GDBPY_AUTO_SECTION_NAME): Extend the comment it is Python specific. (auto_load_scripts): Rename to ... (auto_load_python_scripts): ... here, update the comment. (gdbpy_load_auto_script_for_objfile): New declaration. (show_auto_load_python_scripts, script_language_python) (gdbpy_load_auto_script_for_objfile): New. (source_section_scripts): Refactor the code. (load_auto_scripts_for_objfile): Rename to ... (gdbpy_load_auto_scripts_for_objfile): ... here, update the auto_load_objfile_script caller, drop GDBPY_GLOBAL_AUTO_LOAD checking. (info_auto_load_python_scripts): New. (gdbpy_initialize_auto_load): New variables cmd and cmd_name. Rename "set auto-load-scripts" to "set auto-load python-scripts". Register "set auto-load-scripts" as its deprecated alias. Register "info auto-load python-scripts". Register "info auto-load-scripts" as its deprecated alias. (load_auto_scripts_for_objfile): Rename to ... (gdbpy_load_auto_scripts_for_objfile): ... here. * python/python.h (load_auto_scripts_for_objfile): Rename to ... (gdbpy_load_auto_scripts_for_objfile): ... here. gdb/doc/ auto-load: Implementation. * gdb.texinfo (Mode Options): New anchor for -nx. (Startup): New anchors for Option -init-eval-command, Home Directory Init File and Init File in the Current Directory during Startup. Mention set auto-load local-gdbinit with a reference. Change the sample code to "set auto-load python-scripts". (Threads): New anchor set libthread-db-search-path. Provide references to libthread_db.so.1 file. (Controlling GDB): New menu item for Auto-loading. (Auto-loading, Init File in the Current Directory) (libthread_db.so.1 file, objfile-gdb.gdb file): New nodes. (Python): Rename the menu item Auto-loading to Python Auto-loading. (Writing a Pretty-Printer, Objfiles In Python): Update the renamed reference. (Auto-loading): Rename to ... (Python Auto-loading): ... here. Change "set auto-load-scripts" to "set auto-load python-scripts", new anchor for it. Change "show auto-load-scripts" to "show auto-load python-scripts", new anchor for it. Change "info auto-load-scripts" to "info auto-load python-scripts", new anchor for it. Change "scripts" to "Python scripts". gdb/testsuite/ auto-load: Implementation. * gdb.base/help.exp (test set height): Increase the height. * gdb.python/py-objfile-script.exp (info auto-load-scripts): Change to ... (info auto-load python-scripts): ... here. * gdb.python/py-section-script.exp (info auto-load-scripts *): Change to ... (info auto-load python-scripts *): ... here.
56 lines
1.9 KiB
Text
56 lines
1.9 KiB
Text
# Copyright (C) 2011-2012 Free Software Foundation, Inc.
|
|
|
|
# This program is free software; you can redistribute it and/or modify
|
|
# it under the terms of the GNU General Public License as published by
|
|
# the Free Software Foundation; either version 3 of the License, or
|
|
# (at your option) any later version.
|
|
#
|
|
# This program is distributed in the hope that it will be useful,
|
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
# GNU General Public License for more details.
|
|
#
|
|
# You should have received a copy of the GNU General Public License
|
|
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
|
|
# This file is part of the GDB testsuite. It tests automagic loading of
|
|
# -gdb.py scripts.
|
|
|
|
set testfile "py-objfile-script"
|
|
set srcfile ${testfile}.c
|
|
set binfile ${objdir}/${subdir}/${testfile}
|
|
if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable {debug}] != "" } {
|
|
untested "Couldn't compile ${srcfile}"
|
|
return -1
|
|
}
|
|
|
|
# Start with a fresh gdb.
|
|
gdb_exit
|
|
gdb_start
|
|
|
|
# Skip all tests if Python scripting is not enabled.
|
|
if { [skip_python_tests] } { continue }
|
|
|
|
# Make the -gdb.py script available to gdb, it is automagically loaded by gdb.
|
|
# Care is taken to put it in the same directory as the binary so that
|
|
# gdb will find it.
|
|
set remote_python_file [remote_download host ${srcdir}/${subdir}/${testfile}-gdb.py.in ${subdir}/${testfile}-gdb.py]
|
|
|
|
gdb_reinitialize_dir $srcdir/$subdir
|
|
gdb_load ${binfile}
|
|
|
|
# Verify gdb loaded the script.
|
|
gdb_test "info auto-load python-scripts" "Yes.*/${testfile}-gdb.py.*"
|
|
|
|
if ![runto_main] {
|
|
perror "couldn't run to main"
|
|
return
|
|
}
|
|
|
|
gdb_test "b [gdb_get_line_number {break to inspect} ${testfile}.c ]" \
|
|
".*Breakpoint.*"
|
|
gdb_test "continue" ".*Breakpoint.*"
|
|
|
|
gdb_test "print ss" " = a=<1> b=<2>"
|
|
|
|
remote_file host delete ${remote_python_file}
|