2010-03-23 Sergio Durigan Junior <sergiodj@redhat.com>
authorSergio Durigan Junior <sergiodj@redhat.com>
Mon, 5 Apr 2010 15:58:53 +0000 (15:58 +0000)
committerSergio Durigan Junior <sergiodj@redhat.com>
Mon, 5 Apr 2010 15:58:53 +0000 (15:58 +0000)
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.

gdb/ChangeLog
gdb/xml-syscall.c

index b1fb9477a969a8d2dd0808f34ee9a03595186c1b..25f8a1dbac34ca7694de9de7b4df71dde8e0c49c 100644 (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.
index 3f5585c65ac6a814da0e9215961892f152a158a6..2a4d010bf28ca5f5d0122fc517ba84757a7647a5 100644 (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
This page took 0.028628 seconds and 4 git commands to generate.