From: Jan Kratochvil <jan.kratochvil@redhat.com>
To: Eli Zaretskii <eliz@gnu.org>
Cc: gdb-patches@sourceware.org, dje@google.com
Subject: Re: [patch+7.5] auto-load: User conveniences suggested by Doug Evans
Date: Sun, 09 Sep 2012 17:55:00 -0000 [thread overview]
Message-ID: <20120909175431.GA31895@host2.jankratochvil.net> (raw)
In-Reply-To: <83zk4zksz0.fsf@gnu.org>
On Sun, 09 Sep 2012 19:26:43 +0200, Eli Zaretskii wrote:
> > --without-python form:
> > (gdb) help set auto-load scripts-directory
> > Set the list of directories from which to load auto-loaded scripts.
> > Automatically loaded GDB scripts
> > (named OBJFILE-gdb.gdb) are located in one of the directories listed by this
> > option.
>
> Can we make these two lines more evenly sized?
--with-python form:
(gdb) help set auto-load scripts-directory
Set the list of directories from which to load auto-loaded scripts.
Automatically loaded Python scripts (named OBJFILE-gdb.py) and GDB scripts
(named OBJFILE-gdb.gdb) are located in one of the directories listed by this
option.
This option is ignored for the kinds of scripts having 'set auto-load ... off'.
Directories listed here need to be present also in the 'set auto-load safe-path'
option.
--without-python form:
(gdb) help set auto-load scripts-directory
Set the list of directories from which to load auto-loaded scripts.
Automatically loaded GDB scripts (named OBJFILE-gdb.gdb) are located in one
of the directories listed by this option.
This option is ignored for the kinds of scripts having 'set auto-load ... off'.
Directories listed here need to be present also in the 'set auto-load safe-path'
option.
Thanks,
Jan
gdb/
2012-09-09 Jan Kratochvil <jan.kratochvil@redhat.com>
Implement auto-load user conveniences suggested by Doug Evans.
* auto-load.c: Include top.h.
(file_is_auto_load_safe): New variable advice_printed. Print advice.
(_initialize_auto_load): New variable scripts_directory_help. Mention
GDBPY_AUTO_FILE_NAME and GDB_AUTO_FILE_NAME for set auto-load
scripts-directory. Document in online help one can use also files for
set auto-load safe-path.
* python/py-auto-load.c: (GDBPY_AUTO_FILE_NAME): Move it from here ...
* python/python.h (GDBPY_AUTO_FILE_NAME): ... to here.
diff --git a/gdb/auto-load.c b/gdb/auto-load.c
index b314ad6..a0f8266 100644
--- a/gdb/auto-load.c
+++ b/gdb/auto-load.c
@@ -37,6 +37,7 @@
#include "completer.h"
#include "observer.h"
#include "fnmatch.h"
+#include "top.h"
/* The suffix of per-objfile scripts to auto-load as non-Python command files.
E.g. When the program loads libfoo.so, look for libfoo-gdb.gdb. */
@@ -441,6 +442,7 @@ file_is_auto_load_safe (const char *filename, const char *debug_fmt, ...)
{
char *filename_real = NULL;
struct cleanup *back_to;
+ static int advice_printed = 0;
if (debug_auto_load)
{
@@ -470,6 +472,30 @@ file_is_auto_load_safe (const char *filename, const char *debug_fmt, ...)
"`auto-load safe-path' set to \"%s\"."),
filename_real, auto_load_safe_path);
+ if (!advice_printed)
+ {
+ const char *homedir = getenv ("HOME");
+ char *homeinit;
+
+ if (homedir == NULL)
+ homedir = "$HOME";
+ homeinit = xstrprintf ("%s/%s", homedir, gdbinit);
+ make_cleanup (xfree, homeinit);
+
+ printf_filtered (_("\
+To enable execution of this file add\n\
+\tadd-auto-load-safe-path %s\n\
+line to your configuration file \"%s\".\n\
+To completely disable this security protection add\n\
+\tset auto-load safe-path /\n\
+line to your configuration file \"%s\".\n\
+For more information about this security protection see\n\
+the \"Auto-loading safe path\" section in the GDB manual or run from the shell:\n\
+\tinfo \"(gdb)Auto-loading safe path\"\n"),
+ filename_real, homeinit, homeinit);
+ advice_printed = 1;
+ }
+
do_cleanups (back_to);
return 0;
}
@@ -1164,6 +1190,7 @@ void
_initialize_auto_load (void)
{
struct cmd_list_element *cmd;
+ char *scripts_directory_help;
auto_load_pspace_data
= register_program_space_data_with_cleanup (NULL,
@@ -1207,30 +1234,50 @@ Usage: info auto-load local-gdbinit"),
auto_load_info_cmdlist_get ());
auto_load_dir = xstrdup (AUTO_LOAD_DIR);
+ scripts_directory_help = xstrprintf (
+#ifdef HAVE_PYTHON
+ _("\
+Automatically loaded Python scripts (named OBJFILE%s) and GDB scripts\n\
+(named OBJFILE%s) are located in one of the directories listed by this\n\
+option.\n\
+%s"),
+ GDBPY_AUTO_FILE_NAME,
+#else
+ _("\
+Automatically loaded GDB scripts (named OBJFILE%s) are located in one\n\
+of the directories listed by this option.\n\
+%s"),
+#endif
+ GDB_AUTO_FILE_NAME,
+ _("\
+This option is ignored for the kinds of scripts \
+having 'set auto-load ... off'.\n\
+Directories listed here need to be present also \
+in the 'set auto-load safe-path'\n\
+option."));
add_setshow_optional_filename_cmd ("scripts-directory", class_support,
&auto_load_dir, _("\
Set the list of directories from which to load auto-loaded scripts."), _("\
-Show the list of directories from which to load auto-loaded scripts."), _("\
-Automatically loaded Python scripts and GDB scripts are located in one of the\n\
-directories listed by this option. This option is ignored for the kinds of\n\
-scripts having 'set auto-load ... off'. Directories listed here need to be\n\
-present also in the 'set auto-load safe-path' option."),
+Show the list of directories from which to load auto-loaded scripts."),
+ scripts_directory_help,
set_auto_load_dir, show_auto_load_dir,
auto_load_set_cmdlist_get (),
auto_load_show_cmdlist_get ());
+ xfree (scripts_directory_help);
auto_load_safe_path = xstrdup (AUTO_LOAD_SAFE_PATH);
auto_load_safe_path_vec_update ();
add_setshow_optional_filename_cmd ("safe-path", class_support,
&auto_load_safe_path, _("\
-Set the list of directories from which it is safe to auto-load files."), _("\
-Show the list of directories from which it is safe to auto-load files."), _("\
+Set the list of files and directories that are safe for auto-loading."), _("\
+Show the list of files and directories that are safe for auto-loading."), _("\
Various files loaded automatically for the 'set auto-load ...' options must\n\
be located in one of the directories listed by this option. Warning will be\n\
printed and file will not be used otherwise.\n\
+You can mix both directory and filename entries.\n\
Setting this parameter to an empty list resets it to its default value.\n\
Setting this parameter to '/' (without the quotes) allows any file\n\
-for the 'set auto-load ...' options. Each directory can be also shell\n\
+for the 'set auto-load ...' options. Each path entry can be also shell\n\
wildcard pattern; '*' does not match directory separator.\n\
This option is ignored for the kinds of files having 'set auto-load ... off'.\n\
This options has security implications for untrusted inferiors."),
diff --git a/gdb/python/py-auto-load.c b/gdb/python/py-auto-load.c
index 8512129..a018f5f 100644
--- a/gdb/python/py-auto-load.c
+++ b/gdb/python/py-auto-load.c
@@ -31,10 +31,6 @@
#include "python-internal.h"
-/* The suffix of per-objfile scripts to auto-load.
- E.g. When the program loads libfoo.so, look for libfoo-gdb.py. */
-#define GDBPY_AUTO_FILE_NAME "-gdb.py"
-
/* The section to look for Python auto-loaded scripts (in file formats that
support sections).
Each entry in this section is a byte of value 1, and then the nul-terminated
diff --git a/gdb/python/python.h b/gdb/python/python.h
index dd7066f..0d07271 100644
--- a/gdb/python/python.h
+++ b/gdb/python/python.h
@@ -24,6 +24,10 @@
struct breakpoint_object;
+/* The suffix of per-objfile scripts to auto-load.
+ E.g. When the program loads libfoo.so, look for libfoo-gdb.py. */
+#define GDBPY_AUTO_FILE_NAME "-gdb.py"
+
extern void finish_python_initialization (void);
void eval_python_from_control_command (struct command_line *);
next prev parent reply other threads:[~2012-09-09 17:55 UTC|newest]
Thread overview: 26+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-08-21 14:44 Jan Kratochvil
2012-08-21 17:50 ` Eli Zaretskii
2012-08-24 16:11 ` Jan Kratochvil
2012-08-24 18:15 ` Eli Zaretskii
2012-09-09 8:53 ` Jan Kratochvil
2012-09-09 17:26 ` Eli Zaretskii
2012-09-09 17:55 ` Jan Kratochvil [this message]
2012-09-09 18:09 ` Eli Zaretskii
2012-08-22 15:46 ` Pedro Alves
2012-08-24 15:13 ` Jan Kratochvil
2012-08-24 15:17 ` Pedro Alves
2012-08-24 15:19 ` Eli Zaretskii
2012-08-24 15:28 ` Pedro Alves
2012-08-24 15:31 ` Pedro Alves
2012-08-24 15:43 ` Jan Kratochvil
2012-08-24 17:56 ` Eli Zaretskii
2012-08-24 18:01 ` Jan Kratochvil
2012-08-24 18:26 ` Eli Zaretskii
2012-08-27 18:02 ` Pedro Alves
2012-08-27 18:12 ` Jan Kratochvil
2012-09-09 9:02 ` Jan Kratochvil
2012-09-10 11:29 ` Pedro Alves
2012-09-10 11:47 ` Jan Kratochvil
2012-09-10 13:06 ` Pedro Alves
2012-09-10 15:28 ` Jan Kratochvil
2012-09-17 18:29 ` [commit+7.5] " Jan Kratochvil
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20120909175431.GA31895@host2.jankratochvil.net \
--to=jan.kratochvil@redhat.com \
--cc=dje@google.com \
--cc=eliz@gnu.org \
--cc=gdb-patches@sourceware.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox