diff options
-rw-r--r-- | gas/ChangeLog | 8 | ||||
-rw-r--r-- | gas/expr.c | 27 |
2 files changed, 25 insertions, 10 deletions
diff --git a/gas/ChangeLog b/gas/ChangeLog index 4511ea3..62a974b 100644 --- a/gas/ChangeLog +++ b/gas/ChangeLog @@ -1,3 +1,7 @@ +2010-09-29 Alan Modra <amodra@gmail.com> + + * expr.c (expr): Correct returned segment value. + 2010-09-27 Ralf Wildenhues <Ralf.Wildenhues@gmx.de> * configure: Regenerate. @@ -57,7 +61,7 @@ (arm_ext_m): Add support for OS extension. (arm_ext_os): New variable. (do_t_swi): In v6-M ensure we have the OS extension. - (arm_cpus): The cortex-m1 and cortex-m0 options have the OS + (arm_cpus): The cortex-m1 and cortex-m0 options have the OS extension by default. (arm_archs): Add armv6s-m. (arm_extensions): Add 'os' extension. @@ -98,7 +102,7 @@ (arm_option_cpu_table): Rename... (arm_option_fpu_table): ...to this. (arm_fpus): Change type. - (arm_parse_extension): Enforce alphabetical order. Allow + (arm_parse_extension): Enforce alphabetical order. Allow extensions to be removed. (arm_parse_arch): Allow extensions to be specified with -march. (s_arm_arch_extension): Add. @@ -1969,16 +1969,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")); } |