From a93d5cb1976818c8d34133fd8798b3df76269f80 Mon Sep 17 00:00:00 2001 From: Nick Clifton Date: Wed, 29 Apr 2015 12:26:46 +0100 Subject: [PATCH] Add support for absolute PE/x86 relocations. PR 17099 * coff-i386.c (coff_i386_rtype_to_howto): Allow absolute PCRLONG relocs. --- bfd/ChangeLog | 6 ++++++ bfd/coff-i386.c | 7 ++++++- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/bfd/ChangeLog b/bfd/ChangeLog index 2b4b32f..db19e8a 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -1,3 +1,9 @@ +2015-04-29 Nick Clifton + + PR 17099 + * coff-i386.c (coff_i386_rtype_to_howto): Allow absolute PCRLONG + relocs. + 2015-04-27 Andreas Krebbel * elf-s390-common.c (elf_s390_merge_obj_attributes): New function. diff --git a/bfd/coff-i386.c b/bfd/coff-i386.c index 20d2402..b185b81 100644 --- a/bfd/coff-i386.c +++ b/bfd/coff-i386.c @@ -509,7 +509,12 @@ coff_i386_rtype_to_howto (bfd *abfd ATTRIBUTE_UNUSED, *addendp -= pe_data(sec->output_section->owner)->pe_opthdr.ImageBase; } - BFD_ASSERT (sym != NULL); + /* PR 17099 - Absolute R_PCRLONG relocations do not need a symbol. */ + if (rel->r_type == R_PCRLONG && sym == NULL) + *addendp -= rel->r_vaddr; + else + BFD_ASSERT (sym != NULL); + if (rel->r_type == R_SECREL32 && sym != NULL) { bfd_vma osect_vma; -- 2.7.4