From: Tom de Vries Date: Tue, 3 Mar 2026 08:19:43 +0000 (+0100) Subject: [gdb/record] Fix syscall recording some more X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=23655c1e7f4f1839db9e2b1fcffde680be2e98e1;p=thirdparty%2Fbinutils-gdb.git [gdb/record] Fix syscall recording some more I ran into the same gdb.reverse/sigall-reverse.exp failure on ppc64le-linux, as fixed in commits: - commit 3686645cec9 ("[gdb/record] Fix return value for svc in aarch64_record_branch_except_sys"), and - commit 4ef576bdb7f ("[gdb/record] Fix return value for syscall in loongarch_record_syscall_insn"). The difference with those commits is that the problem is not due to confusion about a port-local enums (aarch64_record_result, loongarch_record_result). Instead, the port just treats return values 1 and -1 the same: ... if (tdep->ppc_syscall_record (regcache) != 0) return -1; ... Fix this by passing through the return value 1 instead. Likewise on s390x-linux. Tested on ppc64le-linux and s390x-linux. Reviewed-by: Abhay Kandpal --- diff --git a/gdb/rs6000-tdep.c b/gdb/rs6000-tdep.c index 8aa155e1f36..7d0902941a0 100644 --- a/gdb/rs6000-tdep.c +++ b/gdb/rs6000-tdep.c @@ -7187,8 +7187,9 @@ ppc_process_record (struct gdbarch *gdbarch, struct regcache *regcache, if (tdep->ppc_syscall_record != NULL) { - if (tdep->ppc_syscall_record (regcache) != 0) - return -1; + int res = tdep->ppc_syscall_record (regcache); + if (res != 0) + return res; } else { diff --git a/gdb/s390-tdep.c b/gdb/s390-tdep.c index 6cf5acbc542..f52e898047b 100644 --- a/gdb/s390-tdep.c +++ b/gdb/s390-tdep.c @@ -3242,8 +3242,9 @@ ex: /* SVC - supervisor call */ if (tdep->s390_syscall_record != NULL) { - if (tdep->s390_syscall_record (regcache, ibyte[1])) - return -1; + int res = tdep->s390_syscall_record (regcache, ibyte[1]); + if (res != 0) + return res; } else {