* elf32-sparc.c (elf32_sparc_relocate_section): Don't emit dynamic
PC relative relocs against hidden symbols. * elf64-sparc.c (sparc64_elf_relocate_section): Likewise.
This commit is contained in:
parent
5f279fa6a9
commit
b88a866a5a
3 changed files with 30 additions and 1 deletions
|
@ -1,3 +1,9 @@
|
||||||
|
2002-04-03 Jakub Jelinek <jakub@redhat.com>
|
||||||
|
|
||||||
|
* elf32-sparc.c (elf32_sparc_relocate_section): Don't emit dynamic
|
||||||
|
PC relative relocs against hidden symbols.
|
||||||
|
* elf64-sparc.c (sparc64_elf_relocate_section): Likewise.
|
||||||
|
|
||||||
2002-04-03 Alan Modra <amodra@bigpond.net.au>
|
2002-04-03 Alan Modra <amodra@bigpond.net.au>
|
||||||
|
|
||||||
* elf.c (_bfd_elf_make_section_from_shdr): When setting section
|
* elf.c (_bfd_elf_make_section_from_shdr): When setting section
|
||||||
|
|
|
@ -1467,6 +1467,17 @@ elf32_sparc_relocate_section (output_bfd, info, input_bfd, input_section,
|
||||||
if (!(outrel.r_offset & 3))
|
if (!(outrel.r_offset & 3))
|
||||||
r_type = R_SPARC_32;
|
r_type = R_SPARC_32;
|
||||||
break;
|
break;
|
||||||
|
case R_SPARC_DISP8:
|
||||||
|
case R_SPARC_DISP16:
|
||||||
|
case R_SPARC_DISP32:
|
||||||
|
/* If the symbol is not dynamic, we should not keep
|
||||||
|
a dynamic relocation. But an .rela.* slot has been
|
||||||
|
allocated for it, output R_SPARC_NONE.
|
||||||
|
FIXME: Add code tracking needed dynamic relocs as
|
||||||
|
e.g. i386 has. */
|
||||||
|
if (h->dynindx == -1)
|
||||||
|
skip = true, relocate = true;
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (skip)
|
if (skip)
|
||||||
|
|
|
@ -2053,11 +2053,11 @@ sparc64_elf_relocate_section (output_bfd, info, input_bfd, input_section,
|
||||||
case R_SPARC_DISP8:
|
case R_SPARC_DISP8:
|
||||||
case R_SPARC_DISP16:
|
case R_SPARC_DISP16:
|
||||||
case R_SPARC_DISP32:
|
case R_SPARC_DISP32:
|
||||||
|
case R_SPARC_DISP64:
|
||||||
case R_SPARC_WDISP30:
|
case R_SPARC_WDISP30:
|
||||||
case R_SPARC_WDISP22:
|
case R_SPARC_WDISP22:
|
||||||
case R_SPARC_WDISP19:
|
case R_SPARC_WDISP19:
|
||||||
case R_SPARC_WDISP16:
|
case R_SPARC_WDISP16:
|
||||||
case R_SPARC_DISP64:
|
|
||||||
if (h == NULL)
|
if (h == NULL)
|
||||||
break;
|
break;
|
||||||
/* Fall through. */
|
/* Fall through. */
|
||||||
|
@ -2146,6 +2146,18 @@ sparc64_elf_relocate_section (output_bfd, info, input_bfd, input_section,
|
||||||
case R_SPARC_UA64:
|
case R_SPARC_UA64:
|
||||||
if (!(outrel.r_offset & 7)) r_type = R_SPARC_64;
|
if (!(outrel.r_offset & 7)) r_type = R_SPARC_64;
|
||||||
break;
|
break;
|
||||||
|
case R_SPARC_DISP8:
|
||||||
|
case R_SPARC_DISP16:
|
||||||
|
case R_SPARC_DISP32:
|
||||||
|
case R_SPARC_DISP64:
|
||||||
|
/* If the symbol is not dynamic, we should not keep
|
||||||
|
a dynamic relocation. But an .rela.* slot has been
|
||||||
|
allocated for it, output R_SPARC_NONE.
|
||||||
|
FIXME: Add code tracking needed dynamic relocs as
|
||||||
|
e.g. i386 has. */
|
||||||
|
if (h->dynindx == -1)
|
||||||
|
skip = true, relocate = true;
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (skip)
|
if (skip)
|
||||||
|
|
Loading…
Add table
Reference in a new issue