* somsolib.c (som_solib_add): Handle case where a shared library
authorJeff Law <law@redhat.com>
Fri, 24 Mar 1995 06:21:44 +0000 (06:21 +0000)
committerJeff Law <law@redhat.com>
Fri, 24 Mar 1995 06:21:44 +0000 (06:21 +0000)
        referenced by a core file has sections without the SEC_ALLOC bit
        set (eg stabs sections).

gdb/ChangeLog
gdb/somsolib.c

index 652b3ea1719a82e3c6a2ff20e58f0ef6821ae25e..008448e62152ff6bbb998346a59049a02fda5c19 100644 (file)
@@ -1,3 +1,9 @@
+Thu Mar 23 23:20:00 1995  Jeff Law  (law@snake.cs.utah.edu)
+
+        * somsolib.c (som_solib_add): Handle case where a shared library
+        referenced by a core file has sections without the SEC_ALLOC bit
+        set (eg stabs sections).
+
 Thu Mar 23 15:07:08 1995  Jim Kingdon  (kingdon@lioth.cygnus.com)
 
        * breakpoint.c (bpstat_do_actions): For each element in the bpstat
index 241283b5bca9f4a2fa5188cc722f6a0d19951f43..ede2c41fef89078db4b60254a852cf6381210de1 100644 (file)
@@ -385,30 +385,27 @@ som_solib_add (arg_string, from_tty, target)
       status = target_read_memory (text_addr, buf, 4);
       if (status != 0)
        {
-         int old;
+         int old, new;
 
+         new = new_so->sections_end - new_so->sections;
          /* Add sections from the shared library to the core target.  */
          if (target->to_sections)
            {
              old = target->to_sections_end - target->to_sections;
              target->to_sections = (struct section_table *)
                xrealloc ((char *)target->to_sections,
-                         ((sizeof (struct section_table))
-                           * (old + bfd_count_sections (new_so->abfd))));
+                         ((sizeof (struct section_table)) * (old + new)));
            }
          else
            {
              old = 0;
              target->to_sections = (struct section_table *)
-               xmalloc ((sizeof (struct section_table))
-                        * bfd_count_sections (new_so->abfd));
+               xmalloc ((sizeof (struct section_table)) * new);
            }
-         target->to_sections_end = (target->to_sections
-                               + old + bfd_count_sections (new_so->abfd));
+         target->to_sections_end = (target->to_sections + old + new);
          memcpy ((char *)(target->to_sections + old),
                  new_so->sections,
-                 ((sizeof (struct section_table))
-                  * bfd_count_sections (new_so->abfd)));
+                 ((sizeof (struct section_table)) * new));
        }
     }