Re: [RFA] [1/2] auto-loading scripts from .debug_gdb_scripts section

Eli Zaretskii
2010-04-16T21:25:58Z

> Date: Fri, 16 Apr 2010 11:06:44 -0700
> From: Doug Evans <dje@google.com>
> Cc: gdb-patches@sourceware.org
>
> > The existing Python Auto-loading section is not too long, so how about
> > simply adding the description of this new feature to that section? Â I
> > think ripping it out of "Python API" is not a good idea.
>
> To me the Auto-loading section is not really part of the API.

Well, yes, but this feature is currently specific to Python, so why
move it out of the Python chapter?

> >> +If this file does not exist, and if the parameter
> >> +@code{debug-file-directory} is set (@pxref{Separate Debug Files}),
> >> +then @value{GDBN} will use for its each separated directory component
> >> +@code{component} the file named @file{@code{component}/@var{real-name}}, where
> >> +@var{real-name} is the object file's real name, as described above.
> >
> > I know you just copied this from the original text, but this is
> > confusingly complicated. Â How about this rewording:
> >
> > Â If this file does not exist, and if the parameter
> > Â @code{debug-file-directory} is set (@pxref{Separate Debug Files}),
> > Â then @value{GDBN} will look for the file in that directory and in
> > Â all of its parents.
>
> "all of its parents"?
> I *think* that comment is referring to the fact that
> "debug-file-directory" contains a colon-separated list of directories
> to try

Right you are. So

If this file does not exist, and if the parameter
@code{debug-file-directory} is set (@pxref{Separate Debug Files}),
then @value{GDBN} will look for the file in all of the directories
mentioned in the value of @code{debug-file-directory}.

> bad option name of course

A terrible name.

> >> + Â if (!input && debug_file_directory)
> >> + Â  Â {
> >> + Â  Â  Â /* Also try the same file in the separate debug info directory. Â */
> >> + Â  Â  Â debugfile = xmalloc (strlen (filename)
> >> + Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â + strlen (debug_file_directory) + 1);
> >> + Â  Â  Â strcpy (debugfile, debug_file_directory);
> >> + Â  Â  Â /* FILENAME is absolute, so we don't need a "/" here. Â */
> >> + Â  Â  Â strcat (debugfile, filename);
> >
> > What will that last strcat do if FILENAME has a drive letter?
> >
> >> + Â  Â  Â strcpy (debugfile, gdb_datadir);
> >> + Â  Â  Â strcat (debugfile, "/auto-load");
> >> + Â  Â  Â /* FILENAME is absolute, so we don't need a "/" here. Â */
> >> + Â  Â  Â strcat (debugfile, filename);
> >
> > Ditto.
>
> This is cut-n-pasted from the existing code to auto-load -gdb.py
> scripts. I don't know if filename can have a drive letter here.

Yes, it can. It depends how the files were called out in the
compilation command line.

I think we should strip the drive letter and the colon before
concatenating the rest with the leading directory.