Mirror of the gdb-patches mailing list
 help / color / mirror / Atom feed
From: Pedro Alves <palves@redhat.com>
To: Jan Kratochvil <jan.kratochvil@redhat.com>
Cc: Eli Zaretskii <eliz@gnu.org>, gdb-patches@sourceware.org, dje@google.com
Subject: Re: [patch+7.5] auto-load: User conveniences suggested by Doug Evans
Date: Mon, 10 Sep 2012 11:29:00 -0000	[thread overview]
Message-ID: <504DCF0F.8080903@redhat.com> (raw)
In-Reply-To: <20120909090152.GB4994@host2.jankratochvil.net>

On 09/09/2012 10:01 AM, Jan Kratochvil wrote:
> 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.

Sure.  It was just a typo - (mis)copied from the original patch.

> Without the parentheses we have looped back to the original form in the patch.

Well, we have not.  The original form of the patch didn't point at the
manual in English; it only showed an info command.
I really don't care for the parentheses.  Fine with me with or without.

> 
> 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".

I honestly don't understand why "for example, run..." would be worse
than "or run...", while "or" to my ears implies that the information that
you get in the pointed section of the manual might be different (alternative)
from what you get from that info command.  But that's maybe just language
barrier, or just me.  I'm happy enough with this version.  Thanks.

> I will check it the case of no further comments.
> 
> 
> 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..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 *);
> 


-- 
Pedro Alves


  reply	other threads:[~2012-09-10 11:29 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
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 [this message]
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=504DCF0F.8080903@redhat.com \
    --to=palves@redhat.com \
    --cc=dje@google.com \
    --cc=eliz@gnu.org \
    --cc=gdb-patches@sourceware.org \
    --cc=jan.kratochvil@redhat.com \
    /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