mirror of
https://sourceware.org/git/binutils-gdb.git
synced 2025-01-25 01:13:37 +08:00
* 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>
|
||||
|
||||
* 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;
|
||||
}
|
||||
|
||||
/* 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);
|
||||
|
Loading…
Reference in New Issue
Block a user