diff options
author | Maciej W. Rozycki <macro@linux-mips.org> | 2010-12-01 20:35:13 +0000 |
---|---|---|
committer | Maciej W. Rozycki <macro@linux-mips.org> | 2010-12-01 20:35:13 +0000 |
commit | 1c59b327b1783a497e9a7b2f8a554f3bd177f0ba (patch) | |
tree | f4a184f4fd7cbea190be39fc93462dfbd206dd5d /gas/expr.c | |
parent | 6dfc65020aef3a0cfa8de27636d06ae226486eb6 (diff) | |
download | binutils-redhat-1c59b327b1783a497e9a7b2f8a554f3bd177f0ba.tar.gz |
* symbols.c (symbol_clone_if_forward_ref): Don't limit cloning
to expr_section symbols; clone all equated symbols. Clear
sy_resolving of the cloned copy.
* expr.c (operand): Only clone equated symbols on a final
(i.e. non-equated) reference.
Diffstat (limited to 'gas/expr.c')
-rw-r--r-- | gas/expr.c | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/gas/expr.c b/gas/expr.c index f050b17ccb..620fdce31d 100644 --- a/gas/expr.c +++ b/gas/expr.c @@ -1373,8 +1373,13 @@ operand (expressionS *expressionP, enum expr_mode mode) if (expressionP->X_add_symbol) symbol_mark_used (expressionP->X_add_symbol); - expressionP->X_add_symbol = symbol_clone_if_forward_ref (expressionP->X_add_symbol); - expressionP->X_op_symbol = symbol_clone_if_forward_ref (expressionP->X_op_symbol); + if (mode != expr_defer) + { + expressionP->X_add_symbol + = symbol_clone_if_forward_ref (expressionP->X_add_symbol); + expressionP->X_op_symbol + = symbol_clone_if_forward_ref (expressionP->X_op_symbol); + } switch (expressionP->X_op) { |