diff options
Diffstat (limited to 'binutils-2.19/gas/expr.c')
-rw-r--r-- | binutils-2.19/gas/expr.c | 27 |
1 files changed, 19 insertions, 8 deletions
diff --git a/binutils-2.19/gas/expr.c b/binutils-2.19/gas/expr.c index 285b438..b494a98 100644 --- a/binutils-2.19/gas/expr.c +++ b/binutils-2.19/gas/expr.c @@ -1866,16 +1866,27 @@ expr (int rankarg, /* Larger # is higher rank. */ if (retval != rightseg) { - if (! SEG_NORMAL (retval)) - { - if (retval != undefined_section || SEG_NORMAL (rightseg)) - retval = rightseg; - } - else if (SEG_NORMAL (rightseg) + if (retval == undefined_section) + ; + else if (rightseg == undefined_section) + retval = rightseg; + else if (retval == expr_section) + ; + else if (rightseg == expr_section) + retval = rightseg; + else if (retval == reg_section) + ; + else if (rightseg == reg_section) + retval = rightseg; + else if (rightseg == absolute_section) + ; + else if (retval == absolute_section) + retval = rightseg; #ifdef DIFF_EXPR_OK - && op_left != O_subtract + else if (op_left == O_subtract) + ; #endif - ) + else as_bad (_("operation combines symbols in different segments")); } |