* elflink.c (bfd_elf_final_link): Use d_ptr rather than d_val
authorAlan Modra <amodra@gmail.com>
Mon, 20 Oct 2008 10:50:37 +0000 (10:50 +0000)
committerAlan Modra <amodra@gmail.com>
Mon, 20 Oct 2008 10:50:37 +0000 (10:50 +0000)
where Elf_Internal_Dyn holds an address.

bfd/ChangeLog
bfd/elflink.c

index f0080bb344ccc46cb5593c44f0c4c2273e8238fc..9447166ea77a45afeb00b36e59b07daab5616e4a 100644 (file)
@@ -1,3 +1,8 @@
+2008-10-20  Alan Modra  <amodra@bigpond.net.au>
+
+       * elflink.c (bfd_elf_final_link): Use d_ptr rather than d_val
+       where Elf_Internal_Dyn holds an address.
+
 2008-10-10  Nathan Froyd  <froydnj@codesourcery.com>
 
        * elf32-ppc.c (ppc_elf_merge_obj_attributes): Merge
index d2dc17d37477332c5e34d34a38f64fcbac2adfff..d39ec685f6807e91f809dc986eb80badba8bf322 100644 (file)
@@ -10756,16 +10756,16 @@ bfd_elf_final_link (bfd *abfd, struct bfd_link_info *info)
                    && (h->root.type == bfd_link_hash_defined
                        || h->root.type == bfd_link_hash_defweak))
                  {
-                   dyn.d_un.d_val = h->root.u.def.value;
+                   dyn.d_un.d_ptr = h->root.u.def.value;
                    o = h->root.u.def.section;
                    if (o->output_section != NULL)
-                     dyn.d_un.d_val += (o->output_section->vma
+                     dyn.d_un.d_ptr += (o->output_section->vma
                                         + o->output_offset);
                    else
                      {
                        /* The symbol is imported from another shared
                           library and does not apply to this one.  */
-                       dyn.d_un.d_val = 0;
+                       dyn.d_un.d_ptr = 0;
                      }
                    break;
                  }
@@ -10844,6 +10844,7 @@ bfd_elf_final_link (bfd *abfd, struct bfd_link_info *info)
              else
                type = SHT_RELA;
              dyn.d_un.d_val = 0;
+             dyn.d_un.d_ptr = 0;
              for (i = 1; i < elf_numsections (abfd); i++)
                {
                  Elf_Internal_Shdr *hdr;
@@ -10856,9 +10857,9 @@ bfd_elf_final_link (bfd *abfd, struct bfd_link_info *info)
                        dyn.d_un.d_val += hdr->sh_size;
                      else
                        {
-                         if (dyn.d_un.d_val == 0
-                             || hdr->sh_addr < dyn.d_un.d_val)
-                           dyn.d_un.d_val = hdr->sh_addr;
+                         if (dyn.d_un.d_ptr == 0
+                             || hdr->sh_addr < dyn.d_un.d_ptr)
+                           dyn.d_un.d_ptr = hdr->sh_addr;
                        }
                    }
                }