mirror of
https://github.com/bminor/binutils-gdb.git
synced 2025-12-26 17:18:55 +00:00
gdb/linux-record: Fix readdir and getdents handling
getdents buffer size is given in bytes, not dirent entries (which have
variable size anyway). We don't need size_dirent and size_dirent64 for
this reason.
readdir, on the other hand, needs size of old_linux_dirent, which is
a somewhat different structure. Accordingly, rename size_dirent
to size_old_dirent.
gdb/ChangeLog:
* aarch64-linux-tdep.c (aarch64_linux_init_abi): Remove
size_dirent{,64}, add size_old_dirent.
* amd64-linux-tdep.c (amd64_linux_init_abi): Remove size_dirent{,64},
add size_old_dirent.
(amd64_x32_linux_init_abi): Remove size_dirent{,64}, add
size_old_dirent.
* arm-linux-tdep.c (arm_linux_init_abi): Remove size_dirent{,64},
add size_old_dirent.
* i386-linux-tdep.c (i386_linux_init_abi): Remove size_dirent{,64},
add size_old_dirent.
* linux-record.c (record_linux_system_call): Fix handling of readdir
and getdents{,64}.
* linux-record.h (struct linux_record_tdep): Remove size_dirent{,64},
add size_old_dirent.
* ppc-linux-tdep.c (ppc_init_linux_record_tdep): Remove
size_dirent{,64}, add size_old_dirent.
This commit is contained in:
committed by
Pedro Alves
parent
7571f7f297
commit
72aded8673
@@ -1905,8 +1905,8 @@ amd64_linux_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch)
|
||||
but sys_getresuid. */
|
||||
amd64_linux_record_tdep.size_old_uid_t = 2;
|
||||
amd64_linux_record_tdep.size_fd_set = 128;
|
||||
amd64_linux_record_tdep.size_dirent = 280;
|
||||
amd64_linux_record_tdep.size_dirent64 = 280;
|
||||
/* ADM64 doesn't need this size because it doesn't have sys_readdir. */
|
||||
amd64_linux_record_tdep.size_old_dirent = 280;
|
||||
amd64_linux_record_tdep.size_statfs = 120;
|
||||
amd64_linux_record_tdep.size_statfs64 = 120;
|
||||
amd64_linux_record_tdep.size_sockaddr = 16;
|
||||
@@ -2121,8 +2121,8 @@ amd64_x32_linux_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch)
|
||||
but sys_getresuid. */
|
||||
amd64_x32_linux_record_tdep.size_old_uid_t = 2;
|
||||
amd64_x32_linux_record_tdep.size_fd_set = 128;
|
||||
amd64_x32_linux_record_tdep.size_dirent = 280;
|
||||
amd64_x32_linux_record_tdep.size_dirent64 = 280;
|
||||
/* ADM64 doesn't need this size because it doesn't have sys_readdir. */
|
||||
amd64_x32_linux_record_tdep.size_old_dirent = 268;
|
||||
amd64_x32_linux_record_tdep.size_statfs = 120;
|
||||
amd64_x32_linux_record_tdep.size_statfs64 = 120;
|
||||
amd64_x32_linux_record_tdep.size_sockaddr = 16;
|
||||
|
||||
Reference in New Issue
Block a user