* elf64-mips.c (mips_elf64_slurp_one_reloc_table): Generate

exactly three internal relocs per external reloc.  Set reloc_count
to the external reloc count.
This commit is contained in:
Alexandre Oliva 2002-11-06 21:56:05 +00:00
parent f8302a5753
commit 4917946930
2 changed files with 8 additions and 23 deletions

View File

@ -1,3 +1,9 @@
2002-11-06 Alexandre Oliva <aoliva@redhat.com>
* elf64-mips.c (mips_elf64_slurp_one_reloc_table): Generate
exactly three internal relocs per external reloc. Set reloc_count
to the external reloc count.
2002-11-06 Klee Dienes <kdienes@apple.com>
* coff-stgo32.c (stub_bytes): Mark as const.

View File

@ -2073,7 +2073,7 @@ mips_elf64_slurp_one_reloc_table (abfd, asect, symbols, rel_hdr)
rela.r_addend = 0;
}
/* Each entry represents up to three actual relocations. */
/* Each entry represents exactly three actual relocations. */
used_sym = false;
used_ssym = false;
@ -2096,27 +2096,6 @@ mips_elf64_slurp_one_reloc_table (abfd, asect, symbols, rel_hdr)
break;
}
if (type == R_MIPS_NONE)
{
/* There are no more relocations in this entry. If this
is the first entry, we need to generate a dummy
relocation so that the generic linker knows that
there has been a break in the sequence of relocations
applying to a particular address. */
if (ir == 0)
{
relent->sym_ptr_ptr = bfd_abs_section_ptr->symbol_ptr_ptr;
if ((abfd->flags & (EXEC_P | DYNAMIC)) == 0)
relent->address = rela.r_offset;
else
relent->address = rela.r_offset - asect->vma;
relent->addend = 0;
relent->howto = &howto_table[(int) R_MIPS_NONE];
++relent;
}
break;
}
/* Some types require symbols, whereas some do not. */
switch (type)
{
@ -2194,7 +2173,7 @@ mips_elf64_slurp_one_reloc_table (abfd, asect, symbols, rel_hdr)
}
}
asect->reloc_count += relent - relents;
asect->reloc_count += (relent - relents) / 3;
if (allocated != NULL)
free (allocated);