stabs_end ();
poend ();
_obstack_free (&cond_obstack, NULL);
+ free (current_name);
+ free (current_label);
}
\f
#ifndef TC_ADDRESS_BYTES
s_altmacro (int on)
{
demand_empty_rest_of_line ();
- macro_set_alternate (on);
+ flag_macro_alternate = on;
}
/* Read a symbol name from input_line_pointer.
ignore_rest_of_line ();
goto out;
}
- else if (temp != size || !exp.X_unsigned)
+ else if (temp != size || (!exp.X_unsigned && exp.X_add_number < 0))
{
as_warn (_("size (%ld) out of range, ignored"), (long) temp);
ignore_rest_of_line ();
if (exp.X_op == O_absent)
goto no_align;
- if (!exp.X_unsigned)
+ if (!exp.X_unsigned && exp.X_add_number < 0)
{
as_warn (_("alignment negative; 0 assumed"));
align = 0;
return;
}
#endif
+ /* Make sure symbol_equated_p() recognizes the symbol as an equate. */
+ exp.X_add_symbol = make_expr_symbol (&exp);
+ exp.X_add_number = 0;
+ exp.X_op = O_symbol;
symbol_set_value_expression (symbolP, &exp);
S_SET_SEGMENT (symbolP, reg_section);
set_zero_frag (symbolP);
if (debug_type == DEBUG_STABS)
stabs_generate_asm_endfunc (current_name, current_label);
+ free (current_name);
+ free (current_label);
current_name = current_label = NULL;
}
else /* ! end_p */
as_fatal ("%s", xstrerror (errno));
}
else
- label = name;
+ label = xstrdup (name);
}
}
else