]> git.ipfire.org Git - thirdparty/binutils-gdb.git/commit
[gdb/record] Support recording syscall accept4
authorTom de Vries <tdevries@suse.de>
Thu, 13 Mar 2025 06:41:51 +0000 (07:41 +0100)
committerTom de Vries <tdevries@suse.de>
Thu, 13 Mar 2025 06:41:51 +0000 (07:41 +0100)
commitf9f033220046f011aeb259469cb15fe8141b213b
tree51e36d8d84e5088d57253697afb6375cb1d3d6c9
parentfbfb29b304ef7d3270a918b5fc60c22b0909367e
[gdb/record] Support recording syscall accept4

While reviewing the enum gdb_syscall entries with values >= 500, I noticed
that gdb_sys_accept exists, but gdb_sys_accept4 doesn't, while recording
support is essentially the same, given that the difference in interface is
only an extra int parameter:
...
int accept (int sockfd, struct sockaddr *addr, socklen_t *addrlen);
int accept4 (int sockfd, struct sockaddr *addr, socklen_t *addrlen, int flags);
...

Fix this by:
- adding gdb_sys_accept4,
- supporting it in record_linux_system_call alongside gdb_sys_accept, and
- mapping to gdb_sys_accept4 in various syscall canonicalization functions.

The usual thing to do before the rewrite of i386_canonicalize_syscall would
have been to use the value from arch/x86/entry/syscalls/syscall_32.tbl:
...
  gdb_sys_accept4 = 364,
...
but that's no longer necessary, so instead we use some >= 500 value:
...
  gdb_sys_accept4 = 533,
...
to steer clear of the space where ppc_canonicalize_syscall and
s390_canonicalize_syscall do hard-coded number magic.

Tested on x86_64-linux, with and without target board unix/-m32, and
aarch64-linux.

Approved-By: Guinevere Larsen <guinevere@redhat.com>
gdb/aarch64-linux-tdep.c
gdb/amd64-linux-tdep.c
gdb/amd64-linux-tdep.h
gdb/arm-linux-tdep.c
gdb/i386-linux-tdep.c
gdb/linux-record.c
gdb/linux-record.h
gdb/loongarch-linux-tdep.c