Valgrind: Sync LoongArch with glibc 2.36

Signed-off-by: Feiyang Chen <chenfeiyang@loongson.cn>
This commit is contained in:
Feiyang Chen 2023-01-03 11:23:33 +08:00
parent e4574194b8
commit c73f05592c
2 changed files with 80 additions and 1 deletions

View File

@ -0,0 +1,75 @@
From c8c53b2ea49142f4e764520e0af71c0d48bbf00a Mon Sep 17 00:00:00 2001
From: Feiyang Chen <chenfeiyang@loongson.cn>
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

View File

@ -17,7 +17,7 @@
Name: valgrind
Version: 3.16.0
Release: 5
Release: 6
Epoch: 1
Summary: An instrumentation framework for building dynamic analysis tools
License: GPLv2+
@ -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 <chenfeiyang@loongson.cn> - 1:3.16.0-6
- Sync LoongArch with glibc 2.36
* Fri Dec 16 2022 chenfeiyang <chenfeiyang@loongson.cn> - 1:3.16.0-5
- Add LOONGARCH64/Linux support