forked from Imagelibrary/binutils-gdb
[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>
This commit is contained in:
@@ -556,6 +556,10 @@ amd64_canonicalize_syscall (enum amd64_syscall syscall_number)
|
||||
case amd64_x32_sys_accept:
|
||||
return gdb_sys_accept;
|
||||
|
||||
case amd64_sys_accept4:
|
||||
case amd64_x32_sys_accept4:
|
||||
return gdb_sys_accept4;
|
||||
|
||||
case amd64_sys_sendto:
|
||||
case amd64_x32_sys_sendto:
|
||||
return gdb_sys_sendto;
|
||||
|
||||
Reference in New Issue
Block a user