2010-03-23 Sergio Durigan Junior <sergiodj@redhat.com>

PR gdb/10736:
	* xml-syscall.c (my_gdb_datadir): New variable to keep track of
	the changes in data-directory.
	(init_sysinfo): Reload the syscall XML file if the data-directory
	has changed.
This commit is contained in:
Sergio Durigan Junior 2010-04-05 15:58:53 +00:00
parent 1f7ccab234
commit 626ea16dd6
2 changed files with 29 additions and 1 deletions

View File

@ -1,3 +1,11 @@
2010-04-05 Sergio Durigan Junior <sergiodj@redhat.com>
PR gdb/10736:
* xml-syscall.c (my_gdb_datadir): New variable to keep track of
the changes in data-directory.
(init_sysinfo): Reload the syscall XML file if the data-directory
has changed.
2010-04-05 Jan Kratochvil <jan.kratochvil@redhat.com>
Code cleanup.

View File

@ -80,6 +80,10 @@ get_syscall_names (void)
#else /* ! HAVE_LIBEXPAT */
/* Variable that will hold the last known data-directory. This is useful to
know whether we should re-read the XML info for the target. */
static char *my_gdb_datadir = NULL;
/* Structure which describes a syscall. */
typedef struct syscall_desc
{
@ -291,6 +295,18 @@ xml_init_syscalls_info (const char *filename)
static void
init_sysinfo (void)
{
/* Should we re-read the XML info for this target? */
if (my_gdb_datadir && strcmp (my_gdb_datadir, gdb_datadir) != 0)
{
/* The data-directory changed from the last time we used it.
It means that we have to re-read the XML info. */
have_initialized_sysinfo = 0;
xfree (my_gdb_datadir);
my_gdb_datadir = NULL;
if (sysinfo)
free_syscalls_info ((void *) sysinfo);
}
/* Did we already try to initialize the structure? */
if (have_initialized_sysinfo)
return;
@ -303,7 +319,8 @@ init_sysinfo (void)
{
if (xml_syscall_file)
warning (_("\
Could not load the syscall XML file `%s'."), xml_syscall_file);
Could not load the syscall XML file `%s/%s'."),
gdb_datadir, xml_syscall_file);
else
warning (_("\
There is no XML file to open."));
@ -312,6 +329,9 @@ There is no XML file to open."));
GDB will not be able to display syscall names nor to verify if\n\
any provided syscall numbers are valid."));
}
/* Saving the data-directory used to read this XML info. */
my_gdb_datadir = xstrdup (gdb_datadir);
}
static int