* bfd/elfxx-mips.c (mips_elf_create_dynamic_relocation): Treat

forced-local symbols like other locals.  Don't create relocations
	against STN_UNDEF in irix objects.
This commit is contained in:
Richard Sandiford
2003-07-09 11:51:53 +00:00
parent d2fba50dd9
commit fdd0740558
2 changed files with 16 additions and 6 deletions

View File

@ -1,3 +1,9 @@
2003-07-09 Richard Sandiford <rsandifo@redhat.com>
* bfd/elfxx-mips.c (mips_elf_create_dynamic_relocation): Treat
forced-local symbols like other locals. Don't create relocations
against STN_UNDEF in irix objects.
2003-07-09 Richard Sandiford <rsandifo@redhat.com> 2003-07-09 Richard Sandiford <rsandifo@redhat.com>
* bfd/elfxx-mips.c (mips_elf_create_dynamic_relocation): In SGI- * bfd/elfxx-mips.c (mips_elf_create_dynamic_relocation): In SGI-

View File

@ -3893,13 +3893,12 @@ mips_elf_create_dynamic_relocation (output_bfd, info, rel, h, sec,
in the relocation. */ in the relocation. */
if (h != NULL if (h != NULL
&& (! info->symbolic || (h->root.elf_link_hash_flags && (! info->symbolic || (h->root.elf_link_hash_flags
& ELF_LINK_HASH_DEF_REGULAR) == 0)) & ELF_LINK_HASH_DEF_REGULAR) == 0)
{
indx = h->root.dynindx;
/* h->root.dynindx may be -1 if this symbol was marked to /* h->root.dynindx may be -1 if this symbol was marked to
become local. */ become local. */
if (indx == -1) && h->root.dynindx != -1)
indx = 0; {
indx = h->root.dynindx;
if (SGI_COMPAT (output_bfd)) if (SGI_COMPAT (output_bfd))
defined_p = ((h->root.elf_link_hash_flags defined_p = ((h->root.elf_link_hash_flags
& ELF_LINK_HASH_DEF_REGULAR) != 0); & ELF_LINK_HASH_DEF_REGULAR) != 0);
@ -3937,7 +3936,12 @@ mips_elf_create_dynamic_relocation (output_bfd, info, rel, h, sec,
section-relative relocations. It's not like they're section-relative relocations. It's not like they're
useful, after all. This should be a bit more efficient useful, after all. This should be a bit more efficient
as well. */ as well. */
indx = 0; /* ??? Although this behavior is compatible with glibc's ld.so,
the ABI says that relocations against STN_UNDEF should have
a symbol value of 0. Irix rld honors this, so relocations
against STN_UNDEF have no effect. */
if (!SGI_COMPAT (output_bfd))
indx = 0;
defined_p = TRUE; defined_p = TRUE;
} }