diff options
author | Julian Brown <julian@codesourcery.com> | 2013-04-11 10:54:13 +0000 |
---|---|---|
committer | Julian Brown <julian@codesourcery.com> | 2013-04-11 10:54:13 +0000 |
commit | 956a6ba3fe11b9dc24212dc65a32b057077e227f (patch) | |
tree | a958b9407b1cf3d0a1259b3e7227a5af99094104 /gas/expr.h | |
parent | cf2cb5ec99be3cb5a30ff86ebf3859de0ffd5115 (diff) | |
download | gdb-956a6ba3fe11b9dc24212dc65a32b057077e227f.zip gdb-956a6ba3fe11b9dc24212dc65a32b057077e227f.tar.gz gdb-956a6ba3fe11b9dc24212dc65a32b057077e227f.tar.bz2 |
gas/
* read.c (convert_to_bignum): Add sign parameter. Use it
instead of X_unsigned to determine sign of resulting bignum.
(emit_expr): Pass extra argument to convert_to_bignum.
(emit_leb128_expr): Use X_extrabit instead of X_unsigned. Pass
X_extrabit to convert_to_bignum.
(parse_bitfield_cons): Set X_extrabit.
* expr.c (make_expr_symbol, expr_build_uconstant, operand):
Initialise X_extrabit field as appropriate.
(add_to_result): New.
(subtract_from_result): New.
(expr): Use above.
* expr.h (expressionS): Add X_extrabit field.
gas/testsuite/
* gas/all/sleb128-2.s: New test.
* gas/all/sleb128-3.s: Likewise.
* gas/all/sleb128-4.s: Likewise.
* gas/all/sleb128-5.s: Likewise.
* gas/all/sleb128-7.s: Likewise.
* gas/all/sleb128-2.d: New.
* gas/all/sleb128-3.d: New.
* gas/all/sleb123-4.d: New.
* gas/all/sleb123-5.d: New.
* gas/all/sleb123-7.d: New.
* gas/all/gas.exp (sleb128-2, sleb128-3, sleb128-4, sleb128-5)
(sleb128-7): Run new tests.
Diffstat (limited to 'gas/expr.h')
-rw-r--r-- | gas/expr.h | 5 |
1 files changed, 5 insertions, 0 deletions
@@ -136,6 +136,11 @@ typedef struct expressionS { when performing arithmetic on these values). FIXME: This field is not set very reliably. */ unsigned int X_unsigned : 1; + /* This is used to implement "word size + 1 bit" arithmetic, so that e.g. + expressions used with .sleb128 directives can use the full range available + for an unsigned word, but can also properly represent all values of a + signed word. */ + unsigned int X_extrabit : 1; /* 7 additional bits can be defined if needed. */ |