From 268a8d3ac407c5ce6bd6fe27736a1b9265e84f25 Mon Sep 17 00:00:00 2001 From: "H.J. Lu" Date: Fri, 11 May 2012 00:50:43 +0000 Subject: [PATCH] Use int and bfd_signed_vma in x32 addend overflow check bfd/ * elf64-x86-64.c (elf_x86_64_relocate_section): Use int in x32 addend overflow check. gas/ * config/tc-i386.c (tc_gen_reloc): Use bfd_signed_vma in x32 addend overflow check. --- bfd/ChangeLog | 5 +++++ bfd/elf64-x86-64.c | 6 +++--- gas/ChangeLog | 5 +++++ gas/config/tc-i386.c | 8 +++++--- 4 files changed, 18 insertions(+), 6 deletions(-) diff --git a/bfd/ChangeLog b/bfd/ChangeLog index 806db7f1e73..e776f41dda6 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -1,3 +1,8 @@ +2012-05-10 H.J. Lu + + * elf64-x86-64.c (elf_x86_64_relocate_section): Use int in x32 + addend overflow check. + 2012-05-10 DJ Delorie * elf32-rx.c (rx_elf_object_p): Ignore empty segments. diff --git a/bfd/elf64-x86-64.c b/bfd/elf64-x86-64.c index e98c32512ad..1111d772389 100644 --- a/bfd/elf64-x86-64.c +++ b/bfd/elf64-x86-64.c @@ -3686,7 +3686,7 @@ elf_x86_64_relocate_section (bfd *output_bfd, != (rel->r_addend & 0x80000000)) { const char *name; - long addend = rel->r_addend; + int addend = rel->r_addend; if (h && h->root.root.string) name = h->root.root.string; else @@ -3694,7 +3694,7 @@ elf_x86_64_relocate_section (bfd *output_bfd, sym, NULL); if (addend < 0) (*_bfd_error_handler) - (_("%B: addend -0x%lx in relocation %s against " + (_("%B: addend -0x%x in relocation %s against " "symbol `%s' at 0x%lx in section `%A' is " "out of range"), input_bfd, input_section, addend, @@ -3702,7 +3702,7 @@ elf_x86_64_relocate_section (bfd *output_bfd, name, (unsigned long) rel->r_offset); else (*_bfd_error_handler) - (_("%B: addend 0x%lx in relocation %s against " + (_("%B: addend 0x%x in relocation %s against " "symbol `%s' at 0x%lx in section `%A' is " "out of range"), input_bfd, input_section, addend, diff --git a/gas/ChangeLog b/gas/ChangeLog index dfe45d29466..c9048e3c568 100644 --- a/gas/ChangeLog +++ b/gas/ChangeLog @@ -1,3 +1,8 @@ +2012-05-10 H.J. Lu + + * config/tc-i386.c (tc_gen_reloc): Use bfd_signed_vma in x32 + addend overflow check. + 2012-05-10 H.J. Lu * config/tc-i386.c (tc_gen_reloc): Display signed hex number in diff --git a/gas/config/tc-i386.c b/gas/config/tc-i386.c index e3440f097cf..e33fb6ca33e 100644 --- a/gas/config/tc-i386.c +++ b/gas/config/tc-i386.c @@ -9177,16 +9177,18 @@ tc_gen_reloc (asection *section ATTRIBUTE_UNUSED, fixS *fixp) /* Check addend overflow. */ if (!fits_in_signed_long (fixp->fx_offset)) { - long long addend = fixp->fx_offset; + bfd_signed_vma addend = fixp->fx_offset; if (addend < 0) as_bad_where (fixp->fx_file, fixp->fx_line, _("cannot represent relocation %s with " - "addend -0x%llx in x32 mode"), + "addend -0x%" BFD_VMA_FMT "x in x32 " + "mode"), bfd_get_reloc_code_name (code), -addend); else as_bad_where (fixp->fx_file, fixp->fx_line, _("cannot represent relocation %s with " - "addend 0x%llx in x32 mode"), + "addend 0x%" BFD_VMA_FMT "x in x32 " + "mode"), bfd_get_reloc_code_name (code), addend); } break; -- 2.30.2