* cgen assembler fixes; approved by original author <devans>
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().
This commit is contained in:
parent
7fb283bce2
commit
680d285772
2 changed files with 13 additions and 1 deletions
|
@ -1,3 +1,9 @@
|
|||
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.
|
||||
|
|
|
@ -232,6 +232,7 @@ gas_cgen_record_fixup_exp (frag, where, insn, length, operand, opinfo, exp)
|
|||
|
||||
/* 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
|
||||
|
@ -279,12 +280,15 @@ gas_cgen_parse_operand (cd, want, strP, opindex, opinfo, resultP, valueP)
|
|||
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;
|
||||
|
@ -328,6 +332,8 @@ void
|
|||
gas_cgen_md_operand (expressionP)
|
||||
expressionS * expressionP;
|
||||
{
|
||||
/* Don't longjmp if we're not called from within cgen_parse_operand(). */
|
||||
if (expr_jmp_buf_p)
|
||||
longjmp (expr_jmp_buf, 1);
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue