aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNick Clifton <nickc@redhat.com>2014-03-26 16:16:20 +0000
committerNick Clifton <nickc@redhat.com>2014-03-26 16:16:20 +0000
commit55bfc9ac025c1c9cd1ad5422829b3dc70f357a79 (patch)
tree3eaf78d55a1d539773b2e0cebe719fdd6a59c2db
parent318d3177f7d67dac94baa07aab04192fc7bcba49 (diff)
downloadgdb-55bfc9ac025c1c9cd1ad5422829b3dc70f357a79.zip
gdb-55bfc9ac025c1c9cd1ad5422829b3dc70f357a79.tar.gz
gdb-55bfc9ac025c1c9cd1ad5422829b3dc70f357a79.tar.bz2
This fixes a problem for 64-bit Cygwin, where building some packages can
produce spurious errors about truncated relocations. The relocations are only truncated because they are being made against sections which are going to be discarded so that base address is zero instead of the expected 64-bit base value. * cofflink.c (_bfd_coff_generic_relocate_section): Skip relocations in discarded sections.
-rw-r--r--bfd/ChangeLog5
-rw-r--r--bfd/cofflink.c5
2 files changed, 10 insertions, 0 deletions
diff --git a/bfd/ChangeLog b/bfd/ChangeLog
index aaba406..f2b5f9c 100644
--- a/bfd/ChangeLog
+++ b/bfd/ChangeLog
@@ -1,3 +1,8 @@
+2014-03-26 Nick Clifton <nickc@redhat.com>
+
+ * cofflink.c (_bfd_coff_generic_relocate_section): Skip
+ relocations in discarded sections.
+
2014-03-26 Tristan Gingold <gingold@adacore.com>
* mach-o.c (bfd_mach_o_convert_architecture): Add
diff --git a/bfd/cofflink.c b/bfd/cofflink.c
index 75ef7af..bfb1ebb 100644
--- a/bfd/cofflink.c
+++ b/bfd/cofflink.c
@@ -3059,6 +3059,11 @@ _bfd_coff_generic_relocate_section (bfd *output_bfd,
else
{
sec = sections[symndx];
+
+ /* If the output section has been discarded then ignore this reloc. */
+ if (sec->output_section->vma == 0)
+ continue;
+
val = (sec->output_section->vma
+ sec->output_offset
+ sym->n_value);