summaryrefslogtreecommitdiff
path: root/bfd
diff options
context:
space:
mode:
authorNick Clifton <nickc@redhat.com>2015-01-15 16:20:19 +0000
committerNick Clifton <nickc@redhat.com>2015-01-15 16:20:19 +0000
commit2d071cfc6614b4ec30fa4ef8b8af5bdf2c177858 (patch)
treedbe37a6c1c9087200948d19bd2700441eb543812 /bfd
parentca55926c2fad07fef0e6dce8beb948167990a2e7 (diff)
downloadbinutils-gdb-2d071cfc6614b4ec30fa4ef8b8af5bdf2c177858.tar.gz
Fixes a bug in the relaxation of R_MSP430X_ABS16 to R_MSP430_10_PCREL.
* elf32-msp430.c (msp430_elf_relax_section): Skip unhandled relocs. Include PC-relative adjustment for R_MSP430X_ABS16 relaxation.
Diffstat (limited to 'bfd')
-rw-r--r--bfd/ChangeLog6
-rw-r--r--bfd/elf32-msp430.c3
2 files changed, 8 insertions, 1 deletions
diff --git a/bfd/ChangeLog b/bfd/ChangeLog
index d0542826c39..3a2d6f605a2 100644
--- a/bfd/ChangeLog
+++ b/bfd/ChangeLog
@@ -1,3 +1,9 @@
+2015-01-15 Nick Clifton <nickc@redhat.com>
+
+ * elf32-msp430.c (msp430_elf_relax_section): Skip unhandled
+ relocs. Include PC-relative adjustment for R_MSP430X_ABS16
+ relaxation.
+
2015-01-15 Alan Modra <amodra@gmail.com>
* elflink.c (_bfd_elf_link_omit_section_dynsym): Return true for
diff --git a/bfd/elf32-msp430.c b/bfd/elf32-msp430.c
index 2157eb0c5d0..3a1c0a1c104 100644
--- a/bfd/elf32-msp430.c
+++ b/bfd/elf32-msp430.c
@@ -1921,7 +1921,7 @@ msp430_elf_relax_section (bfd * abfd, asection * sec,
default:
/* Not a conditional branch instruction. */
/* fprintf (stderr, "unrecog: %x\n", opcode); */
- goto error_return;
+ continue;
}
/* Note that we've changed the relocs, section contents, etc. */
@@ -2162,6 +2162,7 @@ msp430_elf_relax_section (bfd * abfd, asection * sec,
{
bfd_vma value = symval;
+ value -= (sec->output_section->vma + sec->output_offset);
value -= irel->r_offset;
value += irel->r_addend;