+2000-06-24 Frank Ch. Eigler <fche@redhat.com>
+
+ * cgen.c (expr_jmp_buf_p): New validity flag for expr_jmp_buf.
+ (gas_cgen_parse_operand): Set it around expression() call.
+ (gas_cgen_md_operand): Test for it before longjmp().
+
2000-06-24 Kazu Hirata <kazu@hxi.com>
* config/tc-h8500.c: Remove all uses of DEFUN.
/* Used for communication between the next two procedures. */
static jmp_buf expr_jmp_buf;
+static int expr_jmp_buf_p;
/* Callback for cgen interface. Parse the expression at *STRP.
The result is an error message or NULL for success (in which case
This is done via gas_cgen_md_operand. */
if (setjmp (expr_jmp_buf) != 0)
{
+ expr_jmp_buf_p = 0;
input_line_pointer = (char *) hold;
* resultP_1 = CGEN_PARSE_OPERAND_RESULT_ERROR;
return "illegal operand";
}
+ expr_jmp_buf_p = 1;
expression (& exp);
+ expr_jmp_buf_p = 0;
* strP = input_line_pointer;
input_line_pointer = hold;
gas_cgen_md_operand (expressionP)
expressionS * expressionP;
{
- longjmp (expr_jmp_buf, 1);
+ /* Don't longjmp if we're not called from within cgen_parse_operand(). */
+ if (expr_jmp_buf_p)
+ longjmp (expr_jmp_buf, 1);
}
/* Finish assembling instruction INSN.