* target.h (struct target_section): Delete member bfd.
authorDoug Evans <dje@google.com>
Tue, 16 Jul 2013 20:41:55 +0000 (20:41 +0000)
committerDoug Evans <dje@google.com>
Tue, 16 Jul 2013 20:41:55 +0000 (20:41 +0000)
All users updated to use the_bfd_section->owner instead.
* exec.c (add_to_section_table): Assert bfd is expected value.
Remove initialization of target_section.bfd.
(remove_target_sections): Update.
(section_table_available_memory): Update.
(section_table_xfer_memory_partial): Update.
(print_section_info): Update.
(exec_set_section_address): Update.
* record-full.c (record_full_core_xfer_partial): Update.
* solib-svr4.c (svr4_relocate_section_addresses): Update.
* solib-target.c (solib_target_relocate_section_addresses): Update.
* symfile.c (build_section_addr_info_from_section_table): Update.
* target.c (memory_xfer_live_readonly_partial): Update.
(memory_xfer_partial_1): Update.

gdb/ChangeLog
gdb/exec.c
gdb/record-full.c
gdb/solib-svr4.c
gdb/solib-target.c
gdb/symfile.c
gdb/target.c
gdb/target.h

index 6b8c4557d0e68afa5907ef286fb62dfdf2a9d3dd..9bc9a33cf034db96958f47b9302d10b516dd46e4 100644 (file)
@@ -1,3 +1,21 @@
+2013-07-16  Doug Evans  <dje@google.com>
+
+       * target.h (struct target_section): Delete member bfd.
+       All users updated to use the_bfd_section->owner instead.
+       * exec.c (add_to_section_table): Assert bfd is expected value.
+       Remove initialization of target_section.bfd.
+       (remove_target_sections): Update.
+       (section_table_available_memory): Update.
+       (section_table_xfer_memory_partial): Update.
+       (print_section_info): Update.
+       (exec_set_section_address): Update.
+       * record-full.c (record_full_core_xfer_partial): Update.
+       * solib-svr4.c (svr4_relocate_section_addresses): Update.
+       * solib-target.c (solib_target_relocate_section_addresses): Update.
+       * symfile.c (build_section_addr_info_from_section_table): Update.
+       * target.c (memory_xfer_live_readonly_partial): Update.
+       (memory_xfer_partial_1): Update.
+
 2013-07-15  Edjunior Barbosa Machado  <emachado@linux.vnet.ibm.com>
 
        * ppc-linux-nat.c: Since the new PowerPC specific ptrace interface is
index e8605b961c83a8b06615d964dfd3f9dd32d20195..5b256ef01f1123bcbb5bcc663e4d660337242ab9 100644 (file)
@@ -328,6 +328,8 @@ add_to_section_table (bfd *abfd, struct bfd_section *asect,
   struct target_section **table_pp = (struct target_section **) table_pp_char;
   flagword aflag;
 
+  gdb_assert (abfd == asect->owner);
+
   /* Check the section flags, but do not discard zero-length sections, since
      some symbols may still be attached to this section.  For instance, we
      encountered on sparc-solaris 2.10 a shared library with an empty .bss
@@ -338,7 +340,6 @@ add_to_section_table (bfd *abfd, struct bfd_section *asect,
     return;
 
   (*table_pp)->key = NULL;
-  (*table_pp)->bfd = abfd;
   (*table_pp)->the_bfd_section = asect;
   (*table_pp)->addr = bfd_section_vma (abfd, asect);
   (*table_pp)->endaddr = (*table_pp)->addr + bfd_section_size (abfd, asect);
@@ -436,7 +437,7 @@ remove_target_sections (void *key, bfd *abfd)
 
   dest = table->sections;
   for (src = table->sections; src < table->sections_end; src++)
-    if (src->key != key || src->bfd != abfd)
+    if (src->key != key || src->the_bfd_section->owner != abfd)
       {
        /* Keep this section.  */
        if (dest < src)
@@ -479,7 +480,8 @@ section_table_available_memory (VEC(mem_range_s) *memory,
 
   for (p = sections; p < sections_end; p++)
     {
-      if ((bfd_get_section_flags (p->bfd, p->the_bfd_section)
+      if ((bfd_get_section_flags (p->the_bfd_section->owner,
+                                 p->the_bfd_section)
           & SEC_READONLY) == 0)
        continue;
 
@@ -523,7 +525,10 @@ section_table_xfer_memory_partial (gdb_byte *readbuf, const gdb_byte *writebuf,
 
   for (p = sections; p < sections_end; p++)
     {
-      if (section_name && strcmp (section_name, p->the_bfd_section->name) != 0)
+      struct bfd_section *asect = p->the_bfd_section;
+      bfd *abfd = asect->owner;
+
+      if (section_name && strcmp (section_name, asect->name) != 0)
        continue;               /* not the section we need.  */
       if (memaddr >= p->addr)
         {
@@ -531,11 +536,11 @@ section_table_xfer_memory_partial (gdb_byte *readbuf, const gdb_byte *writebuf,
            {
              /* Entire transfer is within this section.  */
              if (writebuf)
-               res = bfd_set_section_contents (p->bfd, p->the_bfd_section,
+               res = bfd_set_section_contents (abfd, asect,
                                                writebuf, memaddr - p->addr,
                                                len);
              else
-               res = bfd_get_section_contents (p->bfd, p->the_bfd_section,
+               res = bfd_get_section_contents (abfd, asect,
                                                readbuf, memaddr - p->addr,
                                                len);
              return (res != 0) ? len : 0;
@@ -550,11 +555,11 @@ section_table_xfer_memory_partial (gdb_byte *readbuf, const gdb_byte *writebuf,
              /* This section overlaps the transfer.  Just do half.  */
              len = p->endaddr - memaddr;
              if (writebuf)
-               res = bfd_set_section_contents (p->bfd, p->the_bfd_section,
+               res = bfd_set_section_contents (abfd, asect,
                                                writebuf, memaddr - p->addr,
                                                len);
              else
-               res = bfd_get_section_contents (p->bfd, p->the_bfd_section,
+               res = bfd_get_section_contents (abfd, asect,
                                                readbuf, memaddr - p->addr,
                                                len);
              return (res != 0) ? len : 0;
@@ -610,17 +615,18 @@ print_section_info (struct target_section_table *t, bfd *abfd)
 
       for (p = t->sections; p < t->sections_end; p++)
        {
-         asection *asect = p->the_bfd_section;
+         struct bfd_section *psect = p->the_bfd_section;
+         bfd *pbfd = psect->owner;
 
-         if ((bfd_get_section_flags (abfd, asect) & (SEC_ALLOC | SEC_LOAD))
+         if ((bfd_get_section_flags (pbfd, psect) & (SEC_ALLOC | SEC_LOAD))
              != (SEC_ALLOC | SEC_LOAD))
            continue;
 
-         if (bfd_get_section_vma (abfd, asect) <= abfd->start_address
-             && abfd->start_address < (bfd_get_section_vma (abfd, asect)
-                                       + bfd_get_section_size (asect)))
+         if (bfd_get_section_vma (pbfd, psect) <= abfd->start_address
+             && abfd->start_address < (bfd_get_section_vma (pbfd, psect)
+                                       + bfd_get_section_size (psect)))
            {
-             displacement = p->addr - bfd_get_section_vma (abfd, asect);
+             displacement = p->addr - bfd_get_section_vma (pbfd, psect);
              break;
            }
        }
@@ -636,6 +642,9 @@ print_section_info (struct target_section_table *t, bfd *abfd)
     }
   for (p = t->sections; p < t->sections_end; p++)
     {
+      struct bfd_section *psect = p->the_bfd_section;
+      bfd *pbfd = psect->owner;
+
       printf_filtered ("\t%s", hex_string_custom (p->addr, wid));
       printf_filtered (" - %s", hex_string_custom (p->endaddr, wid));
 
@@ -647,11 +656,10 @@ print_section_info (struct target_section_table *t, bfd *abfd)
       /* FIXME: i18n: Need to rewrite this sentence.  */
       if (info_verbose)
        printf_filtered (" @ %s",
-                        hex_string_custom (p->the_bfd_section->filepos, 8));
-      printf_filtered (" is %s", bfd_section_name (p->bfd,
-                                                  p->the_bfd_section));
-      if (p->bfd != abfd)
-       printf_filtered (" in %s", bfd_get_filename (p->bfd));
+                        hex_string_custom (psect->filepos, 8));
+      printf_filtered (" is %s", bfd_section_name (pbfd, psect));
+      if (pbfd != abfd)
+       printf_filtered (" in %s", bfd_get_filename (pbfd));
       printf_filtered ("\n");
     }
 }
@@ -720,7 +728,7 @@ exec_set_section_address (const char *filename, int index, CORE_ADDR address)
   table = current_target_sections;
   for (p = table->sections; p < table->sections_end; p++)
     {
-      if (filename_cmp (filename, p->bfd->filename) == 0
+      if (filename_cmp (filename, p->the_bfd_section->owner->filename) == 0
          && index == p->the_bfd_section->index)
        {
          p->endaddr += address - p->addr;
index 3a8d32637d260429a17f9fc62d643fb61ffb0c36..1c4e68bcd23bb762e71be779f85ae29b85e0a8c6 100644 (file)
@@ -2219,9 +2219,10 @@ record_full_core_xfer_partial (struct target_ops *ops,
                            xmalloc
                            (sizeof (struct record_full_core_buf_entry));
                          entry->p = p;
-                         if (!bfd_malloc_and_get_section (p->bfd,
-                                                          p->the_bfd_section,
-                                                          &entry->buf))
+                         if (!bfd_malloc_and_get_section
+                               (p->the_bfd_section->owner,
+                                p->the_bfd_section,
+                                &entry->buf))
                            {
                              xfree (entry);
                              return 0;
index 6f8d0efa8530af61d82967a898514dc936cb8b86..ccfd158a9482db77a0e54b8b2451efa29bfdd382 100644 (file)
@@ -2907,10 +2907,10 @@ static void
 svr4_relocate_section_addresses (struct so_list *so,
                                  struct target_section *sec)
 {
-  sec->addr    = svr4_truncate_ptr (sec->addr    + lm_addr_check (so,
-                                                                 sec->bfd));
-  sec->endaddr = svr4_truncate_ptr (sec->endaddr + lm_addr_check (so,
-                                                                 sec->bfd));
+  bfd *abfd = sec->the_bfd_section->owner;
+
+  sec->addr = svr4_truncate_ptr (sec->addr + lm_addr_check (so, abfd));
+  sec->endaddr = svr4_truncate_ptr (sec->endaddr + lm_addr_check (so, abfd));
 }
 \f
 
index 570827687fdf01282906cd5c06abf2adbc03998b..0b6b2d2ae8f4bf1a8b98c14da48f4f2650be1723 100644 (file)
@@ -456,8 +456,9 @@ Could not relocate shared library \"%s\": bad offsets"), so->so_name);
        }
     }
 
-  offset = so->lm_info->offsets->offsets[gdb_bfd_section_index (sec->bfd,
-                                                               sec->the_bfd_section)];
+  offset = so->lm_info->offsets->offsets[gdb_bfd_section_index
+                                        (sec->the_bfd_section->owner,
+                                         sec->the_bfd_section)];
   sec->addr += offset;
   sec->endaddr += offset;
 }
index c22f19b00744a3b30f21e010f096881d5aa67953..51291054a7cecbcade31d075946aa5c46c113d97 100644 (file)
@@ -229,15 +229,15 @@ build_section_addr_info_from_section_table (const struct target_section *start,
 
   for (stp = start, oidx = 0; stp != end; stp++)
     {
-      if (bfd_get_section_flags (stp->bfd,
-                                stp->the_bfd_section) & (SEC_ALLOC | SEC_LOAD)
+      struct bfd_section *asect = stp->the_bfd_section;
+      bfd *abfd = asect->owner;
+
+      if (bfd_get_section_flags (abfd, asect) & (SEC_ALLOC | SEC_LOAD)
          && oidx < end - start)
        {
          sap->other[oidx].addr = stp->addr;
-         sap->other[oidx].name
-           = xstrdup (bfd_section_name (stp->bfd, stp->the_bfd_section));
-         sap->other[oidx].sectindex
-           = gdb_bfd_section_index (stp->bfd, stp->the_bfd_section);
+         sap->other[oidx].name = xstrdup (bfd_section_name (abfd, asect));
+         sap->other[oidx].sectindex = gdb_bfd_section_index (abfd, asect);
          oidx++;
        }
     }
index 920f9160530879395cd3ae50c277f9f6edf4ae79..3acd6c45fad61a57af3e9fd14e35f1a06c28612c 100644 (file)
@@ -1396,7 +1396,8 @@ memory_xfer_live_readonly_partial (struct target_ops *ops,
 
   secp = target_section_by_addr (ops, memaddr);
   if (secp != NULL
-      && (bfd_get_section_flags (secp->bfd, secp->the_bfd_section)
+      && (bfd_get_section_flags (secp->the_bfd_section->owner,
+                                secp->the_bfd_section)
          & SEC_READONLY))
     {
       struct target_section *p;
@@ -1475,7 +1476,8 @@ memory_xfer_partial_1 (struct target_ops *ops, enum target_object object,
 
       secp = target_section_by_addr (ops, memaddr);
       if (secp != NULL
-         && (bfd_get_section_flags (secp->bfd, secp->the_bfd_section)
+         && (bfd_get_section_flags (secp->the_bfd_section->owner,
+                                    secp->the_bfd_section)
              & SEC_READONLY))
        {
          table = target_get_section_table (ops);
index 1bf716e5d51790a1508d66276a7ad954d80b0e99..2ba85d9f70d99beb6a770c480d52d618c947ff6f 100644 (file)
@@ -1898,8 +1898,6 @@ struct target_section
        just some convenient pointer that can be used to differentiate
        the BFDs.  These are managed only by convention.  */
     void *key;
-
-    bfd *bfd;                  /* BFD file pointer */
   };
 
 /* Holds an array of target sections.  Defined by [SECTIONS..SECTIONS_END[.  */