diff --git a/valgrind-Sync-LoongArch-with-glibc-2.36.patch b/valgrind-Sync-LoongArch-with-glibc-2.36.patch new file mode 100644 index 0000000000000000000000000000000000000000..6b7320d3340113c5861150686790276278dc2cee --- /dev/null +++ b/valgrind-Sync-LoongArch-with-glibc-2.36.patch @@ -0,0 +1,75 @@ +From c8c53b2ea49142f4e764520e0af71c0d48bbf00a Mon Sep 17 00:00:00 2001 +From: Feiyang Chen +Date: Tue, 3 Jan 2023 11:17:29 +0800 +Subject: [PATCH] valgrind: Sync LoongArch with glibc 2.36 + +--- + coregrind/vgdb-invoker-ptrace.c | 20 ++++---------------- + 1 file changed, 4 insertions(+), 16 deletions(-) + +diff --git a/coregrind/vgdb-invoker-ptrace.c b/coregrind/vgdb-invoker-ptrace.c +index 7865c53..d930589 100644 +--- a/coregrind/vgdb-invoker-ptrace.c ++++ b/coregrind/vgdb-invoker-ptrace.c +@@ -759,11 +759,7 @@ void restore_and_detach (pid_t pid) + } + + DEBUG(1, "setregs restore registers pid %d\n", pid_of_save_regs); +-#if defined(VGP_loongarch64_linux) +- if (!setregs(pid_of_save_regs, &user_save.gpr, sizeof(user_save.gpr))) { +-#else + if (!setregs(pid_of_save_regs, &user_save.regs, sizeof(user_save.regs))) { +-#endif + ERROR(errno, "setregs restore registers pid %d after cont\n", + pid_of_save_regs); + } +@@ -845,11 +841,7 @@ Bool invoker_invoke_gdbserver (pid_t pid) + return False; + } + +-#if defined(VGP_loongarch64_linux) +- if (!getregs(pid, &user_mod.gpr, sizeof(user_mod.gpr))) { +-#else + if (!getregs(pid, &user_mod.regs, sizeof(user_mod.regs))) { +-#endif + detach_from_all_threads(pid); + return False; + } +@@ -885,7 +877,7 @@ Bool invoker_invoke_gdbserver (pid_t pid) + #elif defined(VGA_mips64) + sp = user_mod.regs[29]; + #elif defined(VGA_loongarch64) +- sp = user_mod.gpr[3]; ++ sp = user_mod.regs[3]; + #else + I_die_here : (sp) architecture missing in vgdb-invoker-ptrace.c + #endif +@@ -1084,10 +1076,10 @@ Bool invoker_invoke_gdbserver (pid_t pid) + user_mod.regs[25] = shared64->invoke_gdbserver; + #elif defined(VGA_loongarch64) + /* put check arg in register a0 */ +- user_mod.gpr[4] = check; ++ user_mod.regs[4] = check; + /* put NULL return address in ra */ +- user_mod.gpr[1] = bad_return; +- user_mod.pc = shared64->invoke_gdbserver; ++ user_mod.regs[1] = bad_return; ++ user_mod.csr_era = shared64->invoke_gdbserver; + #else + I_die_here: architecture missing in vgdb-invoker-ptrace.c + #endif +@@ -1096,11 +1088,7 @@ Bool invoker_invoke_gdbserver (pid_t pid) + assert(0); + } + +-#if defined(VGP_loongarch64_linux) +- if (!setregs(pid, &user_mod.gpr, sizeof(user_mod.gpr))) { +-#else + if (!setregs(pid, &user_mod.regs, sizeof(user_mod.regs))) { +-#endif + detach_from_all_threads(pid); + return False; + } +-- +2.33.0 + diff --git a/valgrind.spec b/valgrind.spec index fd72a2c6fc853864f51b830cb62c36f22169f1f4..76830ebd924da9f7f369a3026dfbec7df204ee11 100644 --- a/valgrind.spec +++ b/valgrind.spec @@ -30,6 +30,7 @@ Patch3: valgrind-3.9.0-ldso-supp.patch Patch4: backport-Generate-a-ENOSYS-sys_ni_syscall-for-clone3-on-all-linux-arches.patch Patch5: valgrind-Implement-linux-rseq-syscall-as-ENOSYS.patch Patch6: Add-LOONGARCH64-Linux-support.patch +Patch7: valgrind-Sync-LoongArch-with-glibc-2.36.patch BuildRequires: glibc glibc-devel gdb procps gcc-c++ perl(Getopt::Long) @@ -107,6 +108,9 @@ popd %{_mandir}/man1/* %changelog +* Tue Jan 03 2023 chenfeiyang - 1:3.16.0-6 +- Sync LoongArch with glibc 2.36 + * Fri Dec 16 2022 chenfeiyang - 1:3.16.0-5 - Add LOONGARCH64/Linux support