This is the mail archive of the binutils@sources.redhat.com mailing list for the binutils project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [PATCH] Support for MIPS16 HI16/LO16 relocations


Maciej W. Rozycki wrote:
[snip]
> bfd/:
> 2005-02-15  Nigel Stephens  <nigel@mips.com>
>             Maciej W. Rozycki  <macro@mips.com>
> 
> 	* elf32-mips.c (elf_mips16_howto_table_rel): New array for MIPS16 
> 	reloc howtos.  Add R_MIPS16_HI16 and R_MIPS16_LO16 relocs and 
> 	R_MIPS16_GOT16 and R_MIPS16_CALL16 placeholders.
> 	(elf_mips16_jump_howto): Move into elf_mips16_howto_table_rel.
> 	(elf_mips16_gprel_howto): Likewise.  Redefine src_mask and 
> 	dst_mask.
> 	(mips16_gprel_reloc): Remove bit shuffling; call 
> 	_bfd_mips16_elf_reloc_unshuffle(), _bfd_mips_elf_gprel16_with_gp() 
> 	and _bfd_mips16_elf_reloc_shuffle() instead.
> 	(mips16_reloc_map): New reloc map for MIPS16 relocs.
> 	(bfd_elf32_bfd_reloc_type_lookup): Use mips16_reloc_map for MIPS16 
> 	relocs.
> 	(mips_elf32_rtype_to_howto): Fetch MIPS16 howtos from 
> 	elf_mips16_howto_table_rel.
> 	* elf64-mips.c (mips16_elf64_howto_table_rel): New array for 
> 	MIPS16 REL reloc howtos.  Add R_MIPS16_HI16 and R_MIPS16_LO16 
> 	relocs and R_MIPS16_GOT16 and R_MIPS16_CALL16 placeholders.
> 	(elf_mips16_jump_howto): Move into mips16_elf64_howto_table_rel.
> 	(elf_mips16_gprel_howto): Likewise.  Redefine src_mask and 
> 	dst_mask.
> 	(mips16_elf64_howto_table_rela): New array for MIPS16 RELA 
> 	reloc howtos.  Add R_MIPS16_26, R_MIPS16_GPREL, R_MIPS16_HI16 and 
> 	R_MIPS16_LO16 relocs and R_MIPS16_GOT16 and R_MIPS16_CALL16 
> 	placeholders.
> 	(mips16_gprel_reloc): Remove bit shuffling; call 
> 	_bfd_mips16_elf_reloc_unshuffle(), _bfd_mips_elf_gprel16_with_gp()
> 	and _bfd_mips16_elf_reloc_shuffle() instead.
> 	(mips16_reloc_map): New reloc map for MIPS16 relocs.
> 	(bfd_elf64_bfd_reloc_type_lookup): Use mips16_reloc_map for MIPS16 
> 	relocs.
> 	(mips_elf64_rtype_to_howto): Fetch MIPS16 howtos from 
> 	mips16_elf64_howto_table_rela or mips16_elf64_howto_table_rel.
> 	* elfn32-mips.c (elf_mips16_howto_table_rel): New array for MIPS16 
> 	REL reloc howtos.  Add R_MIPS16_HI16 and R_MIPS16_LO16 relocs and 
> 	R_MIPS16_GOT16 and R_MIPS16_CALL16 placeholders.
> 	(elf_mips16_jump_howto): Move into elf_mips16_howto_table_rel.
> 	(elf_mips16_gprel_howto): Likewise.  Redefine src_mask and 
> 	dst_mask.
> 	(mips16_gprel_reloc): Remove bit shuffling; call 
> 	_bfd_mips16_elf_reloc_unshuffle(), _bfd_mips_elf_gprel16_with_gp() 
> 	and _bfd_mips16_elf_reloc_shuffle() instead.
> 	(mips16_reloc_map): New reloc map for MIPS16 relocs.
> 	(bfd_elf32_bfd_reloc_type_lookup): Use mips16_reloc_map for MIPS16 
> 	relocs.
> 	(mips_elf_n32_rtype_to_howto): Fetch MIPS16 howtos from 
> 	elf_mips16_howto_table_rela or elf_mips16_howto_table_rel.
> 	* elfxx-mips.c (_bfd_mips16_elf_reloc_unshuffle): New function to 
> 	handle bit shuffling for MIPS16 relocs.
> 	(_bfd_mips16_elf_reloc_shuffle): Likewise.
> 	(_bfd_mips_elf_lo16_reloc): Use _bfd_mips16_elf_reloc_unshuffle() 
> 	and _bfd_mips16_elf_reloc_shuffle().
> 	(_bfd_mips_elf_generic_reloc): Likewise.
> 	(mips_elf_calculate_relocation): Likewise.  Handle R_MIPS16_HI16 
> 	and R_MIPS16_LO16.
> 	(mips_elf_obtain_contents): Remove bit shuffling.
> 	(mips_elf_perform_relocation): Likewise; call 
> 	_bfd_mips16_elf_reloc_unshuffle() and _bfd_mips16_elf_reloc_shuffle() 
> 	instead.
> 	(_bfd_mips_elf_relocate_section): Likewise.  Handle R_MIPS16_HI16 
> 	and R_MIPS16_LO16.
> 	* elfxx-mips.h (_bfd_mips16_elf_reloc_unshuffle): Declare.
> 	(_bfd_mips16_elf_reloc_shuffle): Likewise.
> 	* reloc.c (BFD_RELOC_MIPS16_HI16): New reloc.
> 	(BFD_RELOC_MIPS16_HI16_S): Likewise.
> 	(BFD_RELOC_MIPS16_LO16): Likewise.
> 	* bfd-in2.h: Regenerate.
> 	* libbfd.h: Regenerate.
> 
> gas/:
> 2005-02-15  Nigel Stephens  <nigel@mips.com>
>             Maciej W. Rozycki  <macro@mips.com>
> 
> 	* config/tc-mips.c (reloc_needs_lo_p): Handle 
> 	BFD_RELOC_MIPS16_HI16_S.
> 	(fixup_has_matching_lo_p): Handle BFD_RELOC_MIPS16_LO16.
> 	(append_insn): Add BFD_RELOC_MIPS16_GPREL, BFD_RELOC_MIPS16_HI16_S 
> 	and BFD_RELOC_MIPS16_LO16 to relocs to suppress overflow 
> 	complaints on.
> 	(mips16_ip): Resolve BFD_RELOC_MIPS16_HI16_S, 
> 	BFD_RELOC_MIPS16_HI16 and BFD_RELOC_MIPS16_LO16 for constants.  
> 	Call my_getSmallExpression() to parse percent operators.
> 	(percent_op_match, mips_percent_op): Separate definitions.
> 	(mips16_percent_op): Define percent operators for the MIPS16 mode.
> 	(parse_relocation): Handle the MIPS16 mode using 
> 	mips16_percent_op.
> 	(md_apply_fix3): Handle BFD_RELOC_MIPS16_HI16, 
> 	BFD_RELOC_MIPS16_HI16_S and BFD_RELOC_MIPS16_LO16.
> 
> gas/testsuite/:
> 2005-02-15  Nigel Stephens  <nigel@mips.com>
>             Maciej W. Rozycki  <macro@mips.com>
> 
> 	* gas/mips/mips16-hilo.d: New test for the R_MIPS16_HI16 and 
> 	R_MIPS16_LO16 relocs.
> 	* gas/mips/mips16-hilo-n32.d: Likewise, for the n32 ABI.
> 	* gas/mips/mips16-hilo.s: Source for the new tests.
> 	* gas/mips/mips.exp: Run the new tests.
> 
> include/:
> 2005-02-15  Nigel Stephens  <nigel@mips.com>
>             Maciej W. Rozycki  <macro@mips.com>
> 
> 	* elf/mips.h (R_MIPS16_GOT16): New reloc code.
> 	(R_MIPS16_CALL16): Likewise.
> 	(R_MIPS16_HI16): Likewise.
> 	(R_MIPS16_LO16): Likewise.
> 	(R_MIPS16_min): New fake reloc code.
> 	(R_MIPS16_max): Likewise.
> 
> ld/testsuite/:
> 2005-02-15  Nigel Stephens  <nigel@mips.com>
>             Maciej W. Rozycki  <macro@mips.com>
> 
> 	* ld-mips-elf/mips16-hilo.d: New test for the R_MIPS16_HI16 and
> 	R_MIPS16_LO16 relocs.
> 	* ld-mips-elf/mips16-hilo-n32.d: Likewise, for the n32 ABI.
> 	* ld-mips-elf/mips16-hilo.s: Auxiliary source for the new tests.
> 	* ld-mips-elf/mips-elf.exp: Run the new tests.
> 
>  OK to apply?

Ok.


Thiemo


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]