void
s_mexit (int ignore ATTRIBUTE_UNUSED)
{
- cond_exit_macro (macro_nest);
- buffer_limit = input_scrub_next_buffer (&input_line_pointer);
+ if (macro_nest)
+ {
+ cond_exit_macro (macro_nest);
+ buffer_limit = input_scrub_next_buffer (&input_line_pointer);
+ }
+ else
+ as_warn (_("ignoring macro exit outside a macro definition."));
}
/* Switch in and out of MRI mode. */
char *loop;
loop = concat (S_GET_NAME (symbolP),
- " => ", S_GET_NAME (symbolP2), NULL);
+ " => ", S_GET_NAME (symbolP2), (const char *) NULL);
symp = symbolP2;
while (symp != symbolP)
{
char *old_loop = loop;
symp = symbol_get_value_expression (symp)->X_add_symbol;
- loop = concat (loop, " => ", S_GET_NAME (symp), NULL);
+ loop = concat (loop, " => ", S_GET_NAME (symp),
+ (const char *) NULL);
free (old_loop);
}
break;
case O_register:
+ if (S_IS_EXTERNAL (symbolP))
+ {
+ as_bad ("can't equate global symbol `%s' with register name",
+ S_GET_NAME (symbolP));
+ return;
+ }
S_SET_SEGMENT (symbolP, reg_section);
S_SET_VALUE (symbolP, (valueT) exp.X_add_number);
set_zero_frag (symbolP);