#854207 gdb: Reverse debugging broken on Debian's libc because of missing support for vorpd in memset

Package:
gdb
Source:
gdb
Description:
GNU Debugger
Submitter:
Sami Liedes
Date:
2025-08-04 17:09:03 UTC
Severity:
normal
Tags:
#854207#5
Date:
2017-02-05 01:48:32 UTC
From:
To:
Reverse debugging is currently broken with sid's combination of libc
and GDB on x86_64. The problem is that support for some instructions
is missing; one of these is vorpd, used at least in libc's memset():

============================================================
$ gcc gdb-test.c -o gdb-test -g
$ gdb -q gdb-test
Reading symbols from gdb-test...done.
(gdb) start
Temporary breakpoint 1 at 0x6d4: file gdb-test.c, line 10.
Starting program: /home/sliedes/gdb-test/gdb-test

Temporary breakpoint 1, main () at gdb-test.c:10
10	    foo();
(gdb) target record-full
(gdb) c
Continuing.
Process record does not support instruction 0xc5 at address 0x7ffff7deea70.
Process record: failed to record execution log.

Program stopped.
_dl_runtime_resolve_avx_slow () at ../sysdeps/x86_64/dl-trampoline.h:70
70	../sysdeps/x86_64/dl-trampoline.h: No such file or directory.
(gdb) disas
Dump of assembler code for function _dl_runtime_resolve_avx_slow:
=> 0x00007ffff7deea70 <+0>:	vorpd  %ymm0,%ymm1,%ymm8
   0x00007ffff7deea74 <+4>:	vorpd  %ymm2,%ymm3,%ymm9
   0x00007ffff7deea78 <+8>:	vorpd  %ymm4,%ymm5,%ymm10
   0x00007ffff7deea7c <+12>:	vorpd  %ymm6,%ymm7,%ymm11
   0x00007ffff7deea80 <+16>:	vorpd  %ymm8,%ymm9,%ymm9
   0x00007ffff7deea85 <+21>:	vorpd  %ymm10,%ymm11,%ymm10
   0x00007ffff7deea8a <+26>:	vpcmpeqd %xmm8,%xmm8,%xmm8
   0x00007ffff7deea8f <+31>:	vorpd  %ymm9,%ymm10,%ymm10
   0x00007ffff7deea94 <+36>:	vptest %ymm10,%ymm8
   0x00007ffff7deea99 <+41>:	bnd jae 0x7ffff7deead0 <_dl_runtime_resolve_avx>
   0x00007ffff7deea9c <+44>:	vzeroupper
   0x00007ffff7deea9f <+47>:	bnd jmpq 0x7ffff7def3f0 <_dl_runtime_resolve_sse_vex>
End of assembler dump.
(gdb) reverse-stepi
0x0000555555554556 in ?? ()
(gdb)
0x0000555555554550 in ?? ()
(gdb)
0x000055555555456b in memset@plt ()
(gdb)
============================================================