aboutsummaryrefslogtreecommitdiff
path: root/bfd
diff options
context:
space:
mode:
authorDave Anglin <dave.anglin@nrc.ca>2009-02-15 19:39:44 +0000
committerDave Anglin <dave.anglin@nrc.ca>2009-02-15 19:39:44 +0000
commit13e0a8749590a7f97f486f5767c47e1fcdc60576 (patch)
tree925535827d0ff121084ed5133e8a4ee573006fe2 /bfd
parent3a71aa26df2a372a58e9c11ef9ba51fd0e83320a (diff)
downloadgdb-13e0a8749590a7f97f486f5767c47e1fcdc60576.zip
gdb-13e0a8749590a7f97f486f5767c47e1fcdc60576.tar.gz
gdb-13e0a8749590a7f97f486f5767c47e1fcdc60576.tar.bz2
* elf-hppa.h (elf_hppa_final_link_relocate): Correct addend value used
in branch offset check.
Diffstat (limited to 'bfd')
-rw-r--r--bfd/ChangeLog5
-rw-r--r--bfd/elf-hppa.h5
2 files changed, 8 insertions, 2 deletions
diff --git a/bfd/ChangeLog b/bfd/ChangeLog
index 83d7d0b..cd9033d 100644
--- a/bfd/ChangeLog
+++ b/bfd/ChangeLog
@@ -1,3 +1,8 @@
+2009-02-15 John David Anglin <dave.anglin@nrc-cnrc.gc.ca>
+
+ * elf-hppa.h (elf_hppa_final_link_relocate): Correct addend value used
+ in branch offset check.
+
2009-02-15 Alan Modra <amodra@bigpond.net.au>
* elf64-ppc.c (struct _ppc64_elf_section_data): Delete t_symndx,
diff --git a/bfd/elf-hppa.h b/bfd/elf-hppa.h
index b371c0e..0edf989 100644
--- a/bfd/elf-hppa.h
+++ b/bfd/elf-hppa.h
@@ -1684,6 +1684,7 @@ elf_hppa_final_link_relocate (Elf_Internal_Rela *rel,
/* Turn VALUE into a proper PC relative address. */
value -= (offset + input_section->output_offset
+ input_section->output_section->vma);
+ addend -= 8;
if (r_type == (unsigned int) R_PARISC_PCREL22F)
max_branch_offset = (1 << (22-1)) << 2;
@@ -1708,9 +1709,9 @@ elf_hppa_final_link_relocate (Elf_Internal_Rela *rel,
/* Adjust for any field selectors. */
if (r_type == R_PARISC_PCREL17R)
- value = hppa_field_adjust (value, -8 + addend, e_rsel);
+ value = hppa_field_adjust (value, addend, e_rsel);
else
- value = hppa_field_adjust (value, -8 + addend, e_fsel);
+ value = hppa_field_adjust (value, addend, e_fsel);
/* All branches are implicitly shifted by 2 places. */
value >>= 2;