From 5f2b6bc955535ebfc280a04c22c937cfedb83916 Mon Sep 17 00:00:00 2001 From: Nick Clifton Date: Wed, 16 Mar 2016 11:33:55 +0000 Subject: Fix checking bignum values that are being inserted into byte sized containers. * read.c (emit_expr_with_reloc): Add code check a bignum with nbytes == 1. * config/rx/rx-parse.y (rx_intop): Accept bignum values for sizes other than 32-bits. * testsuite/gas/elf/bignum.s: New test source file. * testsuite/gas/elf/bignum.d: New test driver file. * testsuite/gas/elf/elf.exp: Run the new test. --- gas/config/rx-parse.y | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) (limited to 'gas/config/rx-parse.y') diff --git a/gas/config/rx-parse.y b/gas/config/rx-parse.y index 3bd37d0..c0e3217 100644 --- a/gas/config/rx-parse.y +++ b/gas/config/rx-parse.y @@ -1494,9 +1494,14 @@ rx_intop (expressionS exp, int nbits, int opbits) long v; long mask, msb; - if (exp.X_op == O_big && nbits == 32) - return 1; - if (exp.X_op != O_constant) + if (exp.X_op == O_big) + { + if (nbits == 32) + return 1; + if (exp.X_add_number == -1) + return 0; + } + else if (exp.X_op != O_constant) return 0; v = exp.X_add_number; -- cgit v1.1