https://sourceware.org/bugzilla/show_bug.cgi?id=31617

            Bug ID: 31617
           Summary: VAX: Check immediates to match expected operand type
           Product: binutils
           Version: unspecified
            Status: UNCONFIRMED
          Severity: normal
          Priority: P2
         Component: gas
          Assignee: unassigned at sourceware dot org
          Reporter: jbg...@lug-owl.de
  Target Milestone: ---

In NetBSD's src/sys/arch/vax/vax/unimpl_emul.S, we had three bogus assembler
statements:

        movq $0f0.0, TMPFRAC2
        movd $0f0.0, TMPFRAC1
        movd $0f0, (%r0)

NOVQ is ment to work on a 64bit (integer) value, MOVD is ment to work on a
D_Float type (64bit wide.) The supplied immediate value is of type F_Float and
thus only 32bit wide.

Compiling the actual unimpl_emul.S resulted in observable differences: The
generated immediate was correctly rendered as 64bit wide, with the low 32bit
containing the correctly parsed F_Float, but the upper 32bit contained random
stale data. Thus, interpreted as D_Float, the value is no longer 0.0 .

As we know the expected types for all instructions, we'd be able to reject such
a situation where not even the size is correct.

-- 
You are receiving this mail because:
You are on the CC list for the bug.

Reply via email to