[patch, avr, applied] PR34307: Fix illegal opcode diagnostic
Georg-Johann Lay
avr@gjlay.de
Sun Jun 21 16:47:20 GMT 2026
When there is an AVR instruction in include/opcode/avr.h that is not
supported by a specific core, then gas will diagnose with the mnemonic
of the next instruction:
mul 1,2
mulsu 1,1
lat
$ avr-as x.sx
x.sx: Assembler messages:
x.sx:1: Error: illegal opcode or for mcu avr2
x.sx:2: Error: illegal opcode fmul for mcu avr2
x.sx:3: Error: illegal opcode movw for mcu avr2
The reason is that in gas/config/tc-avr.c::md_assemble() we have this loop:
while ((opcode->isa & avr_mcu->isa) != opcode->isa)
{
opcode++;
if (opcode->name && strcmp(op, opcode->name))
{
as_bad (_("illegal opcode %s for mcu %s"),
opcode->name, avr_mcu->name);
return;
}
}
which in the as_bad case prints the next instruction's mnemonic due to
the opcode++ above.
Applied as obvious.
Johann
--
AVR: PR34307 - Fix diagnostic for unknown ISA opcode
When there is an AVR instruction in include/opcode/avr.h that
is not supported by a specific MCU, then gas will diagnose
with the mnemonic of the next instruction:
mul 1,2
mulsu 1,1
lat
$ avr-as x.sx
x.sx: Assembler messages:
x.sx:1: Error: illegal opcode or for mcu avr2
x.sx:2: Error: illegal opcode fmul for mcu avr2
x.sx:3: Error: illegal opcode movw for mcu avr2
The reason is that in gas/config/tc-avr.c::md_assemble() we have:
while ((opcode->isa & avr_mcu->isa) != opcode->isa)
{
opcode++;
if (opcode->name && strcmp(op, opcode->name))
{
as_bad (_("illegal opcode %s for mcu %s"),
opcode->name, avr_mcu->name);
return;
}
}
which in the as_bad case prints the next instruction's mnemonic
due to the opcode++ above.
gas/
* config/tc-avr.c (md_assemble): Use right index to diagnose
an opcode that are not supported by the MCU.
* testsuite/gas/avr/pr34307-1.d: New test.
* testsuite/gas/avr/pr34307-1.s: New test source.
* testsuite/gas/avr/pr34307-2.d: New test.
* testsuite/gas/avr/pr34307-2.s: New test source.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: binutils-pr34307.diff
Type: text/x-patch
Size: 2980 bytes
Desc: not available
URL: <https://sourceware.org/pipermail/binutils/attachments/20260621/f2e628cc/attachment.bin>
More information about the Binutils
mailing list