forked from Imagelibrary/binutils-gdb
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
@@ -815,8 +815,7 @@ i386_linux_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch)
|
||||
i386_linux_record_tdep.size_old_gid_t = 2;
|
||||
i386_linux_record_tdep.size_old_uid_t = 2;
|
||||
i386_linux_record_tdep.size_fd_set = 128;
|
||||
i386_linux_record_tdep.size_dirent = 268;
|
||||
i386_linux_record_tdep.size_dirent64 = 276;
|
||||
i386_linux_record_tdep.size_old_dirent = 268;
|
||||
i386_linux_record_tdep.size_statfs = 64;
|
||||
i386_linux_record_tdep.size_statfs64 = 84;
|
||||
i386_linux_record_tdep.size_sockaddr = 16;
|
||||
|
||||
Reference in New Issue
Block a user