Fix the assembler's new .nop directive so that the input line pointer is preserved.
* read.c (s_nop): Preserve the input_line_pointer around the call to md_assemble. * config/tc-s12z.c (md_assemble): Revert previous delta.
This commit is contained in:
parent
6db9990640
commit
f36eda1fe3
@ -1,3 +1,9 @@
|
||||
2020-09-15 Nick Clifton <nickc@redhat.com>
|
||||
|
||||
* read.c (s_nop): Preserve the input_line_pointer around the call
|
||||
to md_assemble.
|
||||
* config/tc-s12z.c (md_assemble): Revert previous delta.
|
||||
|
||||
2020-09-15 David Faust <david.faust@oracle.com>
|
||||
|
||||
* config/tc-bpf.h (md_single_noop_insn): Use 'ja 0' for no-op.
|
||||
|
||||
@ -3807,7 +3807,6 @@ md_assemble (char *str)
|
||||
return;
|
||||
}
|
||||
|
||||
char * saved_ilp = input_line_pointer;
|
||||
input_line_pointer = skip_whites (op_end);
|
||||
|
||||
size_t i;
|
||||
@ -3817,17 +3816,15 @@ md_assemble (char *str)
|
||||
if (0 == strcmp (name, opc->name))
|
||||
{
|
||||
if (opc->parse_operands (opc))
|
||||
{
|
||||
input_line_pointer = saved_ilp;
|
||||
return;
|
||||
}
|
||||
return;
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
as_bad (_("Invalid instruction: \"%s\""), str);
|
||||
as_bad (_("First invalid token: \"%s\""), fail_line_pointer);
|
||||
input_line_pointer = saved_ilp;
|
||||
while (*input_line_pointer++)
|
||||
;
|
||||
}
|
||||
|
||||
|
||||
|
||||
@ -3530,7 +3530,12 @@ s_nop (int ignore ATTRIBUTE_UNUSED)
|
||||
if (asprintf (&nop, "%s", md_single_noop_insn) < 0)
|
||||
as_fatal ("%s", xstrerror (errno));
|
||||
|
||||
/* Some targets assume that they can update input_line_pointer inside
|
||||
md_assemble, and, worse, that they can leave it assigned to the string
|
||||
pointer that was provided as an argument. So preserve ilp here. */
|
||||
char * saved_ilp = input_line_pointer;
|
||||
md_assemble (nop);
|
||||
input_line_pointer = saved_ilp;
|
||||
free (nop);
|
||||
#endif
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user