* elf64-mips.c (mips_elf64_be_swap_reloca_out): Handle type2 and type3.

(mips_elf64_final_gp): Don't make up gp value.
	* elfn32-mips.c (mips_elf_final_gp): Likewise.
	* elfxx-mips.c (_bfd_mips_elf_final_link): Always create
	.MIPS.options/.options section.
This commit is contained in:
Stan Cox
2002-09-18 01:38:20 +00:00
parent 419586656d
commit a902ee94b7
4 changed files with 17 additions and 4 deletions

View File

@ -1,3 +1,11 @@
2002-09-17 Stan Cox <scox@redhat.com>
* elf64-mips.c (mips_elf64_be_swap_reloca_out): Handle type2 and type3.
(mips_elf64_final_gp): Don't make up gp value.
* elfn32-mips.c (mips_elf_final_gp): Likewise.
* elfxx-mips.c (_bfd_mips_elf_final_link): Always create
.MIPS.options/.options section.
2002-09-17 David O'Brien <obrien@FreeBSD.org> 2002-09-17 David O'Brien <obrien@FreeBSD.org>
* elf32-i386-fbsd.c: Always label using the EI_OSABI method. * elf32-i386-fbsd.c: Always label using the EI_OSABI method.

View File

@ -1337,13 +1337,15 @@ mips_elf64_be_swap_reloc_out (abfd, src, dst)
mirel.r_offset = src[0].r_offset; mirel.r_offset = src[0].r_offset;
BFD_ASSERT(src[0].r_offset == src[1].r_offset); BFD_ASSERT(src[0].r_offset == src[1].r_offset);
#if 0
BFD_ASSERT(src[0].r_offset == src[2].r_offset); BFD_ASSERT(src[0].r_offset == src[2].r_offset);
#endif
mirel.r_type = ELF64_MIPS_R_TYPE (src[0].r_info); mirel.r_type = ELF64_MIPS_R_TYPE (src[0].r_info);
mirel.r_sym = ELF64_R_SYM (src[0].r_info); mirel.r_sym = ELF64_R_SYM (src[0].r_info);
mirel.r_type2 = ELF64_MIPS_R_TYPE2 (src[1].r_info); mirel.r_type2 = ELF64_MIPS_R_TYPE (src[1].r_info);
mirel.r_ssym = ELF64_MIPS_R_SSYM (src[1].r_info); mirel.r_ssym = ELF64_MIPS_R_SSYM (src[1].r_info);
mirel.r_type3 = ELF64_MIPS_R_TYPE3 (src[2].r_info); mirel.r_type3 = ELF64_MIPS_R_TYPE (src[2].r_info);
mips_elf64_swap_reloc_out (abfd, &mirel, mips_elf64_swap_reloc_out (abfd, &mirel,
(Elf64_Mips_External_Rel *) dst); (Elf64_Mips_External_Rel *) dst);
@ -1525,7 +1527,7 @@ mips_elf64_final_gp (output_bfd, symbol, relocateable, error_message, pgp)
if (relocateable) if (relocateable)
{ {
/* Make up a value. */ /* Make up a value. */
*pgp = symbol->section->output_section->vma + 0x4000; *pgp = symbol->section->output_section->vma /*+ 0x4000*/;
_bfd_set_gp_value (output_bfd, *pgp); _bfd_set_gp_value (output_bfd, *pgp);
} }
else if (!mips_elf64_assign_gp (output_bfd, pgp)) else if (!mips_elf64_assign_gp (output_bfd, pgp))

View File

@ -1505,7 +1505,7 @@ mips_elf_final_gp (output_bfd, symbol, relocateable, error_message, pgp)
if (relocateable) if (relocateable)
{ {
/* Make up a value. */ /* Make up a value. */
*pgp = symbol->section->output_section->vma + 0x4000; *pgp = symbol->section->output_section->vma /*+ 0x4000*/;
_bfd_set_gp_value (output_bfd, *pgp); _bfd_set_gp_value (output_bfd, *pgp);
} }
else if (!mips_elf_assign_gp (output_bfd, pgp)) else if (!mips_elf_assign_gp (output_bfd, pgp))

View File

@ -6984,6 +6984,8 @@ _bfd_mips_elf_final_link (abfd, info)
<= g->global_gotno); <= g->global_gotno);
} }
#if 0
/* We want to set the GP value for ld -r. */
/* On IRIX5, we omit the .options section. On IRIX6, however, we /* On IRIX5, we omit the .options section. On IRIX6, however, we
include it, even though we don't process it quite right. (Some include it, even though we don't process it quite right. (Some
entries are supposed to be merged.) Empirically, we seem to be entries are supposed to be merged.) Empirically, we seem to be
@ -7021,6 +7023,7 @@ _bfd_mips_elf_final_link (abfd, info)
break; break;
} }
} }
#endif
/* Get a value for the GP register. */ /* Get a value for the GP register. */
if (elf_gp (abfd) == 0) if (elf_gp (abfd) == 0)