From 7571f7f297c8d8b4fb4657f84437b1d156957e16 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Marcin=20Ko=C5=9Bcielnicki?= Date: Fri, 30 Oct 2015 15:51:57 +0000 Subject: [PATCH] gdb/linux-record: Fix sizes of sigaction and sigset_t The values were mistakenly set to size of glibc's sigset_t (128 bytes) and sigaction (140 or 152 bytes) instead of the kernel ones. The kernel has 4 or 8 byte old_sigset_t, 8 byte sigset_t, 16 or 32 byte old_sigaction, 20 or 32 byte sigaction. gdb/ChangeLog: * aarch64-linux-tdep.c (aarch64_linux_init_abi): Fix size_sigaction, size_sigset_t, size_old_sigaction, size_old_sigset_t. * amd64-linux-tdep.c (amd64_linux_init_abi): Fix size_sigaction, size_sigset_t, size_old_sigaction, size_old_sigset_t. (amd64_x32_linux_init_abi): Fix size_sigaction, size_sigset_t, size_old_sigaction, size_old_sigset_t. * arm-linux-tdep.c (arm_linux_init_abi): Fix size_sigaction, size_old_sigaction, size_old_sigset_t. * i386-linux-tdep.c (i386_linux_init_abi): Fix size_sigaction, size_old_sigaction, size_old_sigset_t. * ppc-linux-tdep.c (ppc_init_linux_record_tdep): Fix size_sigaction, size_sigset_t, size_old_sigaction, size_old_sigset_t. --- gdb/ChangeLog | 15 +++++++++++++++ gdb/aarch64-linux-tdep.c | 8 ++++---- gdb/amd64-linux-tdep.c | 16 ++++++++-------- gdb/arm-linux-tdep.c | 6 +++--- gdb/i386-linux-tdep.c | 6 +++--- gdb/ppc-linux-tdep.c | 16 ++++++++-------- 6 files changed, 41 insertions(+), 26 deletions(-) diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 36e9be569e4..87a462e34a3 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,18 @@ +2015-10-30 Marcin Kościelnicki + + * aarch64-linux-tdep.c (aarch64_linux_init_abi): Fix size_sigaction, + size_sigset_t, size_old_sigaction, size_old_sigset_t. + * amd64-linux-tdep.c (amd64_linux_init_abi): Fix size_sigaction, + size_sigset_t, size_old_sigaction, size_old_sigset_t. + (amd64_x32_linux_init_abi): Fix size_sigaction, size_sigset_t, + size_old_sigaction, size_old_sigset_t. + * arm-linux-tdep.c (arm_linux_init_abi): Fix size_sigaction, + size_old_sigaction, size_old_sigset_t. + * i386-linux-tdep.c (i386_linux_init_abi): Fix size_sigaction, + size_old_sigaction, size_old_sigset_t. + * ppc-linux-tdep.c (ppc_init_linux_record_tdep): Fix size_sigaction, + size_sigset_t, size_old_sigaction, size_old_sigset_t. + 2015-10-30 Marcin Kościelnicki * arm-linux-tdep.c (arm_linux_init_abi): Fix size_[ug]id. diff --git a/gdb/aarch64-linux-tdep.c b/gdb/aarch64-linux-tdep.c index 4169200f00e..57cb9735870 100644 --- a/gdb/aarch64-linux-tdep.c +++ b/gdb/aarch64-linux-tdep.c @@ -1000,8 +1000,8 @@ aarch64_linux_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch) aarch64_linux_record_tdep.size_flock = 32; aarch64_linux_record_tdep.size_oldold_utsname = 45; aarch64_linux_record_tdep.size_ustat = 32; - aarch64_linux_record_tdep.size_old_sigaction = 152; - aarch64_linux_record_tdep.size_old_sigset_t = 128; + aarch64_linux_record_tdep.size_old_sigaction = 32; + aarch64_linux_record_tdep.size_old_sigset_t = 8; aarch64_linux_record_tdep.size_rlimit = 16; aarch64_linux_record_tdep.size_rusage = 144; aarch64_linux_record_tdep.size_timeval = 16; @@ -1037,8 +1037,8 @@ aarch64_linux_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch) aarch64_linux_record_tdep.size_NFS_FHSIZE = 32; aarch64_linux_record_tdep.size_knfsd_fh = 132; aarch64_linux_record_tdep.size_TASK_COMM_LEN = 16; - aarch64_linux_record_tdep.size_sigaction = 152; - aarch64_linux_record_tdep.size_sigset_t = 128; + aarch64_linux_record_tdep.size_sigaction = 32; + aarch64_linux_record_tdep.size_sigset_t = 8; aarch64_linux_record_tdep.size_siginfo_t = 128; aarch64_linux_record_tdep.size_cap_user_data_t = 8; aarch64_linux_record_tdep.size_stack_t = 24; diff --git a/gdb/amd64-linux-tdep.c b/gdb/amd64-linux-tdep.c index 59c318d65c5..3bca3c83b2e 100644 --- a/gdb/amd64-linux-tdep.c +++ b/gdb/amd64-linux-tdep.c @@ -1890,10 +1890,10 @@ amd64_linux_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch) amd64_linux_record_tdep.size_ustat = 32; /* ADM64 doesn't need this size because it doesn't have sys_sigaction but sys_rt_sigaction. */ - amd64_linux_record_tdep.size_old_sigaction = 152; + amd64_linux_record_tdep.size_old_sigaction = 32; /* ADM64 doesn't need this size because it doesn't have sys_sigpending but sys_rt_sigpending. */ - amd64_linux_record_tdep.size_old_sigset_t = 128; + amd64_linux_record_tdep.size_old_sigset_t = 8; amd64_linux_record_tdep.size_rlimit = 16; amd64_linux_record_tdep.size_rusage = 144; amd64_linux_record_tdep.size_timeval = 16; @@ -1933,8 +1933,8 @@ amd64_linux_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch) amd64_linux_record_tdep.size_NFS_FHSIZE = 32; amd64_linux_record_tdep.size_knfsd_fh = 132; amd64_linux_record_tdep.size_TASK_COMM_LEN = 16; - amd64_linux_record_tdep.size_sigaction = 152; - amd64_linux_record_tdep.size_sigset_t = 128; + amd64_linux_record_tdep.size_sigaction = 32; + amd64_linux_record_tdep.size_sigset_t = 8; amd64_linux_record_tdep.size_siginfo_t = 128; amd64_linux_record_tdep.size_cap_user_data_t = 8; amd64_linux_record_tdep.size_stack_t = 24; @@ -2106,10 +2106,10 @@ amd64_x32_linux_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch) amd64_x32_linux_record_tdep.size_ustat = 32; /* ADM64 doesn't need this size because it doesn't have sys_sigaction but sys_rt_sigaction. */ - amd64_x32_linux_record_tdep.size_old_sigaction = 152; + amd64_x32_linux_record_tdep.size_old_sigaction = 16; /* ADM64 doesn't need this size because it doesn't have sys_sigpending but sys_rt_sigpending. */ - amd64_x32_linux_record_tdep.size_old_sigset_t = 128; + amd64_x32_linux_record_tdep.size_old_sigset_t = 4; amd64_x32_linux_record_tdep.size_rlimit = 16; amd64_x32_linux_record_tdep.size_rusage = 144; amd64_x32_linux_record_tdep.size_timeval = 16; @@ -2149,8 +2149,8 @@ amd64_x32_linux_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch) amd64_x32_linux_record_tdep.size_NFS_FHSIZE = 32; amd64_x32_linux_record_tdep.size_knfsd_fh = 132; amd64_x32_linux_record_tdep.size_TASK_COMM_LEN = 16; - amd64_x32_linux_record_tdep.size_sigaction = 152; - amd64_x32_linux_record_tdep.size_sigset_t = 128; + amd64_x32_linux_record_tdep.size_sigaction = 20; + amd64_x32_linux_record_tdep.size_sigset_t = 8; amd64_x32_linux_record_tdep.size_siginfo_t = 128; amd64_x32_linux_record_tdep.size_cap_user_data_t = 8; amd64_x32_linux_record_tdep.size_stack_t = 24; diff --git a/gdb/arm-linux-tdep.c b/gdb/arm-linux-tdep.c index 940f01fd4c0..88d818de730 100644 --- a/gdb/arm-linux-tdep.c +++ b/gdb/arm-linux-tdep.c @@ -1487,8 +1487,8 @@ arm_linux_init_abi (struct gdbarch_info info, arm_linux_record_tdep.size_flock = 16; arm_linux_record_tdep.size_oldold_utsname = 45; arm_linux_record_tdep.size_ustat = 20; - arm_linux_record_tdep.size_old_sigaction = 140; - arm_linux_record_tdep.size_old_sigset_t = 128; + arm_linux_record_tdep.size_old_sigaction = 16; + arm_linux_record_tdep.size_old_sigset_t = 4; arm_linux_record_tdep.size_rlimit = 8; arm_linux_record_tdep.size_rusage = 72; arm_linux_record_tdep.size_timeval = 8; @@ -1524,7 +1524,7 @@ arm_linux_init_abi (struct gdbarch_info info, arm_linux_record_tdep.size_NFS_FHSIZE = 32; arm_linux_record_tdep.size_knfsd_fh = 132; arm_linux_record_tdep.size_TASK_COMM_LEN = 16; - arm_linux_record_tdep.size_sigaction = 140; + arm_linux_record_tdep.size_sigaction = 20; arm_linux_record_tdep.size_sigset_t = 8; arm_linux_record_tdep.size_siginfo_t = 128; arm_linux_record_tdep.size_cap_user_data_t = 12; diff --git a/gdb/i386-linux-tdep.c b/gdb/i386-linux-tdep.c index af9c28aaa2b..0bf2cdcba68 100644 --- a/gdb/i386-linux-tdep.c +++ b/gdb/i386-linux-tdep.c @@ -806,8 +806,8 @@ i386_linux_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch) i386_linux_record_tdep.size_flock = 16; i386_linux_record_tdep.size_oldold_utsname = 45; i386_linux_record_tdep.size_ustat = 20; - i386_linux_record_tdep.size_old_sigaction = 140; - i386_linux_record_tdep.size_old_sigset_t = 128; + i386_linux_record_tdep.size_old_sigaction = 16; + i386_linux_record_tdep.size_old_sigset_t = 4; i386_linux_record_tdep.size_rlimit = 8; i386_linux_record_tdep.size_rusage = 72; i386_linux_record_tdep.size_timeval = 8; @@ -843,7 +843,7 @@ i386_linux_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch) i386_linux_record_tdep.size_NFS_FHSIZE = 32; i386_linux_record_tdep.size_knfsd_fh = 132; i386_linux_record_tdep.size_TASK_COMM_LEN = 16; - i386_linux_record_tdep.size_sigaction = 140; + i386_linux_record_tdep.size_sigaction = 20; i386_linux_record_tdep.size_sigset_t = 8; i386_linux_record_tdep.size_siginfo_t = 128; i386_linux_record_tdep.size_cap_user_data_t = 12; diff --git a/gdb/ppc-linux-tdep.c b/gdb/ppc-linux-tdep.c index 79d115eb903..896f4109f60 100644 --- a/gdb/ppc-linux-tdep.c +++ b/gdb/ppc-linux-tdep.c @@ -1423,8 +1423,8 @@ ppc_init_linux_record_tdep (struct linux_record_tdep *record_tdep, record_tdep->size_flock = 32; record_tdep->size_oldold_utsname = 45; record_tdep->size_ustat = 32; - record_tdep->size_old_sigaction = 152; - record_tdep->size_old_sigset_t = 128; + record_tdep->size_old_sigaction = 32; + record_tdep->size_old_sigset_t = 8; record_tdep->size_rlimit = 16; record_tdep->size_rusage = 144; record_tdep->size_timeval = 16; @@ -1457,8 +1457,8 @@ ppc_init_linux_record_tdep (struct linux_record_tdep *record_tdep, record_tdep->size_NFS_FHSIZE = 32; record_tdep->size_knfsd_fh = 132; record_tdep->size_TASK_COMM_LEN = 32; - record_tdep->size_sigaction = 152; - record_tdep->size_sigset_t = 128; + record_tdep->size_sigaction = 32; + record_tdep->size_sigset_t = 8; record_tdep->size_siginfo_t = 128; record_tdep->size_cap_user_data_t = 8; record_tdep->size_stack_t = 24; @@ -1490,8 +1490,8 @@ ppc_init_linux_record_tdep (struct linux_record_tdep *record_tdep, record_tdep->size_flock = 16; record_tdep->size_oldold_utsname = 45; record_tdep->size_ustat = 20; - record_tdep->size_old_sigaction = 152; - record_tdep->size_old_sigset_t = 128; + record_tdep->size_old_sigaction = 16; + record_tdep->size_old_sigset_t = 4; record_tdep->size_rlimit = 8; record_tdep->size_rusage = 72; record_tdep->size_timeval = 8; @@ -1524,8 +1524,8 @@ ppc_init_linux_record_tdep (struct linux_record_tdep *record_tdep, record_tdep->size_NFS_FHSIZE = 32; record_tdep->size_knfsd_fh = 132; record_tdep->size_TASK_COMM_LEN = 32; - record_tdep->size_sigaction = 140; - record_tdep->size_sigset_t = 128; + record_tdep->size_sigaction = 20; + record_tdep->size_sigset_t = 8; record_tdep->size_siginfo_t = 128; record_tdep->size_cap_user_data_t = 4; record_tdep->size_stack_t = 12; -- 2.30.2