History log of /openbsd-current/gnu/usr.bin/binutils-2.17/opcodes/i386-dis.c
Revision (<<< Hide revision tags) (Show revision tags >>>) Date Author Comments
# 1.12 17-May-2023 guenther

Add support for disassembling CET (including endbr64), XSS, OSPKE,
clflushopt, clwb, ptwrite, rdpid, serialize, WAITPKG, and vmfunc
extensions, as well as part of TSX. tpause and umonitor addr size
handling isn't 100% correct, but good enough to get the instruction
boundary.

Correct decoding of rex64 {fxsave,fxrstor,xsave,xrstor,xsaveopt}
to instead use a '64' suffix, ala "fxsave64".

"good enough" ok kettenis@ deraadt@ mlarkin@


Revision tags: OPENBSD_6_4_BASE OPENBSD_6_5_BASE OPENBSD_6_6_BASE OPENBSD_6_7_BASE OPENBSD_6_8_BASE OPENBSD_6_9_BASE OPENBSD_7_0_BASE OPENBSD_7_1_BASE OPENBSD_7_2_BASE OPENBSD_7_3_BASE
# 1.11 09-Sep-2018 guenther

Teach binutils how to assemble INVPCID and how to disassemble
INV{EPT,VPID,PCID}

ok mlarkin@


Revision tags: OPENBSD_6_1_BASE OPENBSD_6_2_BASE OPENBSD_6_3_BASE
# 1.10 10-Sep-2016 jsg

Bring in FreeBSD changes to prevent clang triggering
-Wstring-plus-int -Wempty-body and -Wshift-negative-value warnings
as binutils is built with -Werror.

ok guenther@ millert@


Revision tags: OPENBSD_5_9_BASE OPENBSD_6_0_BASE
# 1.9 21-Dec-2015 jsg

Recognise the rdseed instruction introduced with Broadwell.
Similar to changes made in FreeBSD.
ok kettenis@


Revision tags: OPENBSD_5_8_BASE
# 1.8 17-Jul-2015 miod

Correctly consume mandatory 0x66 prefix when disassembling
aes{dec{,last},enc{,last},imc} instructions (regression in 2.17).

Correctly disassemble aeskeygenassist.

Before (binutils 2.15):
0: 66 0f 38 db c8 aesimc %xmm0,%xmm1
5: 66 0f 3a 44 da 04 pclmulqdq $0x4,%xmm2,%xmm3
b: 66 0f 3a 44 ec 10 pclmullqhqdq %xmm4,%xmm5
11: 66 data16
12: 0f .byte 0xf
13: 3a df cmp %bh,%bl
15: fe 08 decb (%rax)

Currently (binutils 2.17):
0: 66 data16
1: 0f 38 db aesimc %xmm1,%xmm1
4: c8 66 0f 3a enterq $0xf66,$0x3a
8: 44 da 04 66 rexX fiaddl (%rsi,2)
c: 0f 3a 44 ec 10 pclmullqhqdq %xmm4,%xmm5
11: 66 data16
12: 0f .byte 0xf
13: 3a df cmp %bh,%bl
15: fe 08 decb (%rax)

With these changes:
0: 66 0f 38 db c8 aesimc %xmm0,%xmm1
5: 66 0f 3a 44 da 04 pclmulqdq $0x4,%xmm2,%xmm3
b: 66 0f 3a 44 ec 10 pclmullqhqdq %xmm4,%xmm5
11: 66 0f 3a df fe 08 aeskeygenassist $0x8,%xmm6,%xmm7


# 1.7 25-May-2015 guenther

Teach binutils the {rd,wr}{fs,gs}base instructions.

Flag bits worked out with kettenis@
ok mlarkin@


Revision tags: OPENBSD_5_5_BASE OPENBSD_5_6_BASE OPENBSD_5_7_BASE
# 1.6 09-Feb-2014 guenther

Add support for i386 XSAVE family of instructions: xgetbv, xsetbv, xsave,
xrstor, and xsaveopt.

based on kettenis's original that did xgetbv and xsetbv
ok kettenis@


Revision tags: OPENBSD_5_3_BASE OPENBSD_5_4_BASE
# 1.5 18-Oct-2012 jsg

Add support for stac/clac instructions to manipulate the flag
that controls the behaviour of Intel's Supervisor Mode Access Prevention
(SMAP) feature.

'looks correct' miod@ ok deraadt@


# 1.4 07-Sep-2012 naddy

disassemble the rdrand instruction on i386/amd64


Revision tags: OPENBSD_5_0_BASE OPENBSD_5_1_BASE OPENBSD_5_2_BASE
# 1.3 10-Jul-2011 jsg

remove a duplicate definition of BadOp(), fixes compilation on i386
ok miod@


# 1.2 24-Apr-2011 miod

A first attempt at merging our local changes and fixes into the 2.17 codebase.
ld(1) needs a lot more work, as the upstream code evolved significantly since
2.15, mostly due to changes in PIE binaries layout, and we had already
diverged significantly to implement W^X.


# 1.1 24-Apr-2011 miod

branches: 1.1.1;
Initial revision


# 1.11 09-Sep-2018 guenther

Teach binutils how to assemble INVPCID and how to disassemble
INV{EPT,VPID,PCID}

ok mlarkin@


Revision tags: OPENBSD_6_1_BASE OPENBSD_6_2_BASE OPENBSD_6_3_BASE
# 1.10 10-Sep-2016 jsg

Bring in FreeBSD changes to prevent clang triggering
-Wstring-plus-int -Wempty-body and -Wshift-negative-value warnings
as binutils is built with -Werror.

ok guenther@ millert@


Revision tags: OPENBSD_5_9_BASE OPENBSD_6_0_BASE
# 1.9 21-Dec-2015 jsg

Recognise the rdseed instruction introduced with Broadwell.
Similar to changes made in FreeBSD.
ok kettenis@


Revision tags: OPENBSD_5_8_BASE
# 1.8 17-Jul-2015 miod

Correctly consume mandatory 0x66 prefix when disassembling
aes{dec{,last},enc{,last},imc} instructions (regression in 2.17).

Correctly disassemble aeskeygenassist.

Before (binutils 2.15):
0: 66 0f 38 db c8 aesimc %xmm0,%xmm1
5: 66 0f 3a 44 da 04 pclmulqdq $0x4,%xmm2,%xmm3
b: 66 0f 3a 44 ec 10 pclmullqhqdq %xmm4,%xmm5
11: 66 data16
12: 0f .byte 0xf
13: 3a df cmp %bh,%bl
15: fe 08 decb (%rax)

Currently (binutils 2.17):
0: 66 data16
1: 0f 38 db aesimc %xmm1,%xmm1
4: c8 66 0f 3a enterq $0xf66,$0x3a
8: 44 da 04 66 rexX fiaddl (%rsi,2)
c: 0f 3a 44 ec 10 pclmullqhqdq %xmm4,%xmm5
11: 66 data16
12: 0f .byte 0xf
13: 3a df cmp %bh,%bl
15: fe 08 decb (%rax)

With these changes:
0: 66 0f 38 db c8 aesimc %xmm0,%xmm1
5: 66 0f 3a 44 da 04 pclmulqdq $0x4,%xmm2,%xmm3
b: 66 0f 3a 44 ec 10 pclmullqhqdq %xmm4,%xmm5
11: 66 0f 3a df fe 08 aeskeygenassist $0x8,%xmm6,%xmm7


# 1.7 25-May-2015 guenther

Teach binutils the {rd,wr}{fs,gs}base instructions.

Flag bits worked out with kettenis@
ok mlarkin@


Revision tags: OPENBSD_5_5_BASE OPENBSD_5_6_BASE OPENBSD_5_7_BASE
# 1.6 09-Feb-2014 guenther

Add support for i386 XSAVE family of instructions: xgetbv, xsetbv, xsave,
xrstor, and xsaveopt.

based on kettenis's original that did xgetbv and xsetbv
ok kettenis@


Revision tags: OPENBSD_5_3_BASE OPENBSD_5_4_BASE
# 1.5 18-Oct-2012 jsg

Add support for stac/clac instructions to manipulate the flag
that controls the behaviour of Intel's Supervisor Mode Access Prevention
(SMAP) feature.

'looks correct' miod@ ok deraadt@


# 1.4 07-Sep-2012 naddy

disassemble the rdrand instruction on i386/amd64


Revision tags: OPENBSD_5_0_BASE OPENBSD_5_1_BASE OPENBSD_5_2_BASE
# 1.3 10-Jul-2011 jsg

remove a duplicate definition of BadOp(), fixes compilation on i386
ok miod@


# 1.2 24-Apr-2011 miod

A first attempt at merging our local changes and fixes into the 2.17 codebase.
ld(1) needs a lot more work, as the upstream code evolved significantly since
2.15, mostly due to changes in PIE binaries layout, and we had already
diverged significantly to implement W^X.


# 1.1 24-Apr-2011 miod

branches: 1.1.1;
Initial revision


Revision tags: OPENBSD_6_1_BASE OPENBSD_6_2_BASE
# 1.10 10-Sep-2016 jsg

Bring in FreeBSD changes to prevent clang triggering
-Wstring-plus-int -Wempty-body and -Wshift-negative-value warnings
as binutils is built with -Werror.

ok guenther@ millert@


Revision tags: OPENBSD_5_9_BASE OPENBSD_6_0_BASE
# 1.9 21-Dec-2015 jsg

Recognise the rdseed instruction introduced with Broadwell.
Similar to changes made in FreeBSD.
ok kettenis@


Revision tags: OPENBSD_5_8_BASE
# 1.8 17-Jul-2015 miod

Correctly consume mandatory 0x66 prefix when disassembling
aes{dec{,last},enc{,last},imc} instructions (regression in 2.17).

Correctly disassemble aeskeygenassist.

Before (binutils 2.15):
0: 66 0f 38 db c8 aesimc %xmm0,%xmm1
5: 66 0f 3a 44 da 04 pclmulqdq $0x4,%xmm2,%xmm3
b: 66 0f 3a 44 ec 10 pclmullqhqdq %xmm4,%xmm5
11: 66 data16
12: 0f .byte 0xf
13: 3a df cmp %bh,%bl
15: fe 08 decb (%rax)

Currently (binutils 2.17):
0: 66 data16
1: 0f 38 db aesimc %xmm1,%xmm1
4: c8 66 0f 3a enterq $0xf66,$0x3a
8: 44 da 04 66 rexX fiaddl (%rsi,2)
c: 0f 3a 44 ec 10 pclmullqhqdq %xmm4,%xmm5
11: 66 data16
12: 0f .byte 0xf
13: 3a df cmp %bh,%bl
15: fe 08 decb (%rax)

With these changes:
0: 66 0f 38 db c8 aesimc %xmm0,%xmm1
5: 66 0f 3a 44 da 04 pclmulqdq $0x4,%xmm2,%xmm3
b: 66 0f 3a 44 ec 10 pclmullqhqdq %xmm4,%xmm5
11: 66 0f 3a df fe 08 aeskeygenassist $0x8,%xmm6,%xmm7


# 1.7 25-May-2015 guenther

Teach binutils the {rd,wr}{fs,gs}base instructions.

Flag bits worked out with kettenis@
ok mlarkin@


Revision tags: OPENBSD_5_5_BASE OPENBSD_5_6_BASE OPENBSD_5_7_BASE
# 1.6 09-Feb-2014 guenther

Add support for i386 XSAVE family of instructions: xgetbv, xsetbv, xsave,
xrstor, and xsaveopt.

based on kettenis's original that did xgetbv and xsetbv
ok kettenis@


Revision tags: OPENBSD_5_3_BASE OPENBSD_5_4_BASE
# 1.5 18-Oct-2012 jsg

Add support for stac/clac instructions to manipulate the flag
that controls the behaviour of Intel's Supervisor Mode Access Prevention
(SMAP) feature.

'looks correct' miod@ ok deraadt@


# 1.4 07-Sep-2012 naddy

disassemble the rdrand instruction on i386/amd64


Revision tags: OPENBSD_5_0_BASE OPENBSD_5_1_BASE OPENBSD_5_2_BASE
# 1.3 10-Jul-2011 jsg

remove a duplicate definition of BadOp(), fixes compilation on i386
ok miod@


# 1.2 24-Apr-2011 miod

A first attempt at merging our local changes and fixes into the 2.17 codebase.
ld(1) needs a lot more work, as the upstream code evolved significantly since
2.15, mostly due to changes in PIE binaries layout, and we had already
diverged significantly to implement W^X.


# 1.1 24-Apr-2011 miod

branches: 1.1.1;
Initial revision