gdb/
* auto-load.c (auto_load_objfile_script): Rename to ... (auto_load_objfile_script_1): ... here, change variable realname to parameter realname, document it, add return value, add variable retval. (auto_load_objfile_script): New function. gdb/doc/ * gdb.texinfo (objfile-gdb.py file): New paragraph for .exe stripping.
This commit is contained in:
parent
7afa16426a
commit
e968779960
@ -1,3 +1,11 @@
|
||||
2012-08-27 Eli Zaretskii <eliz@gnu.org>
|
||||
Jan Kratochvil <jan.kratochvil@redhat.com>
|
||||
|
||||
* auto-load.c (auto_load_objfile_script): Rename to ...
|
||||
(auto_load_objfile_script_1): ... here, change variable realname to
|
||||
parameter realname, document it, add return value, add variable retval.
|
||||
(auto_load_objfile_script): New function.
|
||||
|
||||
2012-08-27 Jan Kratochvil <jan.kratochvil@redhat.com>
|
||||
|
||||
* cli/cli-decode.c (print_doc_line): Keep skipping '.' and ',' not
|
||||
|
@ -693,27 +693,25 @@ clear_section_scripts (void)
|
||||
}
|
||||
}
|
||||
|
||||
/* Look for the auto-load script in LANGUAGE associated with OBJFILE and load
|
||||
it. */
|
||||
/* Look for the auto-load script in LANGUAGE associated with OBJFILE where
|
||||
OBJFILE's gdb_realpath is REALNAME and load it. Return 1 if we found any
|
||||
matching script, return 0 otherwise. */
|
||||
|
||||
void
|
||||
auto_load_objfile_script (struct objfile *objfile,
|
||||
const struct script_language *language)
|
||||
static int
|
||||
auto_load_objfile_script_1 (struct objfile *objfile, const char *realname,
|
||||
const struct script_language *language)
|
||||
{
|
||||
char *realname;
|
||||
char *filename, *debugfile;
|
||||
int len;
|
||||
int len, retval;
|
||||
FILE *input;
|
||||
struct cleanup *cleanups;
|
||||
|
||||
realname = gdb_realpath (objfile->name);
|
||||
len = strlen (realname);
|
||||
filename = xmalloc (len + strlen (language->suffix) + 1);
|
||||
memcpy (filename, realname, len);
|
||||
strcpy (filename + len, language->suffix);
|
||||
|
||||
cleanups = make_cleanup (xfree, filename);
|
||||
make_cleanup (xfree, realname);
|
||||
|
||||
input = fopen (filename, "r");
|
||||
debugfile = filename;
|
||||
@ -768,6 +766,44 @@ auto_load_objfile_script (struct objfile *objfile,
|
||||
and these scripts are required to be idempotent under multiple
|
||||
loads anyway. */
|
||||
language->source_script_for_objfile (objfile, input, debugfile);
|
||||
|
||||
retval = 1;
|
||||
}
|
||||
else
|
||||
retval = 0;
|
||||
|
||||
do_cleanups (cleanups);
|
||||
return retval;
|
||||
}
|
||||
|
||||
/* Look for the auto-load script in LANGUAGE associated with OBJFILE and load
|
||||
it. */
|
||||
|
||||
void
|
||||
auto_load_objfile_script (struct objfile *objfile,
|
||||
const struct script_language *language)
|
||||
{
|
||||
char *realname = gdb_realpath (objfile->name);
|
||||
struct cleanup *cleanups = make_cleanup (xfree, realname);
|
||||
|
||||
if (!auto_load_objfile_script_1 (objfile, realname, language))
|
||||
{
|
||||
/* For Windows/DOS .exe executables, strip the .exe suffix, so that
|
||||
FOO-gdb.gdb could be used for FOO.exe, and try again. */
|
||||
|
||||
size_t len = strlen (realname);
|
||||
const size_t lexe = sizeof (".exe") - 1;
|
||||
|
||||
if (len > lexe && strcasecmp (realname + len - lexe, ".exe") == 0)
|
||||
{
|
||||
len -= lexe;
|
||||
realname[len] = '\0';
|
||||
if (debug_auto_load)
|
||||
fprintf_unfiltered (gdb_stdlog, _("auto-load: Stripped .exe suffix, "
|
||||
"retrying with \"%s\".\n"),
|
||||
realname);
|
||||
auto_load_objfile_script_1 (objfile, realname, language);
|
||||
}
|
||||
}
|
||||
|
||||
do_cleanups (cleanups);
|
||||
|
@ -1,3 +1,7 @@
|
||||
2012-08-27 Jan Kratochvil <jan.kratochvil@redhat.com>
|
||||
|
||||
* gdb.texinfo (objfile-gdb.py file): New paragraph for .exe stripping.
|
||||
|
||||
2012-08-23 Khoo Yit Phang <khooyp@cs.umd.edu>
|
||||
|
||||
Document how to return from "python-interactive" to GDB.
|
||||
|
@ -25784,6 +25784,13 @@ If this file does not exist, then @value{GDBN} will look for
|
||||
Note that loading of this script file also requires accordingly configured
|
||||
@code{auto-load safe-path} (@pxref{Auto-loading safe path}).
|
||||
|
||||
For object files using @file{.exe} suffix @value{GDBN} tries to load first the
|
||||
scripts normally according to its @file{.exe} filename. But if no scripts are
|
||||
found @value{GDBN} also tries script filenames matching the object file without
|
||||
its @file{.exe} suffix. This @file{.exe} stripping is case insensitive and it
|
||||
is attempted on any platform. This makes the script filenames compatible
|
||||
between Unix and MS-Windows hosts.
|
||||
|
||||
@table @code
|
||||
@anchor{set auto-load scripts-directory}
|
||||
@kindex set auto-load scripts-directory
|
||||
|
Loading…
x
Reference in New Issue
Block a user