diff options
Diffstat (limited to 'toolchain/binutils/2.17.50.0.12/320-mips-elf-reloc-regression.patch')
-rw-r--r-- | toolchain/binutils/2.17.50.0.12/320-mips-elf-reloc-regression.patch | 68 |
1 files changed, 0 insertions, 68 deletions
diff --git a/toolchain/binutils/2.17.50.0.12/320-mips-elf-reloc-regression.patch b/toolchain/binutils/2.17.50.0.12/320-mips-elf-reloc-regression.patch deleted file mode 100644 index 902bb8836..000000000 --- a/toolchain/binutils/2.17.50.0.12/320-mips-elf-reloc-regression.patch +++ /dev/null @@ -1,68 +0,0 @@ -diff -ur binutils-2.17.50.0.12/bfd/elfxx-mips.c binutils-2.17.50.0.12-patched/bfd/elfxx-mips.c ---- binutils-2.17.50.0.12/bfd/elfxx-mips.c 2006-11-27 16:21:04.000000000 -0600 -+++ binutils-2.17.50.0.12-patched/bfd/elfxx-mips.c 2007-03-20 15:25:42.000000000 -0500 -@@ -3615,7 +3615,6 @@ - } - - /* We didn't find it. */ -- bfd_set_error (bfd_error_bad_value); - return NULL; - } - -@@ -7849,32 +7848,36 @@ - several relocations for the same address. In - that case, the R_MIPS_LO16 relocation may occur - as one of these. We permit a similar extension -- in general, as that is useful for GCC. */ -+ in general, as that is useful for GCC. -+ -+ In some cases GCC dead code elimination removes -+ the LO16 but keeps the corresponding HI16. */ - lo16_relocation = mips_elf_next_relocation (input_bfd, - lo16_type, - rel, relend); -- if (lo16_relocation == NULL) -- return FALSE; -- -- lo16_location = contents + lo16_relocation->r_offset; -+ if (lo16_relocation != NULL) -+ { -+ lo16_location = contents + lo16_relocation->r_offset; - -- /* Obtain the addend kept there. */ -- lo16_howto = MIPS_ELF_RTYPE_TO_HOWTO (input_bfd, -- lo16_type, FALSE); -- _bfd_mips16_elf_reloc_unshuffle (input_bfd, lo16_type, FALSE, -- lo16_location); -- l = mips_elf_obtain_contents (lo16_howto, lo16_relocation, -- input_bfd, contents); -- _bfd_mips16_elf_reloc_shuffle (input_bfd, lo16_type, FALSE, -- lo16_location); -- l &= lo16_howto->src_mask; -- l <<= lo16_howto->rightshift; -- l = _bfd_mips_elf_sign_extend (l, 16); -+ /* Obtain the addend kept there. */ -+ lo16_howto = MIPS_ELF_RTYPE_TO_HOWTO (input_bfd, -+ lo16_type, FALSE); -+ _bfd_mips16_elf_reloc_unshuffle (input_bfd, lo16_type, -+ FALSE, lo16_location); -+ l = mips_elf_obtain_contents (lo16_howto, -+ lo16_relocation, -+ input_bfd, contents); -+ _bfd_mips16_elf_reloc_shuffle (input_bfd, lo16_type, -+ FALSE, lo16_location); -+ l &= lo16_howto->src_mask; -+ l <<= lo16_howto->rightshift; -+ l = _bfd_mips_elf_sign_extend (l, 16); - -- addend <<= 16; -+ addend <<= 16; - -- /* Compute the combined addend. */ -- addend += l; -+ /* Compute the combined addend. */ -+ addend += l; -+ } - } - else - addend <<= howto->rightshift; |