2009-07-01 Tristan Gingold <gingold@adacore.com>
[deliverable/binutils-gdb.git] / gdb / spu-linux-nat.c
index 372bbeef9d0a4f4ad6145e2ba9e8bc408a524560..f6a3c794ec7003c3d4d00401a5e3a3c10c835725 100644 (file)
@@ -308,6 +308,7 @@ static bfd *
 spu_bfd_open (ULONGEST addr)
 {
   struct bfd *nbfd;
+  asection *spu_name;
 
   ULONGEST *open_closure = xmalloc (sizeof (ULONGEST));
   *open_closure = addr;
@@ -325,6 +326,22 @@ spu_bfd_open (ULONGEST addr)
       return NULL;
     }
 
+  /* Retrieve SPU name note and update BFD name.  */
+  spu_name = bfd_get_section_by_name (nbfd, ".note.spu_name");
+  if (spu_name)
+    {
+      int sect_size = bfd_section_size (nbfd, spu_name);
+      if (sect_size > 20)
+       {
+         char *buf = alloca (sect_size - 20 + 1);
+         bfd_get_section_contents (nbfd, spu_name, buf, 20, sect_size - 20);
+         buf[sect_size - 20] = '\0';
+
+         xfree ((char *)nbfd->filename);
+         nbfd->filename = xstrdup (buf);
+       }
+    }
+
   return nbfd;
 }
 
@@ -355,7 +372,8 @@ spu_symbol_file_add_from_memory (int inferior_fd)
   /* Open BFD representing SPE executable and read its symbols.  */
   nbfd = spu_bfd_open (addr);
   if (nbfd)
-    symbol_file_add_from_bfd (nbfd, 0, NULL, 1, 0);
+    symbol_file_add_from_bfd (nbfd, SYMFILE_VERBOSE | SYMFILE_MAINLINE,
+                              NULL, 0);
 }
 
 
@@ -405,7 +423,7 @@ spu_child_post_attach (int pid)
    minus_one_ptid in case of error; store status into *OURSTATUS.  */
 static ptid_t
 spu_child_wait (struct target_ops *ops,
-               ptid_t ptid, struct target_waitstatus *ourstatus)
+               ptid_t ptid, struct target_waitstatus *ourstatus, int options)
 {
   int save_errno;
   int status;
@@ -583,4 +601,3 @@ _initialize_spu_nat (void)
   /* Register SPU target.  */
   add_target (t);
 }
-
This page took 0.038853 seconds and 4 git commands to generate.