diff options
author | Alan Modra <amodra@gmail.com> | 2008-10-20 10:50:37 +0000 |
---|---|---|
committer | Alan Modra <amodra@gmail.com> | 2008-10-20 10:50:37 +0000 |
commit | bef264833bf5549bfef8e3495d514ff4a3b72e9f (patch) | |
tree | fdcddd4507f3ec7aa76e423804569953edd90871 /bfd/elflink.c | |
parent | 40e12b06fe729af7daa9ef2759828047d63d773d (diff) | |
download | gdb-bef264833bf5549bfef8e3495d514ff4a3b72e9f.zip gdb-bef264833bf5549bfef8e3495d514ff4a3b72e9f.tar.gz gdb-bef264833bf5549bfef8e3495d514ff4a3b72e9f.tar.bz2 |
* elflink.c (bfd_elf_final_link): Use d_ptr rather than d_val
where Elf_Internal_Dyn holds an address.
Diffstat (limited to 'bfd/elflink.c')
-rw-r--r-- | bfd/elflink.c | 13 |
1 files changed, 7 insertions, 6 deletions
diff --git a/bfd/elflink.c b/bfd/elflink.c index d2dc17d..d39ec68 100644 --- a/bfd/elflink.c +++ b/bfd/elflink.c @@ -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; } } } |