* elflink.c (bfd_elf_final_link): Use d_ptr rather than d_val

where Elf_Internal_Dyn holds an address.
This commit is contained in:
Alan Modra 2008-10-20 10:50:37 +00:00
parent 40e12b06fe
commit bef264833b
2 changed files with 12 additions and 6 deletions

View 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

View 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;
}
}
}