From 83acd3e879271522628c834171c3e52c041c90cc Mon Sep 17 00:00:00 2001 From: "H.J. Lu" Date: Thu, 10 May 2012 03:48:33 +0000 Subject: [PATCH] Use fits_in_signed_long to check x32 addend overflow * config/tc-i386.c (tc_gen_reloc): Use fits_in_signed_long. --- gas/ChangeLog | 4 ++++ gas/config/tc-i386.c | 3 +-- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/gas/ChangeLog b/gas/ChangeLog index 3b43ecd..f9a6e26 100644 --- a/gas/ChangeLog +++ b/gas/ChangeLog @@ -1,5 +1,9 @@ 2012-05-09 H.J. Lu + * config/tc-i386.c (tc_gen_reloc): Use fits_in_signed_long. + +2012-05-09 H.J. Lu + * config/tc-i386.c (tc_gen_reloc): Check x32 addend overflow for BFD_RELOC_64. diff --git a/gas/config/tc-i386.c b/gas/config/tc-i386.c index 06f9764..ab5233d 100644 --- a/gas/config/tc-i386.c +++ b/gas/config/tc-i386.c @@ -9175,8 +9175,7 @@ tc_gen_reloc (asection *section ATTRIBUTE_UNUSED, fixS *fixp) { case BFD_RELOC_64: /* Check addend overflow. */ - if ((long long) fixp->fx_offset > 0x7fffffffLL - || (long long) fixp->fx_offset < -0x80000000LL) + if (!fits_in_signed_long (fixp->fx_offset)) { as_bad_where (fixp->fx_file, fixp->fx_line, _("cannot represent relocation %s with addend %lld in x32 mode"), -- 2.7.4