aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--bfd/ChangeLog5
-rw-r--r--bfd/elfxx-mips.c5
2 files changed, 9 insertions, 1 deletions
diff --git a/bfd/ChangeLog b/bfd/ChangeLog
index 38e9a43..672f189 100644
--- a/bfd/ChangeLog
+++ b/bfd/ChangeLog
@@ -1,3 +1,8 @@
+2004-12-08 Ian Lance Taylor <ian@wasabisystems.com>
+
+ * elfxx-mips.c (mips_elf_calculate_relocation): Test for R_MIPS_26
+ overflow.
+
2004-12-07 Ben Elliston <bje@gnu.org>
* netbsd-core.c (netbsd_core_file_p): Make `i' unsigned.
diff --git a/bfd/elfxx-mips.c b/bfd/elfxx-mips.c
index fcbe6d3..ae553b4 100644
--- a/bfd/elfxx-mips.c
+++ b/bfd/elfxx-mips.c
@@ -3350,7 +3350,10 @@ mips_elf_calculate_relocation (bfd *abfd, bfd *input_bfd,
if (local_p)
value = ((addend | ((p + 4) & 0xf0000000)) + symbol) >> 2;
else
- value = (_bfd_mips_elf_sign_extend (addend, 28) + symbol) >> 2;
+ {
+ value = (_bfd_mips_elf_sign_extend (addend, 28) + symbol) >> 2;
+ overflowed_p = (value >> 26) != ((p + 4) >> 28);
+ }
value &= howto->dst_mask;
break;