[PATCH] i386: Check invalid (%dx) usage
Jan Beulich
jbeulich@suse.com
Wed Nov 9 07:21:16 GMT 2022
On 08.11.2022 22:06, H.J. Lu wrote:
> On Mon, Nov 7, 2022 at 11:34 PM Jan Beulich <jbeulich@suse.com> wrote:
>> On 07.11.2022 20:58, H.J. Lu wrote:
>>> On Mon, Nov 7, 2022 at 3:44 AM Jan Beulich <jbeulich@suse.com> wrote:
>>>> x86: restrict use of (%dx)
>>>>
>>>> PR gas/29751
>>>> The AT&T mode special case operand (%dx) is valid to use only with
>>>> instructions nominally expecting %dx to specify an I/O port address.
>>>> Prefix the respective checking with an opcode check. Keep that as
>>>> simple as possible by recognizing that opcodes 0x64 and 0x66 (which
>>>
>>> Since current_templates doesn't point to the matched instruction,
>>> checking current_templates looks like abuse. I don't think error
>>> messages should be a concern here.
>>
>> We use current_templates in similar ways in quite a number of places,
>> when match_templates() hasn't run yet.
>
> Since the first template isn't the selected one, your check allows
> the invalid opcodes.
I guess I don't understand, but I guess I'll also give up. Which
template the check is done against doesn't really matter here, as
long as it's one with the correct mnemonic. We could of course
also re-order templates to have ones allowing for %dx first, but
I view any such ordering dependencies as fragile.
Jan
More information about the Binutils
mailing list