On Sat, 9 Nov 2024 11:50:12 +0100 Jeremie Courreges-Anglas <j...@wxcvbn.org> wrote:
> I propose I commit this update, > and then you add your runtime fix for powerpc64 on top. Here's my diff on top, with the powerpc thread-switching fix, and the powerpc64 runtime fixes. Also, "make update-patches" wants to trim some empty lines from patch*aarch64*. Is this ok? WRKSRC/gdb/make-init-c was not finding the _initialize_ppc64obsd_* functions; change their style to what make-init-c expects. Get rid of inferior_ptid, which had pid 0. Drop 32-bit bfd_arch_rs6000. I also want to report that 32-bit archs (powerpc but not powerpc64) give lots of this warning, | /usr/local/include/xxhash.h:617:16: warning: unknown attribute | 'rpl_malloc' ignored [-Wunknown-attributes] because <xxhash.h> has "__attribute__((malloc))" but WRKSRC/gnulib/import/stdlib.h does "#define malloc rpl_malloc", after WRKSRC/gnulib/import/m4/malloc.m4 checks "whether malloc is ptrdiff_t safe", which is "no" on 32-bit archs. --gkoehler Index: Makefile =================================================================== RCS file: /cvs/ports/devel/gdb/Makefile,v diff -u -p -r1.86 Makefile --- Makefile 9 Nov 2024 13:33:19 -0000 1.86 +++ Makefile 9 Nov 2024 21:39:17 -0000 @@ -2,6 +2,7 @@ COMMENT= GNU debugger CATEGORIES= devel DISTNAME= gdb-13.2 +REVISION= 0 HOMEPAGE= https://www.gnu.org/software/gdb/ Index: patches/patch-gdb_aarch64-obsd-nat_c =================================================================== RCS file: /cvs/ports/devel/gdb/patches/patch-gdb_aarch64-obsd-nat_c,v diff -u -p -r1.4 patch-gdb_aarch64-obsd-nat_c --- patches/patch-gdb_aarch64-obsd-nat_c 9 Nov 2024 13:33:19 -0000 1.4 +++ patches/patch-gdb_aarch64-obsd-nat_c 9 Nov 2024 21:39:17 -0000 @@ -172,5 +172,3 @@ Index: gdb/aarch64-obsd-nat.c +{ + add_inf_child_target (&the_aarch64_obsd_nat_target); +} - - Index: patches/patch-gdb_aarch64-obsd-tdep_c =================================================================== RCS file: /cvs/ports/devel/gdb/patches/patch-gdb_aarch64-obsd-tdep_c,v diff -u -p -r1.4 patch-gdb_aarch64-obsd-tdep_c --- patches/patch-gdb_aarch64-obsd-tdep_c 9 Nov 2024 13:33:19 -0000 1.4 +++ patches/patch-gdb_aarch64-obsd-tdep_c 9 Nov 2024 21:39:18 -0000 @@ -340,4 +340,3 @@ Index: gdb/aarch64-obsd-tdep.c + gdbarch_register_osabi (bfd_arch_aarch64, 0, GDB_OSABI_OPENBSD, + aarch64obsd_init_abi); +} - Index: patches/patch-gdb_ppc-obsd-nat_c =================================================================== RCS file: patches/patch-gdb_ppc-obsd-nat_c diff -N patches/patch-gdb_ppc-obsd-nat_c --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ patches/patch-gdb_ppc-obsd-nat_c 9 Nov 2024 21:39:18 -0000 @@ -0,0 +1,23 @@ +When switching threads, use the correct registers. + +Index: gdb/ppc-obsd-nat.c +--- gdb/ppc-obsd-nat.c.orig ++++ gdb/ppc-obsd-nat.c +@@ -82,7 +82,7 @@ void + ppc_obsd_nat_target::fetch_registers (struct regcache *regcache, int regnum) + { + struct reg regs; +- pid_t pid = regcache->ptid ().pid (); ++ pid_t pid = get_ptrace_pid (regcache->ptid ()); + + if (ptrace (PT_GETREGS, pid, (PTRACE_TYPE_ARG3) ®s, 0) == -1) + perror_with_name (_("Couldn't get registers")); +@@ -116,7 +116,7 @@ void + ppc_obsd_nat_target::store_registers (struct regcache *regcache, int regnum) + { + struct reg regs; +- pid_t pid = regcache->ptid ().pid (); ++ pid_t pid = get_ptrace_pid (regcache->ptid ()); + + if (ptrace (PT_GETREGS, pid, (PTRACE_TYPE_ARG3) ®s, 0) == -1) + perror_with_name (_("Couldn't get registers")); Index: patches/patch-gdb_ppc64-obsd-nat_c =================================================================== RCS file: /cvs/ports/devel/gdb/patches/patch-gdb_ppc64-obsd-nat_c,v diff -u -p -r1.2 patch-gdb_ppc64-obsd-nat_c --- patches/patch-gdb_ppc64-obsd-nat_c 11 Mar 2022 18:50:04 -0000 1.2 +++ patches/patch-gdb_ppc64-obsd-nat_c 9 Nov 2024 21:39:18 -0000 @@ -1,7 +1,7 @@ Index: gdb/ppc64-obsd-nat.c --- gdb/ppc64-obsd-nat.c.orig +++ gdb/ppc64-obsd-nat.c -@@ -0,0 +1,219 @@ +@@ -0,0 +1,213 @@ +/* Native-dependent code for OpenBSD/powerpc64. + + Copyright (C) 2004-2020 Free Software Foundation, Inc. @@ -83,9 +83,9 @@ Index: gdb/ppc64-obsd-nat.c +ppc64_obsd_nat_target::fetch_registers (struct regcache *regcache, int regnum) +{ + struct reg regs; ++ pid_t pid = get_ptrace_pid (regcache->ptid ()); + -+ if (ptrace (PT_GETREGS, get_ptrace_pid (inferior_ptid), -+ (PTRACE_TYPE_ARG3) ®s, 0) == -1) ++ if (ptrace (PT_GETREGS, pid, (PTRACE_TYPE_ARG3) ®s, 0) == -1) + perror_with_name (_("Couldn't get registers")); + + ppc64obsd_supply_gregset (&ppc64obsd_gregset, regcache, -1, @@ -97,8 +97,7 @@ Index: gdb/ppc64-obsd-nat.c + { + struct fpreg fpregs; + -+ if (ptrace (PT_GETFPREGS, get_ptrace_pid (inferior_ptid), -+ (PTRACE_TYPE_ARG3) &fpregs, 0) == -1) ++ if (ptrace (PT_GETFPREGS, pid, (PTRACE_TYPE_ARG3) &fpregs, 0) == -1) + perror_with_name (_("Couldn't get floating point status")); + + ppc64obsd_supply_fpregset (&ppc64obsd_fpregset, regcache, -1, @@ -114,16 +113,15 @@ Index: gdb/ppc64-obsd-nat.c +ppc64_obsd_nat_target::store_registers (struct regcache *regcache, int regnum) +{ + struct reg regs; ++ pid_t pid = get_ptrace_pid (regcache->ptid ()); + -+ if (ptrace (PT_GETREGS, get_ptrace_pid (inferior_ptid), -+ (PTRACE_TYPE_ARG3) ®s, 0) == -1) ++ if (ptrace (PT_GETREGS, pid, (PTRACE_TYPE_ARG3) ®s, 0) == -1) + perror_with_name (_("Couldn't get registers")); + + ppc64obsd_collect_gregset (&ppc64obsd_gregset, regcache, + regnum, ®s, sizeof regs); + -+ if (ptrace (PT_SETREGS, get_ptrace_pid (inferior_ptid), -+ (PTRACE_TYPE_ARG3) ®s, 0) == -1) ++ if (ptrace (PT_SETREGS, pid, (PTRACE_TYPE_ARG3) ®s, 0) == -1) + perror_with_name (_("Couldn't write registers")); + +#if 0 @@ -132,15 +130,13 @@ Index: gdb/ppc64-obsd-nat.c + { + struct fpreg fpregs; + -+ if (ptrace (PT_GETFPREGS, get_ptrace_pid (inferior_ptid), -+ (PTRACE_TYPE_ARG3) &fpregs, 0) == -1) ++ if (ptrace (PT_GETFPREGS, pid, (PTRACE_TYPE_ARG3) &fpregs, 0) == -1) + perror_with_name (_("Couldn't get floating point status")); + + ppc64obsd_collect_fpregset (&ppc64obsd_fpregset, regcache, + regnum, &fpregs, sizeof fpregs); + -+ if (ptrace (PT_SETFPREGS, get_ptrace_pid (inferior_ptid), -+ (PTRACE_TYPE_ARG3) &fpregs, 0) == -1) ++ if (ptrace (PT_SETFPREGS, pid, (PTRACE_TYPE_ARG3) &fpregs, 0) == -1) + perror_with_name (_("Couldn't write floating point status")); + } +#endif @@ -189,11 +185,9 @@ Index: gdb/ppc64-obsd-nat.c +#endif + + -+/* Provide a prototype to silence -Wmissing-prototypes. */ -+void _initialize_ppc64obsd_nat (void); -+ ++void _initialize_ppc64obsd_nat (); +void -+_initialize_ppc64obsd_nat (void) ++_initialize_ppc64obsd_nat () +{ + add_inf_child_target (&the_ppc64_obsd_nat_target); + Index: patches/patch-gdb_ppc64-obsd-tdep_c =================================================================== RCS file: /cvs/ports/devel/gdb/patches/patch-gdb_ppc64-obsd-tdep_c,v diff -u -p -r1.3 patch-gdb_ppc64-obsd-tdep_c --- patches/patch-gdb_ppc64-obsd-tdep_c 9 Nov 2024 13:33:19 -0000 1.3 +++ patches/patch-gdb_ppc64-obsd-tdep_c 9 Nov 2024 21:39:18 -0000 @@ -1,7 +1,7 @@ Index: gdb/ppc64-obsd-tdep.c --- gdb/ppc64-obsd-tdep.c.orig +++ gdb/ppc64-obsd-tdep.c -@@ -0,0 +1,411 @@ +@@ -0,0 +1,407 @@ +/* Target-dependent code for OpenBSD/powerpc64. + + Copyright (C) 2004, 2005, 2006 Free Software Foundation, Inc. @@ -375,14 +375,10 @@ Index: gdb/ppc64-obsd-tdep.c +} + + -+/* Provide a prototype to silence -Wmissing-prototypes. */ -+void _initialize_ppc64obsd_tdep (void); -+ ++void _initialize_ppc64obsd_tdep (); +void -+_initialize_ppc64obsd_tdep (void) ++_initialize_ppc64obsd_tdep () +{ -+ gdbarch_register_osabi (bfd_arch_rs6000, 0, GDB_OSABI_OPENBSD, -+ ppc64obsd_init_abi); + gdbarch_register_osabi (bfd_arch_powerpc, bfd_mach_ppc64, + GDB_OSABI_OPENBSD, ppc64obsd_init_abi); +