* symfile.c (alloc_section_addr_info): Update header. Don't set
authorTom Tromey <tromey@redhat.com>
Thu, 21 Mar 2013 16:18:48 +0000 (16:18 +0000)
committerTom Tromey <tromey@redhat.com>
Thu, 21 Mar 2013 16:18:48 +0000 (16:18 +0000)
'num_sections' field.
(build_section_addr_info_from_section_table): Set 'num_sections'.
(build_section_addr_info_from_bfd): Likewise.
(build_section_addr_info_from_objfile): Remove dead loop
condition.
(free_section_addr_info): Unconditionally call xfree.
(relative_addr_info_to_section_offsets, addrs_section_sort)
(addr_info_make_relative, syms_from_objfile_1): Remove dead loop
condition.
(syms_from_objfile_1): Remove dead 'if' condition.  Check
'num_sections'.
(add_symbol_file_command): Set 'num_sections'.
* symfile-mem.c (symbol_file_add_from_memory): Set
'num_sections'.
* somread.c (som_symfile_offsets): Remove dead loop condition.
* machoread.c (macho_symfile_offsets): Remove dead 'if'.
* jit.c (jit_bfd_try_read_symtab): Set 'num_sections'.

gdb/ChangeLog
gdb/jit.c
gdb/machoread.c
gdb/somread.c
gdb/symfile-mem.c
gdb/symfile.c

index b9a6df6db2d89005dae072d219e61153592c2ad3..ee3f8c4d99eb368cf153752e00bd672bbe7c4d4f 100644 (file)
@@ -1,3 +1,24 @@
+2013-03-21  Tom Tromey  <tromey@redhat.com>
+
+       * symfile.c (alloc_section_addr_info): Update header.  Don't set
+       'num_sections' field.
+       (build_section_addr_info_from_section_table): Set 'num_sections'.
+       (build_section_addr_info_from_bfd): Likewise.
+       (build_section_addr_info_from_objfile): Remove dead loop
+       condition.
+       (free_section_addr_info): Unconditionally call xfree.
+       (relative_addr_info_to_section_offsets, addrs_section_sort)
+       (addr_info_make_relative, syms_from_objfile_1): Remove dead loop
+       condition.
+       (syms_from_objfile_1): Remove dead 'if' condition.  Check
+       'num_sections'.
+       (add_symbol_file_command): Set 'num_sections'.
+       * symfile-mem.c (symbol_file_add_from_memory): Set
+       'num_sections'.
+       * somread.c (som_symfile_offsets): Remove dead loop condition.
+       * machoread.c (macho_symfile_offsets): Remove dead 'if'.
+       * jit.c (jit_bfd_try_read_symtab): Set 'num_sections'.
+
 2013-03-21  Tom Tromey  <tromey@redhat.com>
 
        * tracepoint.h (decode_agent_options): Add 'trace_string'
index b5f6ff455f4c758e9d276fb1ba044ed0838ecdc6..2bb991244c4aa3ea9794b5364522d7e6f5c37688 100644 (file)
--- a/gdb/jit.c
+++ b/gdb/jit.c
@@ -923,6 +923,7 @@ JITed symbol file is not an object file, ignoring it.\n"));
         sai->other[i].sectindex = sec->index;
         ++i;
       }
+  sai->num_sections = i;
 
   /* This call does not take ownership of SAI.  */
   make_cleanup_bfd_unref (nbfd);
index fe77a2dccbfc3d5969615609cfd7daf089a7f66d..eff8bdf054ec76721818e46fbeb202dee19b50b7 100644 (file)
@@ -991,9 +991,6 @@ macho_symfile_offsets (struct objfile *objfile,
 
   for (i = 0; i < addrs->num_sections; i++)
     {
-      if (addrs->other[i].name == NULL)
-       continue;
-
       ALL_OBJFILE_OSECTIONS (objfile, osect)
        {
          const char *bfd_sect_name = osect->the_bfd_section->name;
index d9d3e7bb72b4bb57724b099135ebdbf6d4f5e52f..0aa3dce686e70500341ec180fcc46435093e6ea4 100644 (file)
@@ -394,7 +394,7 @@ som_symfile_offsets (struct objfile *objfile, struct section_addr_info *addrs)
       /* Note: Here is OK to compare with ".text" because this is the
          name that gdb itself gives to that section, not the SOM
          name.  */
-      for (i = 0; i < addrs->num_sections && addrs->other[i].name; i++)
+      for (i = 0; i < addrs->num_sections; i++)
        if (strcmp (addrs->other[i].name, ".text") == 0)
          break;
       text_addr = addrs->other[i].addr;
index bb9bbd87417d0a13c8bd58e2583e9abff4c6f725..e148d09a8e00d1bc7257dc9f3342446250a62729 100644 (file)
@@ -127,6 +127,7 @@ symbol_file_add_from_memory (struct bfd *templ, CORE_ADDR addr, char *name,
        sai->other[i].sectindex = sec->index;
        ++i;
       }
+  sai->num_sections = i;
 
   objf = symbol_file_add_from_bfd (nbfd, from_tty ? SYMFILE_VERBOSE : 0,
                                    sai, OBJF_SHARED, NULL);
index 2abe3f8c7dc3b675e070edf77cdf77ba41c09437..d8fabb1082bddd069adfa4d00c3b71899a4953f1 100644 (file)
@@ -197,7 +197,9 @@ find_lowest_section (bfd *abfd, asection *sect, void *obj)
     *lowest = sect;
 }
 
-/* Create a new section_addr_info, with room for NUM_SECTIONS.  */
+/* Create a new section_addr_info, with room for NUM_SECTIONS.  The
+   new object's 'num_sections' field is set to 0; it must be updated
+   by the caller.  */
 
 struct section_addr_info *
 alloc_section_addr_info (size_t num_sections)
@@ -209,7 +211,6 @@ alloc_section_addr_info (size_t num_sections)
          +  sizeof (struct other_sections) * (num_sections - 1));
   sap = (struct section_addr_info *) xmalloc (size);
   memset (sap, 0, size);
-  sap->num_sections = num_sections;
 
   return sap;
 }
@@ -241,6 +242,8 @@ build_section_addr_info_from_section_table (const struct target_section *start,
        }
     }
 
+  sap->num_sections = oidx;
+
   return sap;
 }
 
@@ -262,6 +265,9 @@ build_section_addr_info_from_bfd (bfd *abfd)
        sap->other[i].sectindex = sec->index;
        i++;
       }
+
+  sap->num_sections = i;
+
   return sap;
 }
 
@@ -277,7 +283,7 @@ build_section_addr_info_from_objfile (const struct objfile *objfile)
      gdb_assert (objfile->num_sections == bfd_count_sections (objfile->obfd));
      */
   sap = build_section_addr_info_from_bfd (objfile->obfd);
-  for (i = 0; i < sap->num_sections && sap->other[i].name; i++)
+  for (i = 0; i < sap->num_sections; i++)
     {
       int sectindex = sap->other[i].sectindex;
 
@@ -294,8 +300,7 @@ free_section_addr_info (struct section_addr_info *sap)
   int idx;
 
   for (idx = 0; idx < sap->num_sections; idx++)
-    if (sap->other[idx].name)
-      xfree (sap->other[idx].name);
+    xfree (sap->other[idx].name);
   xfree (sap);
 }
 
@@ -446,7 +451,7 @@ relative_addr_info_to_section_offsets (struct section_offsets *section_offsets,
   memset (section_offsets, 0, SIZEOF_N_SECTION_OFFSETS (num_sections));
 
   /* Now calculate offsets for section that were specified by the caller.  */
-  for (i = 0; i < addrs->num_sections && addrs->other[i].name; i++)
+  for (i = 0; i < addrs->num_sections; i++)
     {
       struct other_sections *osp;
 
@@ -506,7 +511,7 @@ addrs_section_sort (struct section_addr_info *addrs)
 
   /* `+ 1' for the NULL terminator.  */
   array = xmalloc (sizeof (*array) * (addrs->num_sections + 1));
-  for (i = 0; i < addrs->num_sections && addrs->other[i].name; i++)
+  for (i = 0; i < addrs->num_sections; i++)
     array[i] = &addrs->other[i];
   array[i] = NULL;
 
@@ -605,7 +610,7 @@ addr_info_make_relative (struct section_addr_info *addrs, bfd *abfd)
      (the loadable section directly below it in memory).
      this_offset = lower_offset = lower_addr - lower_orig_addr */
 
-  for (i = 0; i < addrs->num_sections && addrs->other[i].name; i++)
+  for (i = 0; i < addrs->num_sections; i++)
     {
       struct other_sections *sect = addrs_to_abfd_addrs[i];
 
@@ -997,7 +1002,7 @@ syms_from_objfile_1 (struct objfile *objfile,
 
      We no longer warn if the lowest section is not a text segment (as
      happens for the PA64 port.  */
-  if (addrs && addrs->other[0].name)
+  if (addrs && addrs->num_sections > 0)
     addr_info_make_relative (addrs, objfile->obfd);
 
   /* Initialize symbol reading routines for this objfile, allow complaints to
@@ -2341,6 +2346,7 @@ add_symbol_file_command (char *args, int from_tty)
         At this point, we don't know what file type this is,
         so we can't determine what section names are valid.  */
     }
+  section_addrs->num_sections = sec_num;
 
   if (from_tty && (!query ("%s", "")))
     error (_("Not confirmed."));