* expr.c (expr): Correct returned segment value.

This commit is contained in:
Alan Modra
2010-09-29 06:48:30 +00:00
parent f794089cb8
commit 1e0f6894c8
2 changed files with 25 additions and 10 deletions

View File

@@ -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.

View File

@@ -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"));
}