aboutsummaryrefslogtreecommitdiff
path: root/bfd
diff options
context:
space:
mode:
authorH.J. Lu <hjl.tools@gmail.com>2011-04-09 15:37:57 +0000
committerH.J. Lu <hjl.tools@gmail.com>2011-04-09 15:37:57 +0000
commit62d7890874a4fb64efb4e86b1ff77857b536d62c (patch)
tree80d7ab3352ecef230f87d92fa804b4ffff66bfe5 /bfd
parentb4f2f049b185f79cd2319351e78c8b9c8f97c0f0 (diff)
downloadgdb-62d7890874a4fb64efb4e86b1ff77857b536d62c.zip
gdb-62d7890874a4fb64efb4e86b1ff77857b536d62c.tar.gz
gdb-62d7890874a4fb64efb4e86b1ff77857b536d62c.tar.bz2
Return relocation error on unsupported relocation.
2011-04-09 H.J. Lu <hongjiu.lu@intel.com> * elf32-i386.c (elf_i386_relocate_section): Return relocation error on unsupported relocation. * elf64-x86-64.c (elf_x86_64_relocate_section): Likewise.
Diffstat (limited to 'bfd')
-rw-r--r--bfd/ChangeLog6
-rw-r--r--bfd/elf32-i386.c7
-rw-r--r--bfd/elf64-x86-64.c9
3 files changed, 19 insertions, 3 deletions
diff --git a/bfd/ChangeLog b/bfd/ChangeLog
index c745c2a..a724277 100644
--- a/bfd/ChangeLog
+++ b/bfd/ChangeLog
@@ -1,5 +1,11 @@
2011-04-09 H.J. Lu <hongjiu.lu@intel.com>
+ * elf32-i386.c (elf_i386_relocate_section): Return relocation
+ error on unsupported relocation.
+ * elf64-x86-64.c (elf_x86_64_relocate_section): Likewise.
+
+2011-04-09 H.J. Lu <hongjiu.lu@intel.com>
+
PR binutils/12657
* hosts/x86-64linux.h (elf_prstatus32): Replace __pid_t with
pid_t.
diff --git a/bfd/elf32-i386.c b/bfd/elf32-i386.c
index 1b76cb4..acabeb3 100644
--- a/bfd/elf32-i386.c
+++ b/bfd/elf32-i386.c
@@ -3451,7 +3451,11 @@ elf_i386_relocate_section (bfd *output_bfd,
sreloc = elf_section_data (input_section)->sreloc;
- BFD_ASSERT (sreloc != NULL && sreloc->contents != NULL);
+ if (sreloc == NULL || sreloc->contents == NULL)
+ {
+ r = bfd_reloc_notsupported;
+ goto check_relocation_error;
+ }
loc = sreloc->contents;
loc += sreloc->reloc_count++ * sizeof (Elf32_External_Rel);
@@ -4096,6 +4100,7 @@ do_relocation:
contents, rel->r_offset,
relocation, 0);
+check_relocation_error:
if (r != bfd_reloc_ok)
{
const char *name;
diff --git a/bfd/elf64-x86-64.c b/bfd/elf64-x86-64.c
index 927b3ed..ea837a3 100644
--- a/bfd/elf64-x86-64.c
+++ b/bfd/elf64-x86-64.c
@@ -3411,7 +3411,11 @@ elf_x86_64_relocate_section (bfd *output_bfd,
sreloc = elf_section_data (input_section)->sreloc;
- BFD_ASSERT (sreloc != NULL && sreloc->contents != NULL);
+ if (sreloc == NULL || sreloc->contents == NULL)
+ {
+ r = bfd_reloc_notsupported;
+ goto check_relocation_error;
+ }
elf_append_rela (output_bfd, sreloc, &outrel);
@@ -3868,6 +3872,7 @@ do_relocation:
contents, rel->r_offset,
relocation, rel->r_addend);
+check_relocation_error:
if (r != bfd_reloc_ok)
{
const char *name;
@@ -3896,7 +3901,7 @@ do_relocation:
else
{
(*_bfd_error_handler)
- (_("%B(%A+0x%lx): reloc against `%s': error %d"),
+ (_("%B(%A+0x%lx): reloc against `%s': error %r"),
input_bfd, input_section,
(long) rel->r_offset, name, (int) r);
return FALSE;