This is the mail archive of the gdb-patches@sources.redhat.com mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[patch - sort of] for 6.3 "int err;" not initialized insymfile.c/"load_section_callback (...)"


Hi, sorry, not exactly a patch, but it might help someone keep their hair
a little longer...

In symfile.c within "load_section_callback (...)", "int err;" is not
initialized and may not be set by "target_write_memory_partial (...)",
so therefore may appear to fail, although all is well; which was a minor
pain discovering. (causing an apparent failure when loading remote memory)

symfile.c:

...

/* Callback service function for generic_load (bfd_map_over_sections).  */

static void
load_section_callback (bfd *abfd, asection *asec, void *data)
{
  struct load_section_data *args = data;

  if (bfd_get_section_flags (abfd, asec) & SEC_LOAD)
    {
      bfd_size_type size = bfd_get_section_size (asec);
      if (size > 0)
    {
      char *buffer;
      struct cleanup *old_chain;
      CORE_ADDR lma = bfd_section_lma (abfd, asec) + args->load_offset;
      bfd_size_type block_size;
-     int err;
+     int err = 0;
      const char *sect_name = bfd_get_section_name (abfd, asec);
      bfd_size_type sent;

      if (download_write_size > 0 && size > download_write_size)
        block_size = download_write_size;
      else
        block_size = size;

      buffer = xmalloc (size);
      old_chain = make_cleanup (xfree, buffer);

      /* Is this really necessary?  I guess it gives the user something
         to look at during a long download.  */
      ui_out_message (uiout, 0, "Loading section %s, size 0x%s lma 0x%s\n",
              sect_name, paddr_nz (size), paddr_nz (lma));

      bfd_get_section_contents (abfd, asec, buffer, 0, size);

      sent = 0;
      do
        {
          int len;
          bfd_size_type this_transfer = size - sent;

          if (this_transfer >= block_size)
        this_transfer = block_size;
          len = target_write_memory_partial (lma, buffer,
                         this_transfer, &err);
          if (err)
        break;
...

---



Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]