Fix crash on intelbad.

gas/
2013-12-03  Tristan Gingold  <gingold@adacore.com>

	* config/tc-i386-intel.c (i386_intel_simplify): Avoid arithmetic
	overflow on pointers.
This commit is contained in:
Tristan Gingold 2013-12-03 16:46:59 +01:00
parent 11a6da5617
commit c2a5914e1b
2 changed files with 9 additions and 6 deletions

View File

@ -1,3 +1,8 @@
2013-12-03 Tristan Gingold <gingold@adacore.com>
* config/tc-i386-intel.c (i386_intel_simplify): Avoid arithmetic
overflow on pointers.
2013-11-19 Yufeng Zhang <yufeng.zhang@arm.com>
Revert

View File

@ -417,23 +417,21 @@ static int i386_intel_simplify (expressionS *e)
if (this_operand >= 0 && intel_state.in_bracket)
{
expressionS *scale = NULL;
if (intel_state.index)
--scale;
int has_index = (intel_state.index != NULL);
if (!intel_state.in_scale++)
intel_state.scale_factor = 1;
ret = i386_intel_simplify_symbol (e->X_add_symbol);
if (ret && !scale && intel_state.index)
if (ret && !has_index && intel_state.index)
scale = symbol_get_value_expression (e->X_op_symbol);
if (ret)
ret = i386_intel_simplify_symbol (e->X_op_symbol);
if (ret && !scale && intel_state.index)
if (ret && !scale && !has_index && intel_state.index)
scale = symbol_get_value_expression (e->X_add_symbol);
if (ret && scale && (scale + 1))
if (ret && scale)
{
resolve_expression (scale);
if (scale->X_op != O_constant