Command to reproduce the issue:
echo "vmovaps 0x40(,%rax,1),%zmm0" | as --64 -o avx.o && objdump -d avx.o | grep vmovaps
The expected output is that the objdump output matches the vmovaps instruction input. When using binutils with the bug, the initial 0x40 will be incorrect.
From an Ubuntu 20.04 system:
$ echo "vmovaps 0x40(,%rax,1),%zmm0" | as --64 -o avx.o && objdump -d avx.o | grep vmovaps 0: 62 f1 7c 48 28 04 05 vmovaps 0x40(,%rax,1),%zmm0
On an Ubuntu 18.04 system:
$ echo "vmovaps 0x40(,%rax,1),%zmm0" | as --64 -o avx.o && objdump -d avx.o | grep vmovaps 0: 62 f1 7c 48 28 04 05 vmovaps 0x1(,%rax,1),%zmm0
Command to reproduce the issue:
echo "vmovaps 0x40(,% rax,1), %zmm0" | as --64 -o avx.o && objdump -d avx.o | grep vmovaps
The expected output is that the objdump output matches the vmovaps instruction input. When using binutils with the bug, the initial 0x40 will be incorrect.
From an Ubuntu 20.04 system:
$ echo "vmovaps 0x40(,% rax,1), %zmm0" | as --64 -o avx.o && objdump -d avx.o | grep vmovaps
0: 62 f1 7c 48 28 04 05 vmovaps 0x40(,%rax,1),%zmm0
On an Ubuntu 18.04 system:
$ echo "vmovaps 0x40(,% rax,1), %zmm0" | as --64 -o avx.o && objdump -d avx.o | grep vmovaps
0: 62 f1 7c 48 28 04 05 vmovaps 0x1(,%rax,1),%zmm0