aboutsummaryrefslogtreecommitdiff
path: root/gas/expr.c
diff options
context:
space:
mode:
authorJohn Darrington <john@darrington.wattle.id.au>2019-05-20 19:53:30 +0200
committerJohn Darrington <john@darrington.wattle.id.au>2019-05-20 19:54:31 +0200
commitcffc205c9eaacfa312323807cd60b9d3d1c26894 (patch)
tree2ababcf4890cb2b03f1ee1c63942eea830df8836 /gas/expr.c
parentefa9760914311fdd9b9a299f1e6cd5a85d64c5ff (diff)
downloadgdb-cffc205c9eaacfa312323807cd60b9d3d1c26894.zip
gdb-cffc205c9eaacfa312323807cd60b9d3d1c26894.tar.gz
gdb-cffc205c9eaacfa312323807cd60b9d3d1c26894.tar.bz2
GAS: Replace macro LITERAL_PREFIXDOLLAR_HEX with a runtime value.
In an upcoming commit, I need to be able to set the prefix used to introduce hexadecimal literal constants using a command line flag. This is not currently possible, because the switch which determines this (LITERAL_PREFIXDOLLAR_HEX) is a macro set at build time. This change substitutes it for a variable to be set at start up. gas/ChangeLog: * expr.c (literal_prefix_dollar_hex): New variable. (operand)[case '$']: Use the new variable instead of the old macro. * expr.h (literal_prefix_dollar_hex): Declare it. * config/tc-epiphany.c (md_begin): Assign literal_prefix_dollar_hex. * config/tc-ip2k.c: ditto * config/tc-mt.c: ditto * config/tc-epiphany.h (LITERAL_PREFIXDOLLAR_HEX): Remove macro definition. * config/tc-ip2k.h: ditto * config/tc-mt.h: ditto
Diffstat (limited to 'gas/expr.c')
-rw-r--r--gas/expr.c19
1 files changed, 13 insertions, 6 deletions
diff --git a/gas/expr.c b/gas/expr.c
index 3efde88..0fab955 100644
--- a/gas/expr.c
+++ b/gas/expr.c
@@ -35,6 +35,8 @@
#define CHAR_BIT 8
#endif
+bfd_boolean literal_prefix_dollar_hex = FALSE;
+
static void floating_constant (expressionS * expressionP);
static valueT generic_bignum_to_int32 (void);
#ifdef BFD64
@@ -778,14 +780,19 @@ operand (expressionS *expressionP, enum expr_mode mode)
expressionP);
break;
-#ifdef LITERAL_PREFIXDOLLAR_HEX
case '$':
- /* $L is the start of a local label, not a hex constant. */
- if (* input_line_pointer == 'L')
- goto isname;
- integer_constant (16, expressionP);
+ if (literal_prefix_dollar_hex)
+ {
+ /* $L is the start of a local label, not a hex constant. */
+ if (* input_line_pointer == 'L')
+ goto isname;
+ integer_constant (16, expressionP);
+ }
+ else
+ {
+ goto isname;
+ }
break;
-#endif
#ifdef LITERAL_PREFIXPERCENT_BIN
case '%':