* elf32-ppc.c (ppc_elf_relocate_section): Reorganize dynamic reloc
code a little. Comment on dynamic relocs against section symbols.
This commit is contained in:
parent
43d92c63df
commit
47388f4cc3
|
@ -1,3 +1,8 @@
|
||||||
|
2002-12-18 Alan Modra <amodra@bigpond.net.au>
|
||||||
|
|
||||||
|
* elf32-ppc.c (ppc_elf_relocate_section): Reorganize dynamic reloc
|
||||||
|
code a little. Comment on dynamic relocs against section symbols.
|
||||||
|
|
||||||
2002-12-17 Roger Sayle <roger@eyesopen.com>
|
2002-12-17 Roger Sayle <roger@eyesopen.com>
|
||||||
|
|
||||||
* configure.host (ia64-*-hpux*): Support 64 bit targets using
|
* configure.host (ia64-*-hpux*): Support 64 bit targets using
|
||||||
|
|
|
@ -3221,11 +3221,10 @@ ppc_elf_relocate_section (output_bfd, info, input_bfd, input_section,
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (r_type == R_PPC_ADDR32)
|
|
||||||
{
|
|
||||||
outrel.r_info = ELF32_R_INFO (0, R_PPC_RELATIVE);
|
|
||||||
outrel.r_addend = relocation + rel->r_addend;
|
outrel.r_addend = relocation + rel->r_addend;
|
||||||
}
|
|
||||||
|
if (r_type == R_PPC_ADDR32)
|
||||||
|
outrel.r_info = ELF32_R_INFO (0, R_PPC_RELATIVE);
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
long indx;
|
long indx;
|
||||||
|
@ -3239,7 +3238,8 @@ ppc_elf_relocate_section (output_bfd, info, input_bfd, input_section,
|
||||||
== bfd_link_hash_defweak));
|
== bfd_link_hash_defweak));
|
||||||
sec = h->root.u.def.section;
|
sec = h->root.u.def.section;
|
||||||
}
|
}
|
||||||
if (sec != NULL && bfd_is_abs_section (sec))
|
|
||||||
|
if (bfd_is_abs_section (sec))
|
||||||
indx = 0;
|
indx = 0;
|
||||||
else if (sec == NULL || sec->owner == NULL)
|
else if (sec == NULL || sec->owner == NULL)
|
||||||
{
|
{
|
||||||
|
@ -3250,6 +3250,11 @@ ppc_elf_relocate_section (output_bfd, info, input_bfd, input_section,
|
||||||
{
|
{
|
||||||
asection *osec;
|
asection *osec;
|
||||||
|
|
||||||
|
/* We are turning this relocation into one
|
||||||
|
against a section symbol. It would be
|
||||||
|
proper to subtract the symbol's value,
|
||||||
|
osec->vma, from the emitted reloc addend,
|
||||||
|
but ld.so expects buggy relocs. */
|
||||||
osec = sec->output_section;
|
osec = sec->output_section;
|
||||||
indx = elf_section_data (osec)->dynindx;
|
indx = elf_section_data (osec)->dynindx;
|
||||||
BFD_ASSERT (indx > 0);
|
BFD_ASSERT (indx > 0);
|
||||||
|
@ -3264,7 +3269,6 @@ ppc_elf_relocate_section (output_bfd, info, input_bfd, input_section,
|
||||||
}
|
}
|
||||||
|
|
||||||
outrel.r_info = ELF32_R_INFO (indx, r_type);
|
outrel.r_info = ELF32_R_INFO (indx, r_type);
|
||||||
outrel.r_addend = relocation + rel->r_addend;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue