* 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:
parent
f8302a5753
commit
4917946930
|
@ -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>
|
2002-11-06 Klee Dienes <kdienes@apple.com>
|
||||||
|
|
||||||
* coff-stgo32.c (stub_bytes): Mark as const.
|
* coff-stgo32.c (stub_bytes): Mark as const.
|
||||||
|
|
|
@ -2073,7 +2073,7 @@ mips_elf64_slurp_one_reloc_table (abfd, asect, symbols, rel_hdr)
|
||||||
rela.r_addend = 0;
|
rela.r_addend = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Each entry represents up to three actual relocations. */
|
/* Each entry represents exactly three actual relocations. */
|
||||||
|
|
||||||
used_sym = false;
|
used_sym = false;
|
||||||
used_ssym = false;
|
used_ssym = false;
|
||||||
|
@ -2096,27 +2096,6 @@ mips_elf64_slurp_one_reloc_table (abfd, asect, symbols, rel_hdr)
|
||||||
break;
|
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. */
|
/* Some types require symbols, whereas some do not. */
|
||||||
switch (type)
|
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)
|
if (allocated != NULL)
|
||||||
free (allocated);
|
free (allocated);
|
||||||
|
|
Loading…
Reference in New Issue