From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 28425 invoked by alias); 9 Sep 2012 09:02:16 -0000 Received: (qmail 28417 invoked by uid 22791); 9 Sep 2012 09:02:15 -0000 X-SWARE-Spam-Status: No, hits=-6.4 required=5.0 tests=AWL,BAYES_00,KHOP_RCVD_UNTRUST,RCVD_IN_DNSWL_HI,RCVD_IN_HOSTKARMA_W,RP_MATCHES_RCVD,SPF_HELO_PASS,TW_BJ X-Spam-Check-By: sourceware.org Received: from mx1.redhat.com (HELO mx1.redhat.com) (209.132.183.28) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Sun, 09 Sep 2012 09:02:02 +0000 Received: from int-mx09.intmail.prod.int.phx2.redhat.com (int-mx09.intmail.prod.int.phx2.redhat.com [10.5.11.22]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id q89920Nm019594 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Sun, 9 Sep 2012 05:02:00 -0400 Received: from host2.jankratochvil.net (ovpn-116-25.ams2.redhat.com [10.36.116.25]) by int-mx09.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id q8991qAv005789 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES128-SHA bits=128 verify=NO); Sun, 9 Sep 2012 05:01:55 -0400 Date: Sun, 09 Sep 2012 09:02:00 -0000 From: Jan Kratochvil To: Pedro Alves Cc: Eli Zaretskii , gdb-patches@sourceware.org, dje@google.com Subject: Re: [patch+7.5] auto-load: User conveniences suggested by Doug Evans Message-ID: <20120909090152.GB4994@host2.jankratochvil.net> References: <20120821144355.GA28426@host2.jankratochvil.net> <5034FED3.9040809@redhat.com> <83boi0gvwx.fsf@gnu.org> <50379D92.8070705@redhat.com> <50379E50.6090602@redhat.com> <83a9xkgony.fsf@gnu.org> <20120824180033.GA14391@host2.jankratochvil.net> <834nnsgn96.fsf@gnu.org> <503BB633.6050204@redhat.com> <20120827181147.GA25603@host2.jankratochvil.net> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20120827181147.GA25603@host2.jankratochvil.net> User-Agent: Mutt/1.5.21 (2010-09-15) X-IsSubscribed: yes Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org X-SW-Source: 2012-09/txt/msg00093.txt.bz2 On Mon, 27 Aug 2012 20:11:47 +0200, Jan Kratochvil wrote: > On Mon, 27 Aug 2012 20:02:27 +0200, Pedro Alves wrote: > > For more information about this security protection see the > > "Auto-loading safe path" section in the GDB manual > > (For example, run from the shell: info \"(gdb)Auto-loading safe path\). > > When we are at it then: > > For example, run from the shell: info "(gdb)Auto-loading safe path" > > As otherwise it is pain to copy-paste it. Or in fact it does not work when > naively copy-pasted. Without the parentheses we have looped back to the original form in the patch. Suggesting therefore the following output form which I tried to compile from all the suggestions: Reading symbols from /home/jkratoch/redhat/gdb-clean/gdb/gdb...done. warning: File "/home/jkratoch/redhat/gdb-clean/gdb/gdb-gdb.gdb" auto-loading has been declined by your `auto-load safe-path' set to "$debugdir:$datadir/auto-load". To enable execution of this file add add-auto-load-safe-path /home/jkratoch/redhat/gdb-clean/gdb/gdb-gdb.gdb line to your configuration file "/home/jkratoch/.gdbinit". To completely disable this security protection add set auto-load safe-path / line to your configuration file "/home/jkratoch/.gdbinit". For more information about this security protection see the "Auto-loading safe path" section in the GDB manual or run from the shell: info "(gdb)Auto-loading safe path" warning: File "/home/jkratoch/redhat/gdb-clean/gdb/gdb-gdb.py" auto-loading has been declined by your `auto-load safe-path' set to "$debugdir:$datadir/auto-load". (gdb) q I will check it the case of no further comments. Thanks, Jan gdb/ 2012-09-09 Jan Kratochvil 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..603183c 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,45 @@ Usage: info auto-load local-gdbinit"), auto_load_info_cmdlist_get ()); auto_load_dir = xstrdup (AUTO_LOAD_DIR); + scripts_directory_help = xstrprintf (_("\ +Automatically loaded %s%s%sGDB scripts\n\ +(named OBJFILE%s) are located in one of the directories listed by this\n\ +option.\n\ +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."), +#ifdef HAVE_PYTHON + _("Python scripts (named OBJFILE"), + GDBPY_AUTO_FILE_NAME, _(") and "), +#else + "", "", "", +#endif + GDB_AUTO_FILE_NAME); 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 *);