diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000000000000000000000000000000000000..c0e69ef2f0e84e18bb324813a7afdbe273d4acb9 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,2 @@ +*.bz2 filter=lfs diff=lfs merge=lfs -text +*.xz filter=lfs diff=lfs merge=lfs -text diff --git a/.lfsconfig b/.lfsconfig new file mode 100644 index 0000000000000000000000000000000000000000..9346bbbe01ab99b20fc31d261441f0f1c8f8f309 --- /dev/null +++ b/.lfsconfig @@ -0,0 +1,2 @@ +[lfs] + url = https://artlfs.openeuler.openatom.cn/src-openEuler/valgrind diff --git a/Add-AArch64-clang-longjmp-support.patch b/Add-AArch64-clang-longjmp-support.patch index aaf53ef2c611ba145910fee0bb70392ec28be065..6c9c4696a16ac4cf0485ae695998b76944f4d834 100644 --- a/Add-AArch64-clang-longjmp-support.patch +++ b/Add-AArch64-clang-longjmp-support.patch @@ -1,19 +1,10 @@ -From b497759d9f4ba22a7b341b7c6710f6e07e25ab08 Mon Sep 17 00:00:00 2001 -From: liyunfei -Date: Tue, 29 Aug 19:59:58 2023 +0800 -Subject: [PATCH] Add AArch64 clang longjmp support - ---- - include/pub_tool_libcsetjmp.h | 105 ++++++++++++++++++++++++++++++++++ - 1 file changed, 105 insertions(+) - diff --git a/include/pub_tool_libcsetjmp.h b/include/pub_tool_libcsetjmp.h -index 69bed7c..6eb398f 100644 +index e9638c3..1a52715 100644 --- a/include/pub_tool_libcsetjmp.h +++ b/include/pub_tool_libcsetjmp.h -@@ -142,6 +142,111 @@ UWord VG_MINIMAL_SETJMP(VG_MINIMAL_JMP_BUF(_env)); +@@ -150,6 +150,111 @@ UWord VG_MINIMAL_SETJMP(VG_MINIMAL_JMP_BUF(_env)); __attribute__((noreturn)) - void VG_MINIMAL_LONGJMP(VG_MINIMAL_JMP_BUF(_env)); + void VG_MINIMAL_LONGJMP(VG_MINIMAL_JMP_BUF(_env)); +#elif defined __aarch64__ && defined __clang__ + @@ -123,6 +114,178 @@ index 69bed7c..6eb398f 100644 #else /* The default implementation. */ +diff --git a/include/pub_tool_libcsetjmp.h.orig b/include/pub_tool_libcsetjmp.h.orig +new file mode 100644 +index 0000000..e9638c3 +--- /dev/null ++++ b/include/pub_tool_libcsetjmp.h.orig +@@ -0,0 +1,166 @@ ++ ++/*--------------------------------------------------------------------*/ ++/*--- A minimal setjmp/longjmp facility. pub_tool_libcsetjmp.h ---*/ ++/*--------------------------------------------------------------------*/ ++ ++/* ++ This file is part of Valgrind, a dynamic binary instrumentation ++ framework. ++ ++ Copyright (C) 2010-2017 Mozilla Foundation ++ ++ This program is free software; you can redistribute it and/or ++ modify it under the terms of the GNU General Public License as ++ published by the Free Software Foundation; either version 2 of the ++ License, or (at your option) any later version. ++ ++ This program is distributed in the hope that it will be useful, but ++ WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ General Public License for more details. ++ ++ You should have received a copy of the GNU General Public License ++ along with this program; if not, see . ++ ++ The GNU General Public License is contained in the file COPYING. ++*/ ++ ++/* Contributed by Julian Seward */ ++ ++#ifndef __PUB_TOOL_LIBCSETJMP_H ++#define __PUB_TOOL_LIBCSETJMP_H ++ ++#include "pub_tool_basics.h" // UWord ++ ++//-------------------------------------------------------------------- ++// PURPOSE: Provides a minimal setjmp/longjmp facility, that saves/ ++// restores integer registers, but not necessarily anything more. ++//-------------------------------------------------------------------- ++ ++ ++/* This provides an extremely minimal setjmp/longjmp facility, in ++ which only the host's integer registers are saved/restored. Or at ++ least, that is the minimal guaranteed functionality. ++ ++ Until Apr 2011 we used __builtin_setjmp and __builtin_longjmp, but ++ it appears that that is not always correctly implemented. See ++ https://bugs.kde.org/show_bug.cgi?id=259977. So this module wraps ++ those functions up and facilitates replacing them with our own ++ implementations where necessary. ++*/ ++ ++/* --- !!! --- EXTERNAL HEADERS start --- !!! --- */ ++#include ++/* --- !!! --- EXTERNAL HEADERS end --- !!! --- */ ++ ++ ++/* Don't use jmp_buf, __builtin_setjmp or __builtin_longjmp directly. ++ They don't always work reliably. Instead use these macros, which ++ provide the opportunity to supply alternative implementations as ++ necessary. ++ ++ Note that the abstraction is done with macros (ick) rather than ++ functions and typedefs, since wrapping __builtin_setjmp up in a ++ second function (eg, VG_(minimal_setjmp)) doesn't seem to work for ++ whatever reason -- returns via a VG_(minimal_longjmp) go wrong. ++ ++ VG_MINIMAL_SETJMP stores the current integer register state in the ++ supplied argument, and returns zero. VG_MINIMAL_LONGJMP resumes ++ with the previously saved state, and returns a nonzero, word-sized ++ value. The caller must test all bits of the value in order to make ++ a zero/non-zero determination. ++*/ ++ ++#if defined(VGP_ppc32_linux) ++ ++#define VG_MINIMAL_JMP_BUF(_name) UInt _name [32+1+1] ++__attribute__((returns_twice)) ++UWord VG_MINIMAL_SETJMP(VG_MINIMAL_JMP_BUF(_env)); ++__attribute__((noreturn)) ++void VG_MINIMAL_LONGJMP(VG_MINIMAL_JMP_BUF(_env)); ++ ++ ++#elif defined(VGP_ppc64be_linux) || defined(VGP_ppc64le_linux) ++ ++#define VG_MINIMAL_JMP_BUF(_name) ULong _name [32+1+1] ++__attribute__((returns_twice)) ++UWord VG_MINIMAL_SETJMP(VG_MINIMAL_JMP_BUF(_env)); ++__attribute__((noreturn)) ++void VG_MINIMAL_LONGJMP(VG_MINIMAL_JMP_BUF(_env)); ++ ++ ++#elif defined(VGP_amd64_linux) || defined(VGP_amd64_darwin) || \ ++ defined(VGP_amd64_solaris) || defined(VGP_amd64_freebsd) ++ ++#define VG_MINIMAL_JMP_BUF(_name) ULong _name [16+1] ++__attribute__((returns_twice)) ++UWord VG_MINIMAL_SETJMP(VG_MINIMAL_JMP_BUF(_env)); ++__attribute__((noreturn)) ++void VG_MINIMAL_LONGJMP(VG_MINIMAL_JMP_BUF(_env)); ++ ++ ++#elif defined(VGP_x86_linux) || defined(VGP_x86_darwin) || \ ++ defined(VGP_x86_solaris) || defined(VGP_x86_freebsd) ++ ++#define VG_MINIMAL_JMP_BUF(_name) UInt _name [8+1] ++__attribute__((returns_twice)) ++__attribute__((regparm(1))) // this is critical; don't delete ++UWord VG_MINIMAL_SETJMP(VG_MINIMAL_JMP_BUF(_env)); ++__attribute__((noreturn)) ++__attribute__((regparm(1))) // ditto ++void VG_MINIMAL_LONGJMP(VG_MINIMAL_JMP_BUF(_env)); ++ ++#elif defined(VGP_mips32_linux) || defined(VGP_nanomips_linux) ++ ++#define VG_MINIMAL_JMP_BUF(_name) ULong _name [104 / sizeof(ULong)] ++__attribute__((returns_twice)) ++UWord VG_MINIMAL_SETJMP(VG_MINIMAL_JMP_BUF(_env)); ++__attribute__((noreturn)) ++void VG_MINIMAL_LONGJMP(VG_MINIMAL_JMP_BUF(_env)); ++ ++#elif defined(VGP_mips64_linux) ++ ++#define VG_MINIMAL_JMP_BUF(_name) ULong _name [168 / sizeof(ULong)] ++__attribute__((returns_twice)) ++UWord VG_MINIMAL_SETJMP(VG_MINIMAL_JMP_BUF(_env)); ++__attribute__((noreturn)) ++void VG_MINIMAL_LONGJMP(VG_MINIMAL_JMP_BUF(_env)); ++ ++#elif defined(VGP_s390x_linux) ++ ++#define VG_MINIMAL_JMP_BUF(_name) ULong _name [10 + 8] ++__attribute__((returns_twice)) ++UWord VG_MINIMAL_SETJMP(VG_MINIMAL_JMP_BUF(_env)); ++__attribute__((noreturn)) ++void VG_MINIMAL_LONGJMP(VG_MINIMAL_JMP_BUF(_env)); ++ ++#elif defined(__clang__) && defined(VGP_arm64_linux) ++ ++#define VG_MINIMAL_JMP_BUF(_name) UWord _name [13] ++__attribute__((returns_twice)) ++UWord VG_MINIMAL_SETJMP(VG_MINIMAL_JMP_BUF(_env)); ++__attribute__((noreturn)) ++void VG_MINIMAL_LONGJMP(VG_MINIMAL_JMP_BUF(_env)); ++ ++#elif defined(VGP_arm64_freebsd) ++ ++#define VG_MINIMAL_JMP_BUF(_name) UWord _name [22] ++__attribute__((returns_twice)) ++UWord VG_MINIMAL_SETJMP(VG_MINIMAL_JMP_BUF(_env)); ++__attribute__((noreturn)) ++void VG_MINIMAL_LONGJMP(VG_MINIMAL_JMP_BUF(_env)); ++ ++#else ++ ++/* The default implementation. */ ++#define VG_MINIMAL_JMP_BUF(_name) jmp_buf _name ++#define VG_MINIMAL_SETJMP(_env) ((UWord)(__builtin_setjmp((_env)))) ++#define VG_MINIMAL_LONGJMP(_env) __builtin_longjmp((_env),1) ++ ++#endif ++ ++#endif // __PUB_TOOL_LIBCSETJMP_H ++ ++/*--------------------------------------------------------------------*/ ++/*--- end pub_tool_libcsetjmp.h ---*/ ++/*--------------------------------------------------------------------*/ -- -2.51.0 +2.48.1 diff --git a/Add-LOONGARCH64-Linux-support.patch b/Add-LOONGARCH64-Linux-support.patch index 9c30267b22c5e137c00e6ffb6c4e26e482d4f209..23263a25ef85f0665b2bfa5fa4077b66df6e760a 100644 --- a/Add-LOONGARCH64-Linux-support.patch +++ b/Add-LOONGARCH64-Linux-support.patch @@ -1,91 +1,91 @@ -From 957c59b751202c6235da4c00389dce67fd5730e8 Mon Sep 17 00:00:00 2001 +From e959cca55706908a7eef6f4663f3eb3cefc98e01 Mon Sep 17 00:00:00 2001 From: Binbin Zhou -Date: Thu, 19 May 2022 10:18:14 +0800 +Date: Fri, 9 May 2025 14:47:00 +0800 Subject: [PATCH] Add LoongArch64 Linux support +Based on Valgrind 3.25.0 + +Signed-off-by: Binbin Zhou --- - Makefile.all.am | 7 + - Makefile.in | 9 +- - Makefile.tool.am | 12 + + Makefile.all.am | 45 +- + Makefile.tool.am | 11 + Makefile.vex.am | 14 +- - Makefile.vex.in | 199 +- README | 1 + - README.loongarch64 | 51 + + README.loongarch64 | 63 + VEX/auxprogs/genoffsets.c | 36 + VEX/priv/guest_loongarch64_defs.h | 131 + - VEX/priv/guest_loongarch64_helpers.c | 905 + - VEX/priv/guest_loongarch64_toIR.c | 12086 ++++ - VEX/priv/host_loongarch64_defs.c | 3929 ++ - VEX/priv/host_loongarch64_defs.h | 919 + - VEX/priv/host_loongarch64_isel.c | 3748 ++ - VEX/priv/ir_defs.c | 55 +- - VEX/priv/main_main.c | 109 + + VEX/priv/guest_loongarch64_helpers.c | 908 + + VEX/priv/guest_loongarch64_toIR.c | 12957 ++++ + VEX/priv/host_loongarch64_defs.c | 3953 ++ + VEX/priv/host_loongarch64_defs.h | 927 + + VEX/priv/host_loongarch64_isel.c | 3796 ++ + VEX/priv/ir_defs.c | 88 +- + VEX/priv/main_main.c | 157 +- VEX/pub/libvex.h | 22 + VEX/pub/libvex_basictypes.h | 4 + - VEX/pub/libvex_guest_loongarch64.h | 172 + - VEX/pub/libvex_guest_offsets.h | 33 + - VEX/pub/libvex_ir.h | 36 +- + VEX/pub/libvex_guest_loongarch64.h | 173 + + VEX/pub/libvex_ir.h | 43 +- VEX/pub/libvex_trc_values.h | 1 + - auxprogs/Makefile.in | 7 + - cachegrind/Makefile.in | 19 + cachegrind/cg_arch.c | 7 + cachegrind/cg_branchpred.c | 2 +- - cachegrind/tests/Makefile.in | 7 + - cachegrind/tests/x86/Makefile.in | 7 + - callgrind/Makefile.in | 19 + - callgrind/tests/Makefile.in | 7 + - config.h | 2 +- - configure | 56 +- configure.ac | 28 +- - coregrind/Makefile.am | 15 +- - coregrind/Makefile.in | 252 +- + coregrind/Makefile.am | 24 +- coregrind/launcher-linux.c | 11 +- - coregrind/m_aspacemgr/aspacemgr-common.c | 9 +- + coregrind/m_aspacemgr/aspacemgr-common.c | 7 +- coregrind/m_aspacemgr/aspacemgr-linux.c | 3 +- coregrind/m_cache.c | 233 + coregrind/m_coredump/coredump-elf.c | 42 + coregrind/m_debuginfo/d3basics.c | 3 + - coregrind/m_debuginfo/debuginfo.c | 30 +- + coregrind/m_debuginfo/debuginfo.c | 31 +- coregrind/m_debuginfo/priv_storage.h | 19 +- coregrind/m_debuginfo/readdwarf.c | 47 +- - coregrind/m_debuginfo/readelf.c | 6 +- + coregrind/m_debuginfo/readelf.c | 4 +- coregrind/m_debuginfo/storage.c | 9 + coregrind/m_debuglog.c | 35 + .../m_dispatch/dispatch-loongarch64-linux.S | 314 + - .../loongarch-base64-valgrind-s1.xml | 45 + - .../loongarch-base64-valgrind-s2.xml | 45 + - coregrind/m_gdbserver/loongarch-base64.xml | 45 + - .../loongarch-fpu64-valgrind-s1.xml | 57 + - .../loongarch-fpu64-valgrind-s2.xml | 57 + - coregrind/m_gdbserver/loongarch-fpu64.xml | 57 + - .../loongarch64-linux-valgrind.xml | 18 + - coregrind/m_gdbserver/loongarch64-linux.xml | 14 + + .../loongarch64-base64-valgrind-s1.xml | 45 + + .../loongarch64-base64-valgrind-s2.xml | 45 + + coregrind/m_gdbserver/loongarch64-base64.xml | 45 + + .../loongarch64-fpu-valgrind-s1.xml | 57 + + .../loongarch64-fpu-valgrind-s2.xml | 57 + + coregrind/m_gdbserver/loongarch64-fpu.xml | 57 + + .../loongarch64-lasx-valgrind-s1.xml | 60 + + .../loongarch64-lasx-valgrind-s2.xml | 60 + + coregrind/m_gdbserver/loongarch64-lasx.xml | 60 + + .../loongarch64-lbt-valgrind-s1.xml | 16 + + .../loongarch64-lbt-valgrind-s2.xml | 16 + + coregrind/m_gdbserver/loongarch64-lbt.xml | 16 + + .../loongarch64-linux-valgrind.xml | 27 + + coregrind/m_gdbserver/loongarch64-linux.xml | 17 + + .../loongarch64-lsx-valgrind-s1.xml | 59 + + .../loongarch64-lsx-valgrind-s2.xml | 59 + + coregrind/m_gdbserver/loongarch64-lsx.xml | 59 + coregrind/m_gdbserver/target.c | 2 + - .../m_gdbserver/valgrind-low-loongarch64.c | 272 + + .../m_gdbserver/valgrind-low-loongarch64.c | 412 + coregrind/m_gdbserver/valgrind_low.h | 1 + coregrind/m_initimg/initimg-linux.c | 17 +- coregrind/m_libcassert.c | 20 + - coregrind/m_libcfile.c | 63 +- - coregrind/m_libcproc.c | 11 +- + coregrind/m_libcfile.c | 53 +- + coregrind/m_libcproc.c | 9 +- coregrind/m_libcsetjmp.c | 66 + coregrind/m_machine.c | 194 +- coregrind/m_main.c | 37 +- - coregrind/m_options.c | 3 +- - coregrind/m_redir.c | 17 + - coregrind/m_scheduler/scheduler.c | 8 + + coregrind/m_options.c | 2 +- + coregrind/m_redir.c | 22 + + coregrind/m_scheduler/scheduler.c | 10 + .../m_sigframe/sigframe-loongarch64-linux.c | 285 + - coregrind/m_signals.c | 75 +- + coregrind/m_signals.c | 110 +- coregrind/m_stacktrace.c | 94 + coregrind/m_syscall.c | 32 + coregrind/m_syswrap/priv_syswrap-linux.h | 7 + coregrind/m_syswrap/priv_types_n_macros.h | 3 +- .../m_syswrap/syscall-loongarch64-linux.S | 143 + - coregrind/m_syswrap/syswrap-generic.c | 2 +- + coregrind/m_syswrap/syswrap-generic.c | 3 +- coregrind/m_syswrap/syswrap-linux.c | 36 +- .../m_syswrap/syswrap-loongarch64-linux.c | 644 + - coregrind/m_syswrap/syswrap-main.c | 93 +- - coregrind/m_trampoline.S | 48 + - coregrind/m_translate.c | 5 + + coregrind/m_syswrap/syswrap-main.c | 95 +- + coregrind/m_trampoline.S | 60 + + coregrind/m_translate.c | 2 +- coregrind/m_vki.c | 6 +- coregrind/pub_core_aspacemgr.h | 3 +- coregrind/pub_core_basics.h | 8 +- @@ -94,110 +94,59 @@ Subject: [PATCH] Add LoongArch64 Linux support coregrind/pub_core_mallocfree.h | 1 + coregrind/pub_core_signals.h | 1 + coregrind/pub_core_syscall.h | 1 + - coregrind/pub_core_trampoline.h | 6 + + coregrind/pub_core_trampoline.h | 7 + coregrind/pub_core_transtab.h | 3 +- - coregrind/pub_core_transtab_asm.h | 2 +- - coregrind/vgdb-invoker-ptrace.c | 19 +- - dhat/Makefile.in | 19 + - dhat/tests/Makefile.in | 7 + - drd/Makefile.in | 19 + + coregrind/pub_core_transtab_asm.h | 3 +- + coregrind/vgdb-invoker-ptrace.c | 20 +- drd/drd_bitmap.h | 2 +- drd/drd_load_store.c | 4 + - drd/tests/Makefile.in | 7 + drd/tests/pth_barrier_thr_cr.supp | 11 + - exp-bbv/Makefile.in | 19 + - exp-bbv/tests/Makefile.in | 7 + - exp-bbv/tests/amd64-linux/Makefile.in | 7 + - exp-bbv/tests/arm-linux/Makefile.in | 7 + - exp-bbv/tests/ppc32-linux/Makefile.in | 7 + - exp-bbv/tests/x86-linux/Makefile.in | 7 + - exp-bbv/tests/x86/Makefile.in | 7 + gdbserver_tests/Makefile.am | 1 + - gdbserver_tests/Makefile.in | 8 + gdbserver_tests/filter_helgrind_monitor | 2 + .../filter_helgrind_monitor_loongarch64 | 43 + - gdbserver_tests/solaris/Makefile.in | 7 + - helgrind/Makefile.in | 19 + helgrind/hg_main.c | 1 + - helgrind/tests/Makefile.in | 7 + helgrind/tests/annotate_hbefore.c | 30 + helgrind/tests/tc07_hbl1.c | 17 + helgrind/tests/tc08_hbl2.c | 17 + helgrind/tests/tc11_XCHG.c | 18 + include/Makefile.am | 3 + - include/Makefile.in | 3 + - include/pub_tool_basics.h | 6 +- + include/pub_tool_basics.h | 4 +- include/pub_tool_guest.h | 3 + include/pub_tool_libcsetjmp.h | 8 + include/pub_tool_machine.h | 6 + include/pub_tool_redir.h | 2 + include/pub_tool_vkiscnums_asm.h | 4 + - include/valgrind.h | 525 +- - include/valgrind.h.in | 525 +- + include/valgrind.h.in | 524 + include/vki/vki-linux.h | 5 + include/vki/vki-loongarch64-linux.h | 811 + .../vki/vki-posixtypes-loongarch64-linux.h | 76 + - include/vki/vki-scnums-loongarch64-linux.h | 356 + - lackey/Makefile.in | 19 + - massif/Makefile.in | 19 + + include/vki/vki-scnums-loongarch64-linux.h | 330 + massif/tests/Makefile.am | 1 + - massif/tests/Makefile.in | 8 + massif/tests/big-alloc.post.exp-loongarch64 | 54 + - memcheck/Makefile.in | 19 + - memcheck/mc_machine.c | 119 + - memcheck/mc_translate.c | 17 + - memcheck/tests/Makefile.am | 5 +- - memcheck/tests/Makefile.in | 65 +- - memcheck/tests/amd64-freebsd/Makefile.in | 7 + - memcheck/tests/amd64-linux/Makefile.in | 7 + - memcheck/tests/amd64-solaris/Makefile.in | 7 + - memcheck/tests/amd64/Makefile.in | 7 + - memcheck/tests/arm64-linux/Makefile.in | 7 + + memcheck/mc_machine.c | 120 + + memcheck/mc_translate.c | 54 + + memcheck/tests/Makefile.am | 7 +- memcheck/tests/atomic_incs.c | 84 +- - memcheck/tests/common/Makefile.in | 7 + - memcheck/tests/darwin/Makefile.in | 7 + - memcheck/tests/freebsd/Makefile.in | 7 + - memcheck/tests/leak-segv-jmp.c | 15 +- + memcheck/tests/leak-segv-jmp.c | 16 +- memcheck/tests/leak-segv-jmp.stderr.exp | 20 +- memcheck/tests/leak.h | 21 + - memcheck/tests/linux/Makefile.in | 7 + + memcheck/tests/long_namespace_xml.supp | 13 + + memcheck/tests/long_namespace_xml.vgtest | 2 +- memcheck/tests/loongarch64-linux/Makefile.am | 17 + .../tests/loongarch64-linux/filter_stderr | 3 + memcheck/tests/loongarch64-linux/scalar.c | 1296 + memcheck/tests/loongarch64-linux/scalar.h | 62 + - .../tests/loongarch64-linux/scalar.stderr.exp | 2716 + + .../tests/loongarch64-linux/scalar.stderr.exp | 2728 + .../tests/loongarch64-linux/scalar.vgtest | 5 + - memcheck/tests/mips32/Makefile.in | 7 + - memcheck/tests/mips64/Makefile.in | 7 + - memcheck/tests/ppc32/Makefile.in | 7 + - memcheck/tests/ppc64/Makefile.in | 7 + - memcheck/tests/s390x/Makefile.in | 7 + - memcheck/tests/solaris/Makefile.in | 7 + memcheck/tests/unit_libcbase.c | 4 +- - memcheck/tests/vbit-test/Makefile.in | 7 + - memcheck/tests/vbit-test/irops.c | 526 +- + memcheck/tests/vbit-test/irops.c | 538 +- memcheck/tests/vbit-test/vtest.h | 19 +- - memcheck/tests/x86-freebsd/Makefile.in | 7 + - memcheck/tests/x86-linux/Makefile.in | 7 + - memcheck/tests/x86-solaris/Makefile.in | 7 + - memcheck/tests/x86/Makefile.in | 7 + - mpi/Makefile.in | 7 + nightly/conf/loongarch64.conf | 3 + nightly/conf/loongarch64.sendemail | 7 + - none/Makefile.in | 19 + - none/tests/Makefile.am | 9 +- - none/tests/Makefile.in | 56 +- - none/tests/allexec_prepare_prereq | 13 +- - none/tests/amd64-darwin/Makefile.in | 7 + - none/tests/amd64-linux/Makefile.in | 7 + - none/tests/amd64-solaris/Makefile.in | 7 + - none/tests/amd64/Makefile.in | 7 + - none/tests/arm/Makefile.in | 7 + - none/tests/arm64/Makefile.in | 7 + - none/tests/darwin/Makefile.in | 7 + - none/tests/freebsd/Makefile.in | 7 + + none/tests/Makefile.am | 6 +- + none/tests/allexec_prepare_prereq | 15 +- + none/tests/filter_fdleak | 5 +- none/tests/libvex_test.c | 7 +- - none/tests/linux/Makefile.in | 7 + none/tests/loongarch64/Makefile.am | 43 + none/tests/loongarch64/allexec.c | 56 + none/tests/loongarch64/atomic.c | 75 + @@ -257,26 +206,11 @@ Subject: [PATCH] Add LoongArch64 Linux support none/tests/loongarch64/vector256.stderr.exp | 0 none/tests/loongarch64/vector256.stdout.exp | 0 none/tests/loongarch64/vector256.vgtest | 3 + - none/tests/mips32/Makefile.in | 7 + - none/tests/mips64/Makefile.in | 7 + - none/tests/nanomips/Makefile.in | 7 + - none/tests/ppc32/Makefile.in | 7 + - none/tests/ppc64/Makefile.in | 7 + - none/tests/s390x/Makefile.in | 7 + - none/tests/scripts/Makefile.in | 7 + - none/tests/solaris/Makefile.in | 7 + - none/tests/x86-darwin/Makefile.in | 7 + - none/tests/x86-freebsd/Makefile.in | 7 + - none/tests/x86-linux/Makefile.in | 7 + - none/tests/x86-solaris/Makefile.in | 7 + - none/tests/x86/Makefile.in | 7 + - perf/Makefile.in | 7 + tests/Makefile.am | 3 +- - tests/Makefile.in | 30 +- - tests/arch_test.c | 5 + + tests/arch_test.c | 4 + tests/loongarch64_features.c | 81 + - tests/platform_test | 1 + - 272 files changed, 95890 insertions(+), 475 deletions(-) + tests/platform_test | 2 +- + 203 files changed, 95817 insertions(+), 460 deletions(-) create mode 100644 README.loongarch64 create mode 100644 VEX/priv/guest_loongarch64_defs.h create mode 100644 VEX/priv/guest_loongarch64_helpers.c @@ -286,14 +220,23 @@ Subject: [PATCH] Add LoongArch64 Linux support create mode 100644 VEX/priv/host_loongarch64_isel.c create mode 100644 VEX/pub/libvex_guest_loongarch64.h create mode 100644 coregrind/m_dispatch/dispatch-loongarch64-linux.S - create mode 100644 coregrind/m_gdbserver/loongarch-base64-valgrind-s1.xml - create mode 100644 coregrind/m_gdbserver/loongarch-base64-valgrind-s2.xml - create mode 100644 coregrind/m_gdbserver/loongarch-base64.xml - create mode 100644 coregrind/m_gdbserver/loongarch-fpu64-valgrind-s1.xml - create mode 100644 coregrind/m_gdbserver/loongarch-fpu64-valgrind-s2.xml - create mode 100644 coregrind/m_gdbserver/loongarch-fpu64.xml + create mode 100644 coregrind/m_gdbserver/loongarch64-base64-valgrind-s1.xml + create mode 100644 coregrind/m_gdbserver/loongarch64-base64-valgrind-s2.xml + create mode 100644 coregrind/m_gdbserver/loongarch64-base64.xml + create mode 100644 coregrind/m_gdbserver/loongarch64-fpu-valgrind-s1.xml + create mode 100644 coregrind/m_gdbserver/loongarch64-fpu-valgrind-s2.xml + create mode 100644 coregrind/m_gdbserver/loongarch64-fpu.xml + create mode 100644 coregrind/m_gdbserver/loongarch64-lasx-valgrind-s1.xml + create mode 100644 coregrind/m_gdbserver/loongarch64-lasx-valgrind-s2.xml + create mode 100644 coregrind/m_gdbserver/loongarch64-lasx.xml + create mode 100644 coregrind/m_gdbserver/loongarch64-lbt-valgrind-s1.xml + create mode 100644 coregrind/m_gdbserver/loongarch64-lbt-valgrind-s2.xml + create mode 100644 coregrind/m_gdbserver/loongarch64-lbt.xml create mode 100644 coregrind/m_gdbserver/loongarch64-linux-valgrind.xml create mode 100644 coregrind/m_gdbserver/loongarch64-linux.xml + create mode 100644 coregrind/m_gdbserver/loongarch64-lsx-valgrind-s1.xml + create mode 100644 coregrind/m_gdbserver/loongarch64-lsx-valgrind-s2.xml + create mode 100644 coregrind/m_gdbserver/loongarch64-lsx.xml create mode 100644 coregrind/m_gdbserver/valgrind-low-loongarch64.c create mode 100644 coregrind/m_sigframe/sigframe-loongarch64-linux.c create mode 100644 coregrind/m_syswrap/syscall-loongarch64-linux.S @@ -303,6 +246,7 @@ Subject: [PATCH] Add LoongArch64 Linux support create mode 100644 include/vki/vki-posixtypes-loongarch64-linux.h create mode 100644 include/vki/vki-scnums-loongarch64-linux.h create mode 100644 massif/tests/big-alloc.post.exp-loongarch64 + create mode 100644 memcheck/tests/long_namespace_xml.supp create mode 100644 memcheck/tests/loongarch64-linux/Makefile.am create mode 100755 memcheck/tests/loongarch64-linux/filter_stderr create mode 100644 memcheck/tests/loongarch64-linux/scalar.c @@ -373,12 +317,12 @@ Subject: [PATCH] Add LoongArch64 Linux support create mode 100644 tests/loongarch64_features.c diff --git a/Makefile.all.am b/Makefile.all.am -index 94d65f2..eca59dc 100755 +index d4f6b3fb7985..ec30fee0d614 100755 --- a/Makefile.all.am +++ b/Makefile.all.am -@@ -290,6 +290,12 @@ AM_CFLAGS_PSO_MIPS64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ - $(AM_CFLAGS_PSO_BASE) - AM_CCASFLAGS_MIPS64_LINUX = @FLAG_M64@ -g +@@ -297,6 +297,12 @@ AM_CFLAGS_RISCV64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) + AM_CFLAGS_PSO_RISCV64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) $(AM_CFLAGS_PSO_BASE) + AM_CCASFLAGS_RISCV64_LINUX = @FLAG_M64@ -g +AM_FLAG_M3264_LOONGARCH64_LINUX = @FLAG_M64@ +AM_CFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) @@ -389,66 +333,67 @@ index 94d65f2..eca59dc 100755 AM_FLAG_M3264_X86_SOLARIS = @FLAG_M32@ AM_CFLAGS_X86_SOLARIS = @FLAG_M32@ @PREFERRED_STACK_BOUNDARY_2@ \ $(AM_CFLAGS_BASE) -fomit-frame-pointer @SOLARIS_UNDEF_LARGESOURCE@ -@@ -350,6 +356,7 @@ PRELOAD_LDFLAGS_S390X_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ - PRELOAD_LDFLAGS_MIPS32_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ - PRELOAD_LDFLAGS_NANOMIPS_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ - PRELOAD_LDFLAGS_MIPS64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ -+PRELOAD_LDFLAGS_LOONGARCH64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ - PRELOAD_LDFLAGS_X86_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M32@ - PRELOAD_LDFLAGS_AMD64_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M64@ - -diff --git a/Makefile.in b/Makefile.in -index 56751f4..81dcc71 100644 ---- a/Makefile.in -+++ b/Makefile.in -@@ -219,7 +219,7 @@ am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/config.h.in \ - $(top_srcdir)/docs/xml/vg-entities.xml.in \ - $(top_srcdir)/drd/scripts/download-and-build-splash2.in \ - AUTHORS COPYING NEWS README compile config.guess config.sub \ -- install-sh missing -+ depcomp install-sh missing - DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) - distdir = $(PACKAGE)-$(VERSION) - top_distdir = $(distdir) -@@ -635,6 +635,12 @@ AM_CFLAGS_PSO_MIPS64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ - $(AM_CFLAGS_PSO_BASE) +@@ -342,23 +348,24 @@ if VGCONF_PLATVARIANT_IS_ANDROID + PRELOAD_LDFLAGS_COMMON_LINUX += -nostdlib + endif - AM_CCASFLAGS_MIPS64_LINUX = @FLAG_M64@ -g -+AM_FLAG_M3264_LOONGARCH64_LINUX = @FLAG_M64@ -+AM_CFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) -+AM_CFLAGS_PSO_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ -+ $(AM_CFLAGS_PSO_BASE) -+ -+AM_CCASFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ -g - AM_FLAG_M3264_X86_SOLARIS = @FLAG_M32@ - AM_CFLAGS_X86_SOLARIS = @FLAG_M32@ @PREFERRED_STACK_BOUNDARY_2@ \ - $(AM_CFLAGS_BASE) -fomit-frame-pointer @SOLARIS_UNDEF_LARGESOURCE@ -@@ -682,6 +688,7 @@ PRELOAD_LDFLAGS_S390X_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ - PRELOAD_LDFLAGS_MIPS32_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ - PRELOAD_LDFLAGS_NANOMIPS_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ - PRELOAD_LDFLAGS_MIPS64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ +-PRELOAD_LDFLAGS_X86_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ +-PRELOAD_LDFLAGS_AMD64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ +-PRELOAD_LDFLAGS_PPC32_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ +-PRELOAD_LDFLAGS_PPC64BE_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ +-PRELOAD_LDFLAGS_PPC64LE_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ +-PRELOAD_LDFLAGS_ARM_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ +-PRELOAD_LDFLAGS_ARM64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ +-PRELOAD_LDFLAGS_X86_FREEBSD = $(PRELOAD_LDFLAGS_COMMON_FREEBSD) @FLAG_M32@ +-PRELOAD_LDFLAGS_AMD64_FREEBSD = $(PRELOAD_LDFLAGS_COMMON_FREEBSD) @FLAG_M64@ +-PRELOAD_LDFLAGS_ARM64_FREEBSD = $(PRELOAD_LDFLAGS_COMMON_FREEBSD) @FLAG_M64@ +-PRELOAD_LDFLAGS_X86_DARWIN = $(PRELOAD_LDFLAGS_COMMON_DARWIN) -arch i386 +-PRELOAD_LDFLAGS_AMD64_DARWIN = $(PRELOAD_LDFLAGS_COMMON_DARWIN) -arch x86_64 +-PRELOAD_LDFLAGS_S390X_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ +-PRELOAD_LDFLAGS_MIPS32_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ +-PRELOAD_LDFLAGS_NANOMIPS_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ +-PRELOAD_LDFLAGS_MIPS64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ +-PRELOAD_LDFLAGS_RISCV64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ +-PRELOAD_LDFLAGS_X86_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M32@ +-PRELOAD_LDFLAGS_AMD64_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M64@ ++PRELOAD_LDFLAGS_X86_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ ++PRELOAD_LDFLAGS_AMD64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ ++PRELOAD_LDFLAGS_PPC32_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ ++PRELOAD_LDFLAGS_PPC64BE_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ ++PRELOAD_LDFLAGS_PPC64LE_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ ++PRELOAD_LDFLAGS_ARM_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ ++PRELOAD_LDFLAGS_ARM64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ ++PRELOAD_LDFLAGS_X86_FREEBSD = $(PRELOAD_LDFLAGS_COMMON_FREEBSD) @FLAG_M32@ ++PRELOAD_LDFLAGS_AMD64_FREEBSD = $(PRELOAD_LDFLAGS_COMMON_FREEBSD) @FLAG_M64@ ++PRELOAD_LDFLAGS_ARM64_FREEBSD = $(PRELOAD_LDFLAGS_COMMON_FREEBSD) @FLAG_M64@ ++PRELOAD_LDFLAGS_X86_DARWIN = $(PRELOAD_LDFLAGS_COMMON_DARWIN) -arch i386 ++PRELOAD_LDFLAGS_AMD64_DARWIN = $(PRELOAD_LDFLAGS_COMMON_DARWIN) -arch x86_64 ++PRELOAD_LDFLAGS_S390X_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ ++PRELOAD_LDFLAGS_MIPS32_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ ++PRELOAD_LDFLAGS_NANOMIPS_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ ++PRELOAD_LDFLAGS_MIPS64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ ++PRELOAD_LDFLAGS_RISCV64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ +PRELOAD_LDFLAGS_LOONGARCH64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ - PRELOAD_LDFLAGS_X86_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M32@ - PRELOAD_LDFLAGS_AMD64_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M64@ - TOOLS = \ ++PRELOAD_LDFLAGS_X86_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M32@ ++PRELOAD_LDFLAGS_AMD64_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M64@ + diff --git a/Makefile.tool.am b/Makefile.tool.am -index 4ce6d5a..7dbfbd8 100644 +index 7f18d25476eb..bf3ce827eb9a 100644 --- a/Makefile.tool.am +++ b/Makefile.tool.am -@@ -99,6 +99,10 @@ TOOL_LDFLAGS_MIPS64_LINUX = \ - -static -nodefaultlibs -nostartfiles -u __start @FLAG_NO_BUILD_ID@ \ - @FLAG_M64@ +@@ -113,6 +113,9 @@ TOOL_LDFLAGS_MIPS64_LINUX = \ + TOOL_LDFLAGS_RISCV64_LINUX = \ + $(TOOL_LDFLAGS_COMMON_LINUX) @FLAG_M64@ +TOOL_LDFLAGS_LOONGARCH64_LINUX = \ -+ -static -nodefaultlibs -nostartfiles -u __start @FLAG_NO_BUILD_ID@ \ -+ @FLAG_M64@ ++ $(TOOL_LDFLAGS_COMMON_LINUX) @FLAG_M64@ + TOOL_LDFLAGS_X86_SOLARIS = \ $(TOOL_LDFLAGS_COMMON_SOLARIS) @FLAG_M32@ -@@ -167,6 +171,9 @@ LIBREPLACEMALLOC_MIPS32_LINUX = \ - LIBREPLACEMALLOC_MIPS64_LINUX = \ - $(top_builddir)/coregrind/libreplacemalloc_toolpreload-mips64-linux.a +@@ -187,6 +190,9 @@ LIBREPLACEMALLOC_MIPS64_LINUX = \ + LIBREPLACEMALLOC_RISCV64_LINUX = \ + $(top_builddir)/coregrind/libreplacemalloc_toolpreload-riscv64-linux.a +LIBREPLACEMALLOC_LOONGARCH64_LINUX = \ + $(top_builddir)/coregrind/libreplacemalloc_toolpreload-loongarch64-linux.a @@ -456,8 +401,8 @@ index 4ce6d5a..7dbfbd8 100644 LIBREPLACEMALLOC_X86_SOLARIS = \ $(top_builddir)/coregrind/libreplacemalloc_toolpreload-x86-solaris.a -@@ -239,6 +246,11 @@ LIBREPLACEMALLOC_LDFLAGS_MIPS64_LINUX = \ - $(LIBREPLACEMALLOC_MIPS64_LINUX) \ +@@ -269,6 +275,11 @@ LIBREPLACEMALLOC_LDFLAGS_RISCV64_LINUX = \ + $(LIBREPLACEMALLOC_RISCV64_LINUX) \ -Wl,--no-whole-archive +LIBREPLACEMALLOC_LDFLAGS_LOONGARCH64_LINUX = \ @@ -469,536 +414,67 @@ index 4ce6d5a..7dbfbd8 100644 -Wl,--whole-archive \ $(LIBREPLACEMALLOC_X86_SOLARIS) \ diff --git a/Makefile.vex.am b/Makefile.vex.am -index 98d8483..009d93b 100644 +index f75e9b4c691c..8a3bf67d9617 100644 --- a/Makefile.vex.am +++ b/Makefile.vex.am -@@ -26,6 +26,7 @@ pkginclude_HEADERS = \ - pub/libvex_guest_s390x.h \ +@@ -27,6 +27,7 @@ pkginclude_HEADERS = \ pub/libvex_guest_mips32.h \ pub/libvex_guest_mips64.h \ + pub/libvex_guest_riscv64.h \ + pub/libvex_guest_loongarch64.h \ pub/libvex_s390x_common.h \ pub/libvex_ir.h \ pub/libvex_trc_values.h \ -@@ -49,6 +50,7 @@ noinst_HEADERS = \ - priv/guest_mips_defs.h \ +@@ -51,6 +52,7 @@ noinst_HEADERS = \ priv/mips_defs.h \ priv/guest_nanomips_defs.h \ + priv/guest_riscv64_defs.h \ + priv/guest_loongarch64_defs.h \ priv/host_generic_regs.h \ priv/host_generic_simd64.h \ priv/host_generic_simd128.h \ -@@ -64,7 +66,8 @@ noinst_HEADERS = \ - priv/s390_defs.h \ +@@ -68,7 +70,8 @@ noinst_HEADERS = \ priv/host_mips_defs.h \ priv/host_nanomips_defs.h \ -- priv/common_nanomips_defs.h -+ priv/common_nanomips_defs.h \ + priv/common_nanomips_defs.h \ +- priv/host_riscv64_defs.h ++ priv/host_riscv64_defs.h \ + priv/host_loongarch64_defs.h BUILT_SOURCES = pub/libvex_guest_offsets.h CLEANFILES = pub/libvex_guest_offsets.h -@@ -93,7 +96,8 @@ pub/libvex_guest_offsets.h: auxprogs/genoffsets.c \ - pub/libvex_guest_arm64.h \ +@@ -98,7 +101,8 @@ pub/libvex_guest_offsets.h: auxprogs/genoffsets.c \ pub/libvex_guest_s390x.h \ pub/libvex_guest_mips32.h \ -- pub/libvex_guest_mips64.h -+ pub/libvex_guest_mips64.h \ + pub/libvex_guest_mips64.h \ +- pub/libvex_guest_riscv64.h ++ pub/libvex_guest_riscv64.h \ + pub/libvex_guest_loongarch64.h rm -f auxprogs/genoffsets.s $(mkdir_p) auxprogs pub $(CC) $(CFLAGS_FOR_GENOFFSETS) \ -@@ -151,6 +155,8 @@ LIBVEX_SOURCES_COMMON = \ - priv/guest_mips_toIR.c \ - priv/guest_nanomips_helpers.c \ - priv/guest_nanomips_toIR.c \ -+ priv/guest_loongarch64_helpers.c \ -+ priv/guest_loongarch64_toIR.c \ - priv/host_generic_regs.c \ - priv/host_generic_simd64.c \ - priv/host_generic_simd128.c \ -@@ -174,7 +180,9 @@ LIBVEX_SOURCES_COMMON = \ - priv/host_mips_defs.c \ - priv/host_nanomips_defs.c \ - priv/host_mips_isel.c \ -- priv/host_nanomips_isel.c -+ priv/host_nanomips_isel.c \ -+ priv/host_loongarch64_defs.c \ -+ priv/host_loongarch64_isel.c - - LIBVEXMULTIARCH_SOURCES = priv/multiarch_main_main.c - -diff --git a/Makefile.vex.in b/Makefile.vex.in -index b0380a6..61f439b 100644 ---- a/Makefile.vex.in -+++ b/Makefile.vex.in -@@ -188,6 +188,8 @@ am__objects_1 = priv/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-main_globals.$(OBJEX - priv/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_mips_toIR.$(OBJEXT) \ - priv/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_nanomips_helpers.$(OBJEXT) \ - priv/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_nanomips_toIR.$(OBJEXT) \ -+ priv/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_loongarch64_helpers.$(OBJEXT) \ -+ priv/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_loongarch64_toIR.$(OBJEXT) \ - priv/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_generic_regs.$(OBJEXT) \ - priv/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_generic_simd64.$(OBJEXT) \ - priv/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_generic_simd128.$(OBJEXT) \ -@@ -211,7 +213,9 @@ am__objects_1 = priv/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-main_globals.$(OBJEX - priv/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_mips_defs.$(OBJEXT) \ - priv/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_nanomips_defs.$(OBJEXT) \ - priv/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_mips_isel.$(OBJEXT) \ -- priv/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_nanomips_isel.$(OBJEXT) -+ priv/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_nanomips_isel.$(OBJEXT) \ -+ priv/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_loongarch64_defs.$(OBJEXT) \ -+ priv/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_loongarch64_isel.$(OBJEXT) - am_libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_OBJECTS = $(am__objects_1) - libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_OBJECTS = \ - $(am_libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_OBJECTS) -@@ -229,7 +233,8 @@ am__libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_SOURCES_DIST = \ - priv/guest_s390_helpers.c priv/guest_s390_toIR.c \ - priv/guest_mips_helpers.c priv/guest_mipsdsp_toIR.c \ - priv/guest_mips_toIR.c priv/guest_nanomips_helpers.c \ -- priv/guest_nanomips_toIR.c priv/host_generic_regs.c \ -+ priv/guest_nanomips_toIR.c priv/guest_loongarch64_helpers.c \ -+ priv/guest_loongarch64_toIR.c priv/host_generic_regs.c \ - priv/host_generic_simd64.c priv/host_generic_simd128.c \ - priv/host_generic_simd256.c priv/host_generic_maddf.c \ - priv/host_generic_reg_alloc2.c priv/host_generic_reg_alloc3.c \ -@@ -240,7 +245,8 @@ am__libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_SOURCES_DIST = \ - priv/host_arm64_isel.c priv/host_s390_defs.c \ - priv/host_s390_isel.c priv/s390_disasm.c priv/host_mips_defs.c \ - priv/host_nanomips_defs.c priv/host_mips_isel.c \ -- priv/host_nanomips_isel.c -+ priv/host_nanomips_isel.c priv/host_loongarch64_defs.c \ -+ priv/host_loongarch64_isel.c - am__objects_2 = priv/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-main_globals.$(OBJEXT) \ - priv/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-main_main.$(OBJEXT) \ - priv/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-main_util.$(OBJEXT) \ -@@ -267,6 +273,8 @@ am__objects_2 = priv/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-main_globals.$(OBJEX - priv/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_mips_toIR.$(OBJEXT) \ - priv/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_nanomips_helpers.$(OBJEXT) \ - priv/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_nanomips_toIR.$(OBJEXT) \ -+ priv/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_loongarch64_helpers.$(OBJEXT) \ -+ priv/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_loongarch64_toIR.$(OBJEXT) \ - priv/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_generic_regs.$(OBJEXT) \ - priv/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_generic_simd64.$(OBJEXT) \ - priv/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_generic_simd128.$(OBJEXT) \ -@@ -290,7 +298,9 @@ am__objects_2 = priv/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-main_globals.$(OBJEX - priv/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_mips_defs.$(OBJEXT) \ - priv/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_nanomips_defs.$(OBJEXT) \ - priv/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_mips_isel.$(OBJEXT) \ -- priv/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_nanomips_isel.$(OBJEXT) -+ priv/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_nanomips_isel.$(OBJEXT) \ -+ priv/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_loongarch64_defs.$(OBJEXT) \ -+ priv/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_loongarch64_isel.$(OBJEXT) - @VGCONF_HAVE_PLATFORM_SEC_TRUE@am_libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_OBJECTS = \ - @VGCONF_HAVE_PLATFORM_SEC_TRUE@ $(am__objects_2) - libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_OBJECTS = \ -@@ -334,6 +344,8 @@ am__depfiles_remade = priv/$(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-gues - priv/$(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_arm_toIR.Po \ - priv/$(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_generic_bb_to_IR.Po \ - priv/$(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_generic_x87.Po \ -+ priv/$(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_loongarch64_helpers.Po \ -+ priv/$(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_loongarch64_toIR.Po \ - priv/$(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_mips_helpers.Po \ - priv/$(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_mips_toIR.Po \ - priv/$(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_mipsdsp_toIR.Po \ -@@ -358,6 +370,8 @@ am__depfiles_remade = priv/$(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-gues - priv/$(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_generic_simd128.Po \ - priv/$(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_generic_simd256.Po \ - priv/$(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_generic_simd64.Po \ -+ priv/$(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_loongarch64_defs.Po \ -+ priv/$(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_loongarch64_isel.Po \ - priv/$(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_mips_defs.Po \ - priv/$(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_mips_isel.Po \ - priv/$(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_nanomips_defs.Po \ -@@ -384,6 +398,8 @@ am__depfiles_remade = priv/$(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-gues - priv/$(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_arm_toIR.Po \ - priv/$(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_generic_bb_to_IR.Po \ - priv/$(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_generic_x87.Po \ -+ priv/$(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_loongarch64_helpers.Po \ -+ priv/$(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_loongarch64_toIR.Po \ - priv/$(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_mips_helpers.Po \ - priv/$(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_mips_toIR.Po \ - priv/$(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_mipsdsp_toIR.Po \ -@@ -408,6 +424,8 @@ am__depfiles_remade = priv/$(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-gues - priv/$(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_generic_simd128.Po \ - priv/$(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_generic_simd256.Po \ - priv/$(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_generic_simd64.Po \ -+ priv/$(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_loongarch64_defs.Po \ -+ priv/$(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_loongarch64_isel.Po \ - priv/$(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_mips_defs.Po \ - priv/$(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_mips_isel.Po \ - priv/$(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_nanomips_defs.Po \ -@@ -851,6 +869,12 @@ AM_CFLAGS_PSO_MIPS64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ - $(AM_CFLAGS_PSO_BASE) - - AM_CCASFLAGS_MIPS64_LINUX = @FLAG_M64@ -g -+AM_FLAG_M3264_LOONGARCH64_LINUX = @FLAG_M64@ -+AM_CFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) -+AM_CFLAGS_PSO_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ -+ $(AM_CFLAGS_PSO_BASE) -+ -+AM_CCASFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ -g - AM_FLAG_M3264_X86_SOLARIS = @FLAG_M32@ - AM_CFLAGS_X86_SOLARIS = @FLAG_M32@ @PREFERRED_STACK_BOUNDARY_2@ \ - $(AM_CFLAGS_BASE) -fomit-frame-pointer @SOLARIS_UNDEF_LARGESOURCE@ -@@ -898,6 +922,7 @@ PRELOAD_LDFLAGS_S390X_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ - PRELOAD_LDFLAGS_MIPS32_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ - PRELOAD_LDFLAGS_NANOMIPS_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ - PRELOAD_LDFLAGS_MIPS64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ -+PRELOAD_LDFLAGS_LOONGARCH64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ - PRELOAD_LDFLAGS_X86_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M32@ - PRELOAD_LDFLAGS_AMD64_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M64@ - -@@ -924,6 +949,7 @@ pkginclude_HEADERS = \ - pub/libvex_guest_s390x.h \ - pub/libvex_guest_mips32.h \ - pub/libvex_guest_mips64.h \ -+ pub/libvex_guest_loongarch64.h \ - pub/libvex_s390x_common.h \ - pub/libvex_ir.h \ - pub/libvex_trc_values.h \ -@@ -947,6 +973,7 @@ noinst_HEADERS = \ - priv/guest_mips_defs.h \ - priv/mips_defs.h \ - priv/guest_nanomips_defs.h \ -+ priv/guest_loongarch64_defs.h \ - priv/host_generic_regs.h \ - priv/host_generic_simd64.h \ - priv/host_generic_simd128.h \ -@@ -962,7 +989,8 @@ noinst_HEADERS = \ - priv/s390_defs.h \ - priv/host_mips_defs.h \ - priv/host_nanomips_defs.h \ -- priv/common_nanomips_defs.h -+ priv/common_nanomips_defs.h \ -+ priv/host_loongarch64_defs.h - - BUILT_SOURCES = pub/libvex_guest_offsets.h - CLEANFILES = pub/libvex_guest_offsets.h -@@ -1006,6 +1034,8 @@ LIBVEX_SOURCES_COMMON = \ - priv/guest_mips_toIR.c \ - priv/guest_nanomips_helpers.c \ +@@ -158,6 +162,8 @@ LIBVEX_SOURCES_COMMON = \ priv/guest_nanomips_toIR.c \ + priv/guest_riscv64_helpers.c \ + priv/guest_riscv64_toIR.c \ + priv/guest_loongarch64_helpers.c \ + priv/guest_loongarch64_toIR.c \ priv/host_generic_regs.c \ priv/host_generic_simd64.c \ priv/host_generic_simd128.c \ -@@ -1029,7 +1059,9 @@ LIBVEX_SOURCES_COMMON = \ - priv/host_mips_defs.c \ - priv/host_nanomips_defs.c \ +@@ -184,7 +190,9 @@ LIBVEX_SOURCES_COMMON = \ priv/host_mips_isel.c \ -- priv/host_nanomips_isel.c -+ priv/host_nanomips_isel.c \ + priv/host_nanomips_isel.c \ + priv/host_riscv64_defs.c \ +- priv/host_riscv64_isel.c ++ priv/host_riscv64_isel.c \ + priv/host_loongarch64_defs.c \ + priv/host_loongarch64_isel.c LIBVEXMULTIARCH_SOURCES = priv/multiarch_main_main.c - LIBVEX_CFLAGS_NO_LTO = \ -@@ -1195,6 +1227,10 @@ priv/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_nanomips_helpers.$(OBJEXT): \ - priv/$(am__dirstamp) priv/$(DEPDIR)/$(am__dirstamp) - priv/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_nanomips_toIR.$(OBJEXT): \ - priv/$(am__dirstamp) priv/$(DEPDIR)/$(am__dirstamp) -+priv/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_loongarch64_helpers.$(OBJEXT): \ -+ priv/$(am__dirstamp) priv/$(DEPDIR)/$(am__dirstamp) -+priv/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_loongarch64_toIR.$(OBJEXT): \ -+ priv/$(am__dirstamp) priv/$(DEPDIR)/$(am__dirstamp) - priv/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_generic_regs.$(OBJEXT): \ - priv/$(am__dirstamp) priv/$(DEPDIR)/$(am__dirstamp) - priv/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_generic_simd64.$(OBJEXT): \ -@@ -1243,6 +1279,10 @@ priv/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_mips_isel.$(OBJEXT): \ - priv/$(am__dirstamp) priv/$(DEPDIR)/$(am__dirstamp) - priv/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_nanomips_isel.$(OBJEXT): \ - priv/$(am__dirstamp) priv/$(DEPDIR)/$(am__dirstamp) -+priv/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_loongarch64_defs.$(OBJEXT): \ -+ priv/$(am__dirstamp) priv/$(DEPDIR)/$(am__dirstamp) -+priv/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_loongarch64_isel.$(OBJEXT): \ -+ priv/$(am__dirstamp) priv/$(DEPDIR)/$(am__dirstamp) - libvex-@VGCONF_ARCH_PRI@-@VGCONF_OS@.a: $(libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_OBJECTS) $(libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_DEPENDENCIES) $(EXTRA_libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_DEPENDENCIES) - $(AM_V_at)-rm -f libvex-@VGCONF_ARCH_PRI@-@VGCONF_OS@.a -@@ -1300,6 +1340,10 @@ priv/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_nanomips_helpers.$(OBJEXT): \ - priv/$(am__dirstamp) priv/$(DEPDIR)/$(am__dirstamp) - priv/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_nanomips_toIR.$(OBJEXT): \ - priv/$(am__dirstamp) priv/$(DEPDIR)/$(am__dirstamp) -+priv/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_loongarch64_helpers.$(OBJEXT): \ -+ priv/$(am__dirstamp) priv/$(DEPDIR)/$(am__dirstamp) -+priv/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_loongarch64_toIR.$(OBJEXT): \ -+ priv/$(am__dirstamp) priv/$(DEPDIR)/$(am__dirstamp) - priv/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_generic_regs.$(OBJEXT): \ - priv/$(am__dirstamp) priv/$(DEPDIR)/$(am__dirstamp) - priv/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_generic_simd64.$(OBJEXT): \ -@@ -1348,6 +1392,10 @@ priv/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_mips_isel.$(OBJEXT): \ - priv/$(am__dirstamp) priv/$(DEPDIR)/$(am__dirstamp) - priv/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_nanomips_isel.$(OBJEXT): \ - priv/$(am__dirstamp) priv/$(DEPDIR)/$(am__dirstamp) -+priv/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_loongarch64_defs.$(OBJEXT): \ -+ priv/$(am__dirstamp) priv/$(DEPDIR)/$(am__dirstamp) -+priv/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_loongarch64_isel.$(OBJEXT): \ -+ priv/$(am__dirstamp) priv/$(DEPDIR)/$(am__dirstamp) - - libvex-@VGCONF_ARCH_SEC@-@VGCONF_OS@.a: $(libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_OBJECTS) $(libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_DEPENDENCIES) $(EXTRA_libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_DEPENDENCIES) - $(AM_V_at)-rm -f libvex-@VGCONF_ARCH_SEC@-@VGCONF_OS@.a -@@ -1383,6 +1431,8 @@ distclean-compile: - @AMDEP_TRUE@@am__include@ @am__quote@priv/$(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_arm_toIR.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@priv/$(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_generic_bb_to_IR.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@priv/$(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_generic_x87.Po@am__quote@ # am--include-marker -+@AMDEP_TRUE@@am__include@ @am__quote@priv/$(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_loongarch64_helpers.Po@am__quote@ # am--include-marker -+@AMDEP_TRUE@@am__include@ @am__quote@priv/$(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_loongarch64_toIR.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@priv/$(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_mips_helpers.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@priv/$(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_mips_toIR.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@priv/$(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_mipsdsp_toIR.Po@am__quote@ # am--include-marker -@@ -1407,6 +1457,8 @@ distclean-compile: - @AMDEP_TRUE@@am__include@ @am__quote@priv/$(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_generic_simd128.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@priv/$(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_generic_simd256.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@priv/$(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_generic_simd64.Po@am__quote@ # am--include-marker -+@AMDEP_TRUE@@am__include@ @am__quote@priv/$(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_loongarch64_defs.Po@am__quote@ # am--include-marker -+@AMDEP_TRUE@@am__include@ @am__quote@priv/$(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_loongarch64_isel.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@priv/$(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_mips_defs.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@priv/$(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_mips_isel.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@priv/$(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_nanomips_defs.Po@am__quote@ # am--include-marker -@@ -1433,6 +1485,8 @@ distclean-compile: - @AMDEP_TRUE@@am__include@ @am__quote@priv/$(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_arm_toIR.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@priv/$(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_generic_bb_to_IR.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@priv/$(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_generic_x87.Po@am__quote@ # am--include-marker -+@AMDEP_TRUE@@am__include@ @am__quote@priv/$(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_loongarch64_helpers.Po@am__quote@ # am--include-marker -+@AMDEP_TRUE@@am__include@ @am__quote@priv/$(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_loongarch64_toIR.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@priv/$(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_mips_helpers.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@priv/$(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_mips_toIR.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@priv/$(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_mipsdsp_toIR.Po@am__quote@ # am--include-marker -@@ -1457,6 +1511,8 @@ distclean-compile: - @AMDEP_TRUE@@am__include@ @am__quote@priv/$(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_generic_simd128.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@priv/$(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_generic_simd256.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@priv/$(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_generic_simd64.Po@am__quote@ # am--include-marker -+@AMDEP_TRUE@@am__include@ @am__quote@priv/$(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_loongarch64_defs.Po@am__quote@ # am--include-marker -+@AMDEP_TRUE@@am__include@ @am__quote@priv/$(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_loongarch64_isel.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@priv/$(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_mips_defs.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@priv/$(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_mips_isel.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@priv/$(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_nanomips_defs.Po@am__quote@ # am--include-marker -@@ -1864,6 +1920,34 @@ priv/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_nanomips_toIR.obj: priv/guest_ - @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ - @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -c -o priv/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_nanomips_toIR.obj `if test -f 'priv/guest_nanomips_toIR.c'; then $(CYGPATH_W) 'priv/guest_nanomips_toIR.c'; else $(CYGPATH_W) '$(srcdir)/priv/guest_nanomips_toIR.c'; fi` - -+priv/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_loongarch64_helpers.o: priv/guest_loongarch64_helpers.c -+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -MT priv/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_loongarch64_helpers.o -MD -MP -MF priv/$(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_loongarch64_helpers.Tpo -c -o priv/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_loongarch64_helpers.o `test -f 'priv/guest_loongarch64_helpers.c' || echo '$(srcdir)/'`priv/guest_loongarch64_helpers.c -+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) priv/$(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_loongarch64_helpers.Tpo priv/$(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_loongarch64_helpers.Po -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='priv/guest_loongarch64_helpers.c' object='priv/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_loongarch64_helpers.o' libtool=no @AMDEPBACKSLASH@ -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -c -o priv/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_loongarch64_helpers.o `test -f 'priv/guest_loongarch64_helpers.c' || echo '$(srcdir)/'`priv/guest_loongarch64_helpers.c -+ -+priv/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_loongarch64_helpers.obj: priv/guest_loongarch64_helpers.c -+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -MT priv/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_loongarch64_helpers.obj -MD -MP -MF priv/$(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_loongarch64_helpers.Tpo -c -o priv/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_loongarch64_helpers.obj `if test -f 'priv/guest_loongarch64_helpers.c'; then $(CYGPATH_W) 'priv/guest_loongarch64_helpers.c'; else $(CYGPATH_W) '$(srcdir)/priv/guest_loongarch64_helpers.c'; fi` -+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) priv/$(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_loongarch64_helpers.Tpo priv/$(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_loongarch64_helpers.Po -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='priv/guest_loongarch64_helpers.c' object='priv/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_loongarch64_helpers.obj' libtool=no @AMDEPBACKSLASH@ -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -c -o priv/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_loongarch64_helpers.obj `if test -f 'priv/guest_loongarch64_helpers.c'; then $(CYGPATH_W) 'priv/guest_loongarch64_helpers.c'; else $(CYGPATH_W) '$(srcdir)/priv/guest_loongarch64_helpers.c'; fi` -+ -+priv/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_loongarch64_toIR.o: priv/guest_loongarch64_toIR.c -+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -MT priv/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_loongarch64_toIR.o -MD -MP -MF priv/$(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_loongarch64_toIR.Tpo -c -o priv/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_loongarch64_toIR.o `test -f 'priv/guest_loongarch64_toIR.c' || echo '$(srcdir)/'`priv/guest_loongarch64_toIR.c -+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) priv/$(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_loongarch64_toIR.Tpo priv/$(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_loongarch64_toIR.Po -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='priv/guest_loongarch64_toIR.c' object='priv/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_loongarch64_toIR.o' libtool=no @AMDEPBACKSLASH@ -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -c -o priv/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_loongarch64_toIR.o `test -f 'priv/guest_loongarch64_toIR.c' || echo '$(srcdir)/'`priv/guest_loongarch64_toIR.c -+ -+priv/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_loongarch64_toIR.obj: priv/guest_loongarch64_toIR.c -+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -MT priv/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_loongarch64_toIR.obj -MD -MP -MF priv/$(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_loongarch64_toIR.Tpo -c -o priv/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_loongarch64_toIR.obj `if test -f 'priv/guest_loongarch64_toIR.c'; then $(CYGPATH_W) 'priv/guest_loongarch64_toIR.c'; else $(CYGPATH_W) '$(srcdir)/priv/guest_loongarch64_toIR.c'; fi` -+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) priv/$(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_loongarch64_toIR.Tpo priv/$(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_loongarch64_toIR.Po -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='priv/guest_loongarch64_toIR.c' object='priv/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_loongarch64_toIR.obj' libtool=no @AMDEPBACKSLASH@ -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -c -o priv/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_loongarch64_toIR.obj `if test -f 'priv/guest_loongarch64_toIR.c'; then $(CYGPATH_W) 'priv/guest_loongarch64_toIR.c'; else $(CYGPATH_W) '$(srcdir)/priv/guest_loongarch64_toIR.c'; fi` -+ - priv/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_generic_regs.o: priv/host_generic_regs.c - @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -MT priv/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_generic_regs.o -MD -MP -MF priv/$(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_generic_regs.Tpo -c -o priv/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_generic_regs.o `test -f 'priv/host_generic_regs.c' || echo '$(srcdir)/'`priv/host_generic_regs.c - @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) priv/$(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_generic_regs.Tpo priv/$(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_generic_regs.Po -@@ -2200,6 +2284,34 @@ priv/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_nanomips_isel.obj: priv/host_na - @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ - @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -c -o priv/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_nanomips_isel.obj `if test -f 'priv/host_nanomips_isel.c'; then $(CYGPATH_W) 'priv/host_nanomips_isel.c'; else $(CYGPATH_W) '$(srcdir)/priv/host_nanomips_isel.c'; fi` - -+priv/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_loongarch64_defs.o: priv/host_loongarch64_defs.c -+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -MT priv/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_loongarch64_defs.o -MD -MP -MF priv/$(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_loongarch64_defs.Tpo -c -o priv/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_loongarch64_defs.o `test -f 'priv/host_loongarch64_defs.c' || echo '$(srcdir)/'`priv/host_loongarch64_defs.c -+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) priv/$(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_loongarch64_defs.Tpo priv/$(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_loongarch64_defs.Po -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='priv/host_loongarch64_defs.c' object='priv/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_loongarch64_defs.o' libtool=no @AMDEPBACKSLASH@ -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -c -o priv/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_loongarch64_defs.o `test -f 'priv/host_loongarch64_defs.c' || echo '$(srcdir)/'`priv/host_loongarch64_defs.c -+ -+priv/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_loongarch64_defs.obj: priv/host_loongarch64_defs.c -+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -MT priv/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_loongarch64_defs.obj -MD -MP -MF priv/$(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_loongarch64_defs.Tpo -c -o priv/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_loongarch64_defs.obj `if test -f 'priv/host_loongarch64_defs.c'; then $(CYGPATH_W) 'priv/host_loongarch64_defs.c'; else $(CYGPATH_W) '$(srcdir)/priv/host_loongarch64_defs.c'; fi` -+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) priv/$(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_loongarch64_defs.Tpo priv/$(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_loongarch64_defs.Po -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='priv/host_loongarch64_defs.c' object='priv/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_loongarch64_defs.obj' libtool=no @AMDEPBACKSLASH@ -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -c -o priv/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_loongarch64_defs.obj `if test -f 'priv/host_loongarch64_defs.c'; then $(CYGPATH_W) 'priv/host_loongarch64_defs.c'; else $(CYGPATH_W) '$(srcdir)/priv/host_loongarch64_defs.c'; fi` -+ -+priv/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_loongarch64_isel.o: priv/host_loongarch64_isel.c -+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -MT priv/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_loongarch64_isel.o -MD -MP -MF priv/$(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_loongarch64_isel.Tpo -c -o priv/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_loongarch64_isel.o `test -f 'priv/host_loongarch64_isel.c' || echo '$(srcdir)/'`priv/host_loongarch64_isel.c -+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) priv/$(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_loongarch64_isel.Tpo priv/$(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_loongarch64_isel.Po -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='priv/host_loongarch64_isel.c' object='priv/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_loongarch64_isel.o' libtool=no @AMDEPBACKSLASH@ -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -c -o priv/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_loongarch64_isel.o `test -f 'priv/host_loongarch64_isel.c' || echo '$(srcdir)/'`priv/host_loongarch64_isel.c -+ -+priv/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_loongarch64_isel.obj: priv/host_loongarch64_isel.c -+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -MT priv/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_loongarch64_isel.obj -MD -MP -MF priv/$(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_loongarch64_isel.Tpo -c -o priv/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_loongarch64_isel.obj `if test -f 'priv/host_loongarch64_isel.c'; then $(CYGPATH_W) 'priv/host_loongarch64_isel.c'; else $(CYGPATH_W) '$(srcdir)/priv/host_loongarch64_isel.c'; fi` -+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) priv/$(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_loongarch64_isel.Tpo priv/$(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_loongarch64_isel.Po -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='priv/host_loongarch64_isel.c' object='priv/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_loongarch64_isel.obj' libtool=no @AMDEPBACKSLASH@ -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -c -o priv/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_loongarch64_isel.obj `if test -f 'priv/host_loongarch64_isel.c'; then $(CYGPATH_W) 'priv/host_loongarch64_isel.c'; else $(CYGPATH_W) '$(srcdir)/priv/host_loongarch64_isel.c'; fi` -+ - priv/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-main_globals.o: priv/main_globals.c - @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -MT priv/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-main_globals.o -MD -MP -MF priv/$(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-main_globals.Tpo -c -o priv/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-main_globals.o `test -f 'priv/main_globals.c' || echo '$(srcdir)/'`priv/main_globals.c - @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) priv/$(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-main_globals.Tpo priv/$(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-main_globals.Po -@@ -2564,6 +2676,34 @@ priv/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_nanomips_toIR.obj: priv/guest_ - @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ - @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -c -o priv/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_nanomips_toIR.obj `if test -f 'priv/guest_nanomips_toIR.c'; then $(CYGPATH_W) 'priv/guest_nanomips_toIR.c'; else $(CYGPATH_W) '$(srcdir)/priv/guest_nanomips_toIR.c'; fi` - -+priv/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_loongarch64_helpers.o: priv/guest_loongarch64_helpers.c -+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -MT priv/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_loongarch64_helpers.o -MD -MP -MF priv/$(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_loongarch64_helpers.Tpo -c -o priv/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_loongarch64_helpers.o `test -f 'priv/guest_loongarch64_helpers.c' || echo '$(srcdir)/'`priv/guest_loongarch64_helpers.c -+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) priv/$(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_loongarch64_helpers.Tpo priv/$(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_loongarch64_helpers.Po -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='priv/guest_loongarch64_helpers.c' object='priv/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_loongarch64_helpers.o' libtool=no @AMDEPBACKSLASH@ -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -c -o priv/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_loongarch64_helpers.o `test -f 'priv/guest_loongarch64_helpers.c' || echo '$(srcdir)/'`priv/guest_loongarch64_helpers.c -+ -+priv/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_loongarch64_helpers.obj: priv/guest_loongarch64_helpers.c -+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -MT priv/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_loongarch64_helpers.obj -MD -MP -MF priv/$(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_loongarch64_helpers.Tpo -c -o priv/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_loongarch64_helpers.obj `if test -f 'priv/guest_loongarch64_helpers.c'; then $(CYGPATH_W) 'priv/guest_loongarch64_helpers.c'; else $(CYGPATH_W) '$(srcdir)/priv/guest_loongarch64_helpers.c'; fi` -+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) priv/$(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_loongarch64_helpers.Tpo priv/$(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_loongarch64_helpers.Po -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='priv/guest_loongarch64_helpers.c' object='priv/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_loongarch64_helpers.obj' libtool=no @AMDEPBACKSLASH@ -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -c -o priv/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_loongarch64_helpers.obj `if test -f 'priv/guest_loongarch64_helpers.c'; then $(CYGPATH_W) 'priv/guest_loongarch64_helpers.c'; else $(CYGPATH_W) '$(srcdir)/priv/guest_loongarch64_helpers.c'; fi` -+ -+priv/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_loongarch64_toIR.o: priv/guest_loongarch64_toIR.c -+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -MT priv/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_loongarch64_toIR.o -MD -MP -MF priv/$(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_loongarch64_toIR.Tpo -c -o priv/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_loongarch64_toIR.o `test -f 'priv/guest_loongarch64_toIR.c' || echo '$(srcdir)/'`priv/guest_loongarch64_toIR.c -+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) priv/$(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_loongarch64_toIR.Tpo priv/$(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_loongarch64_toIR.Po -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='priv/guest_loongarch64_toIR.c' object='priv/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_loongarch64_toIR.o' libtool=no @AMDEPBACKSLASH@ -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -c -o priv/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_loongarch64_toIR.o `test -f 'priv/guest_loongarch64_toIR.c' || echo '$(srcdir)/'`priv/guest_loongarch64_toIR.c -+ -+priv/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_loongarch64_toIR.obj: priv/guest_loongarch64_toIR.c -+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -MT priv/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_loongarch64_toIR.obj -MD -MP -MF priv/$(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_loongarch64_toIR.Tpo -c -o priv/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_loongarch64_toIR.obj `if test -f 'priv/guest_loongarch64_toIR.c'; then $(CYGPATH_W) 'priv/guest_loongarch64_toIR.c'; else $(CYGPATH_W) '$(srcdir)/priv/guest_loongarch64_toIR.c'; fi` -+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) priv/$(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_loongarch64_toIR.Tpo priv/$(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_loongarch64_toIR.Po -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='priv/guest_loongarch64_toIR.c' object='priv/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_loongarch64_toIR.obj' libtool=no @AMDEPBACKSLASH@ -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -c -o priv/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_loongarch64_toIR.obj `if test -f 'priv/guest_loongarch64_toIR.c'; then $(CYGPATH_W) 'priv/guest_loongarch64_toIR.c'; else $(CYGPATH_W) '$(srcdir)/priv/guest_loongarch64_toIR.c'; fi` -+ - priv/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_generic_regs.o: priv/host_generic_regs.c - @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -MT priv/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_generic_regs.o -MD -MP -MF priv/$(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_generic_regs.Tpo -c -o priv/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_generic_regs.o `test -f 'priv/host_generic_regs.c' || echo '$(srcdir)/'`priv/host_generic_regs.c - @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) priv/$(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_generic_regs.Tpo priv/$(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_generic_regs.Po -@@ -2900,6 +3040,34 @@ priv/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_nanomips_isel.obj: priv/host_na - @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ - @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -c -o priv/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_nanomips_isel.obj `if test -f 'priv/host_nanomips_isel.c'; then $(CYGPATH_W) 'priv/host_nanomips_isel.c'; else $(CYGPATH_W) '$(srcdir)/priv/host_nanomips_isel.c'; fi` - -+priv/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_loongarch64_defs.o: priv/host_loongarch64_defs.c -+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -MT priv/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_loongarch64_defs.o -MD -MP -MF priv/$(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_loongarch64_defs.Tpo -c -o priv/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_loongarch64_defs.o `test -f 'priv/host_loongarch64_defs.c' || echo '$(srcdir)/'`priv/host_loongarch64_defs.c -+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) priv/$(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_loongarch64_defs.Tpo priv/$(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_loongarch64_defs.Po -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='priv/host_loongarch64_defs.c' object='priv/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_loongarch64_defs.o' libtool=no @AMDEPBACKSLASH@ -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -c -o priv/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_loongarch64_defs.o `test -f 'priv/host_loongarch64_defs.c' || echo '$(srcdir)/'`priv/host_loongarch64_defs.c -+ -+priv/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_loongarch64_defs.obj: priv/host_loongarch64_defs.c -+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -MT priv/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_loongarch64_defs.obj -MD -MP -MF priv/$(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_loongarch64_defs.Tpo -c -o priv/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_loongarch64_defs.obj `if test -f 'priv/host_loongarch64_defs.c'; then $(CYGPATH_W) 'priv/host_loongarch64_defs.c'; else $(CYGPATH_W) '$(srcdir)/priv/host_loongarch64_defs.c'; fi` -+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) priv/$(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_loongarch64_defs.Tpo priv/$(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_loongarch64_defs.Po -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='priv/host_loongarch64_defs.c' object='priv/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_loongarch64_defs.obj' libtool=no @AMDEPBACKSLASH@ -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -c -o priv/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_loongarch64_defs.obj `if test -f 'priv/host_loongarch64_defs.c'; then $(CYGPATH_W) 'priv/host_loongarch64_defs.c'; else $(CYGPATH_W) '$(srcdir)/priv/host_loongarch64_defs.c'; fi` -+ -+priv/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_loongarch64_isel.o: priv/host_loongarch64_isel.c -+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -MT priv/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_loongarch64_isel.o -MD -MP -MF priv/$(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_loongarch64_isel.Tpo -c -o priv/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_loongarch64_isel.o `test -f 'priv/host_loongarch64_isel.c' || echo '$(srcdir)/'`priv/host_loongarch64_isel.c -+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) priv/$(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_loongarch64_isel.Tpo priv/$(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_loongarch64_isel.Po -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='priv/host_loongarch64_isel.c' object='priv/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_loongarch64_isel.o' libtool=no @AMDEPBACKSLASH@ -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -c -o priv/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_loongarch64_isel.o `test -f 'priv/host_loongarch64_isel.c' || echo '$(srcdir)/'`priv/host_loongarch64_isel.c -+ -+priv/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_loongarch64_isel.obj: priv/host_loongarch64_isel.c -+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -MT priv/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_loongarch64_isel.obj -MD -MP -MF priv/$(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_loongarch64_isel.Tpo -c -o priv/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_loongarch64_isel.obj `if test -f 'priv/host_loongarch64_isel.c'; then $(CYGPATH_W) 'priv/host_loongarch64_isel.c'; else $(CYGPATH_W) '$(srcdir)/priv/host_loongarch64_isel.c'; fi` -+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) priv/$(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_loongarch64_isel.Tpo priv/$(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_loongarch64_isel.Po -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='priv/host_loongarch64_isel.c' object='priv/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_loongarch64_isel.obj' libtool=no @AMDEPBACKSLASH@ -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -c -o priv/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_loongarch64_isel.obj `if test -f 'priv/host_loongarch64_isel.c'; then $(CYGPATH_W) 'priv/host_loongarch64_isel.c'; else $(CYGPATH_W) '$(srcdir)/priv/host_loongarch64_isel.c'; fi` -+ - priv/libvexmultiarch_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-multiarch_main_main.o: priv/multiarch_main_main.c - @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvexmultiarch_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libvexmultiarch_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -MT priv/libvexmultiarch_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-multiarch_main_main.o -MD -MP -MF priv/$(DEPDIR)/libvexmultiarch_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-multiarch_main_main.Tpo -c -o priv/libvexmultiarch_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-multiarch_main_main.o `test -f 'priv/multiarch_main_main.c' || echo '$(srcdir)/'`priv/multiarch_main_main.c - @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) priv/$(DEPDIR)/libvexmultiarch_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-multiarch_main_main.Tpo priv/$(DEPDIR)/libvexmultiarch_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-multiarch_main_main.Po -@@ -3090,6 +3258,8 @@ distclean: distclean-am - -rm -f priv/$(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_arm_toIR.Po - -rm -f priv/$(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_generic_bb_to_IR.Po - -rm -f priv/$(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_generic_x87.Po -+ -rm -f priv/$(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_loongarch64_helpers.Po -+ -rm -f priv/$(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_loongarch64_toIR.Po - -rm -f priv/$(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_mips_helpers.Po - -rm -f priv/$(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_mips_toIR.Po - -rm -f priv/$(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_mipsdsp_toIR.Po -@@ -3114,6 +3284,8 @@ distclean: distclean-am - -rm -f priv/$(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_generic_simd128.Po - -rm -f priv/$(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_generic_simd256.Po - -rm -f priv/$(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_generic_simd64.Po -+ -rm -f priv/$(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_loongarch64_defs.Po -+ -rm -f priv/$(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_loongarch64_isel.Po - -rm -f priv/$(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_mips_defs.Po - -rm -f priv/$(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_mips_isel.Po - -rm -f priv/$(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_nanomips_defs.Po -@@ -3140,6 +3312,8 @@ distclean: distclean-am - -rm -f priv/$(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_arm_toIR.Po - -rm -f priv/$(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_generic_bb_to_IR.Po - -rm -f priv/$(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_generic_x87.Po -+ -rm -f priv/$(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_loongarch64_helpers.Po -+ -rm -f priv/$(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_loongarch64_toIR.Po - -rm -f priv/$(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_mips_helpers.Po - -rm -f priv/$(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_mips_toIR.Po - -rm -f priv/$(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_mipsdsp_toIR.Po -@@ -3164,6 +3338,8 @@ distclean: distclean-am - -rm -f priv/$(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_generic_simd128.Po - -rm -f priv/$(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_generic_simd256.Po - -rm -f priv/$(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_generic_simd64.Po -+ -rm -f priv/$(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_loongarch64_defs.Po -+ -rm -f priv/$(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_loongarch64_isel.Po - -rm -f priv/$(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_mips_defs.Po - -rm -f priv/$(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_mips_isel.Po - -rm -f priv/$(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_nanomips_defs.Po -@@ -3237,6 +3413,8 @@ maintainer-clean: maintainer-clean-am - -rm -f priv/$(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_arm_toIR.Po - -rm -f priv/$(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_generic_bb_to_IR.Po - -rm -f priv/$(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_generic_x87.Po -+ -rm -f priv/$(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_loongarch64_helpers.Po -+ -rm -f priv/$(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_loongarch64_toIR.Po - -rm -f priv/$(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_mips_helpers.Po - -rm -f priv/$(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_mips_toIR.Po - -rm -f priv/$(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-guest_mipsdsp_toIR.Po -@@ -3261,6 +3439,8 @@ maintainer-clean: maintainer-clean-am - -rm -f priv/$(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_generic_simd128.Po - -rm -f priv/$(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_generic_simd256.Po - -rm -f priv/$(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_generic_simd64.Po -+ -rm -f priv/$(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_loongarch64_defs.Po -+ -rm -f priv/$(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_loongarch64_isel.Po - -rm -f priv/$(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_mips_defs.Po - -rm -f priv/$(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_mips_isel.Po - -rm -f priv/$(DEPDIR)/libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-host_nanomips_defs.Po -@@ -3287,6 +3467,8 @@ maintainer-clean: maintainer-clean-am - -rm -f priv/$(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_arm_toIR.Po - -rm -f priv/$(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_generic_bb_to_IR.Po - -rm -f priv/$(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_generic_x87.Po -+ -rm -f priv/$(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_loongarch64_helpers.Po -+ -rm -f priv/$(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_loongarch64_toIR.Po - -rm -f priv/$(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_mips_helpers.Po - -rm -f priv/$(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_mips_toIR.Po - -rm -f priv/$(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-guest_mipsdsp_toIR.Po -@@ -3311,6 +3493,8 @@ maintainer-clean: maintainer-clean-am - -rm -f priv/$(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_generic_simd128.Po - -rm -f priv/$(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_generic_simd256.Po - -rm -f priv/$(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_generic_simd64.Po -+ -rm -f priv/$(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_loongarch64_defs.Po -+ -rm -f priv/$(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_loongarch64_isel.Po - -rm -f priv/$(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_mips_defs.Po - -rm -f priv/$(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_mips_isel.Po - -rm -f priv/$(DEPDIR)/libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-host_nanomips_defs.Po -@@ -3461,7 +3645,8 @@ pub/libvex_guest_offsets.h: auxprogs/genoffsets.c \ - pub/libvex_guest_arm64.h \ - pub/libvex_guest_s390x.h \ - pub/libvex_guest_mips32.h \ -- pub/libvex_guest_mips64.h -+ pub/libvex_guest_mips64.h \ -+ pub/libvex_guest_loongarch64.h - rm -f auxprogs/genoffsets.s - $(mkdir_p) auxprogs pub - $(CC) $(CFLAGS_FOR_GENOFFSETS) \ diff --git a/README b/README -index 8423880..1a88d1d 100644 +index eabcc6ad88c8..27491d234eb6 100644 --- a/README +++ b/README @@ -41,6 +41,7 @@ platforms: @@ -1011,10 +487,10 @@ index 8423880..1a88d1d 100644 - X86/FreeBSD diff --git a/README.loongarch64 b/README.loongarch64 new file mode 100644 -index 0000000..742bca0 +index 000000000000..8e3fce1e0b53 --- /dev/null +++ b/README.loongarch64 -@@ -0,0 +1,51 @@ +@@ -0,0 +1,63 @@ +Status +~~~~~~ + @@ -1038,6 +514,18 @@ index 0000000..742bca0 +* Iop_Max64Ux4 +* Iop_Min64Sx4 +* Iop_Min64Ux4 ++* Iop_RoundF64x2_RM ++* Iop_RoundF64x2_RP ++* Iop_RoundF64x2_RN ++* Iop_RoundF64x2_RZ ++* Iop_WidenHIto16Sx8 ++* Iop_WidenHIto32Sx4 ++* Iop_WidenHIto64Sx2 ++* Iop_WidenHIto128Sx1 ++* Iop_WidenHIto16Ux8 ++* Iop_WidenHIto32Ux4 ++* Iop_WidenHIto64Ux2 ++* Iop_WidenHIto128Ux1 + +A new IRMBusEvent: + @@ -1067,21 +555,21 @@ index 0000000..742bca0 + https://loongson.github.io/LoongArch-Documentation/LoongArch-toolchain-conventions-EN.html + diff --git a/VEX/auxprogs/genoffsets.c b/VEX/auxprogs/genoffsets.c -index 54376dc..89edf52 100644 +index 48c9723dc69e..dd80c3926c3a 100644 --- a/VEX/auxprogs/genoffsets.c +++ b/VEX/auxprogs/genoffsets.c -@@ -53,6 +53,7 @@ - #include "../pub/libvex_guest_s390x.h" +@@ -54,6 +54,7 @@ #include "../pub/libvex_guest_mips32.h" #include "../pub/libvex_guest_mips64.h" + #include "../pub/libvex_guest_riscv64.h" +#include "../pub/libvex_guest_loongarch64.h" #define VG_STRINGIFZ(__str) #__str #define VG_STRINGIFY(__str) VG_STRINGIFZ(__str) -@@ -262,6 +263,41 @@ void foo ( void ) - GENOFFSET(MIPS64,mips64,PC); - GENOFFSET(MIPS64,mips64,HI); - GENOFFSET(MIPS64,mips64,LO); +@@ -334,6 +335,41 @@ void foo ( void ) + GENOFFSET(RISCV64,riscv64,f30); + GENOFFSET(RISCV64,riscv64,f31); + GENOFFSET(RISCV64,riscv64,fcsr); + + // LOONGARCH64 + GENOFFSET(LOONGARCH64,loongarch64,R0); @@ -1122,7 +610,7 @@ index 54376dc..89edf52 100644 /*--------------------------------------------------------------------*/ diff --git a/VEX/priv/guest_loongarch64_defs.h b/VEX/priv/guest_loongarch64_defs.h new file mode 100644 -index 0000000..c3b572c +index 000000000000..c3b572ce5b4d --- /dev/null +++ b/VEX/priv/guest_loongarch64_defs.h @@ -0,0 +1,131 @@ @@ -1259,10 +747,10 @@ index 0000000..c3b572c +/*---------------------------------------------------------------*/ diff --git a/VEX/priv/guest_loongarch64_helpers.c b/VEX/priv/guest_loongarch64_helpers.c new file mode 100644 -index 0000000..e761539 +index 000000000000..8d9594b39049 --- /dev/null +++ b/VEX/priv/guest_loongarch64_helpers.c -@@ -0,0 +1,905 @@ +@@ -0,0 +1,908 @@ + +/*---------------------------------------------------------------*/ +/*--- begin guest_loongarch64_helpers.c ---*/ @@ -1420,6 +908,8 @@ index 0000000..e761539 + Note, this is only set for wrap-style redirects, not for + replace-style ones. */ + vex_state->guest_NRADDR = 0; ++ ++ vex_state->guest_IP_AT_SYSCALL = 0; +} + + @@ -1488,7 +978,7 @@ index 0000000..e761539 + .sizeof_IP = 8, + /* Describe any sections to be regarded by Memcheck as + 'always-defined'. */ -+ .n_alwaysDefd = 6, ++ .n_alwaysDefd = 7, + /* ? :( */ + .alwaysDefd = { + /* 0 */ ALWAYSDEFD64(guest_R0), @@ -1497,6 +987,7 @@ index 0000000..e761539 + /* 3 */ ALWAYSDEFD64(guest_CMSTART), + /* 4 */ ALWAYSDEFD64(guest_CMLEN), + /* 5 */ ALWAYSDEFD64(guest_NRADDR), ++ /* 6 */ ALWAYSDEFD64(guest_IP_AT_SYSCALL), + } +}; + @@ -2170,10 +1661,10 @@ index 0000000..e761539 +/*---------------------------------------------------------------*/ diff --git a/VEX/priv/guest_loongarch64_toIR.c b/VEX/priv/guest_loongarch64_toIR.c new file mode 100644 -index 0000000..50c24f1 +index 000000000000..8efdd171ad83 --- /dev/null +++ b/VEX/priv/guest_loongarch64_toIR.c -@@ -0,0 +1,12086 @@ +@@ -0,0 +1,12957 @@ + +/*--------------------------------------------------------------------*/ +/*--- begin guest_loongarch64_toIR.c ---*/ @@ -2377,8 +1868,9 @@ index 0000000..50c24f1 +} + +/* Get the suffix of the insn */ -+static const HChar *mkInsSize ( UInt size ) { -+ const HChar *insSize[8] ++static const HChar* mkInsSize ( UInt size ) ++{ ++ const HChar* insSize[8] + = { "b", "h", "w", "d", "bu", "hu", "wu", "du" }; + vassert(size < 8); + return insSize[size]; @@ -2609,6 +2101,12 @@ index 0000000..50c24f1 + breakupV128to32s(t128_0, t3, t2, t1, t0); +} + ++/* Construct a V128-bit value from 2 64-bit ints. */ ++static IRExpr* mkV128from64s ( IRTemp t1, IRTemp t0 ) ++{ ++ return binop(Iop_64HLtoV128, mkexpr(t1), mkexpr(t0)); ++} ++ +/* Construct a V256-bit value from four 64-bit ints. */ +static IRExpr* mkV256from64s ( IRTemp t3, IRTemp t2, + IRTemp t1, IRTemp t0 ) @@ -2634,7 +2132,8 @@ index 0000000..50c24f1 + ); +} + -+static IROp mkVecGetElem ( UInt size ) { ++static IROp mkVecGetElem ( UInt size ) ++{ + const IROp ops[4] + = { Iop_GetElem8x16, Iop_GetElem16x8, + Iop_GetElem32x4, Iop_GetElem64x2 }; @@ -10297,91 +9796,104 @@ index 0000000..50c24f1 +/*--- Helpers for vector integer arithmetic insns ---*/ +/*------------------------------------------------------------*/ + -+static IROp mkVecADD ( UInt size ) { ++static IROp mkVecADD ( UInt size ) ++{ + const IROp ops[5] + = { Iop_Add8x16, Iop_Add16x8, Iop_Add32x4, Iop_Add64x2, Iop_Add128x1 }; + vassert(size < 5); + return ops[size]; +} + -+static IROp mkVecSUB ( UInt size ) { ++static IROp mkVecSUB ( UInt size ) ++{ + const IROp ops[5] + = { Iop_Sub8x16, Iop_Sub16x8, Iop_Sub32x4, Iop_Sub64x2, Iop_Sub128x1 }; + vassert(size < 5); + return ops[size]; +} + -+static IROp mkVecMAXU ( UInt size ) { ++static IROp mkVecMAXU ( UInt size ) ++{ + const IROp ops[4] + = { Iop_Max8Ux16, Iop_Max16Ux8, Iop_Max32Ux4, Iop_Max64Ux2 }; + vassert(size < 4); + return ops[size]; +} + -+static IROp mkVecMAXS ( UInt size ) { ++static IROp mkVecMAXS ( UInt size ) ++{ + const IROp ops[4] + = { Iop_Max8Sx16, Iop_Max16Sx8, Iop_Max32Sx4, Iop_Max64Sx2 }; + vassert(size < 4); + return ops[size]; +} + -+static IROp mkVecMINU ( UInt size ) { ++static IROp mkVecMINU ( UInt size ) ++{ + const IROp ops[4] + = { Iop_Min8Ux16, Iop_Min16Ux8, Iop_Min32Ux4, Iop_Min64Ux2 }; + vassert(size < 4); + return ops[size]; +} + -+static IROp mkVecMINS ( UInt size ) { ++static IROp mkVecMINS ( UInt size ) ++{ + const IROp ops[4] + = { Iop_Min8Sx16, Iop_Min16Sx8, Iop_Min32Sx4, Iop_Min64Sx2 }; + vassert(size < 4); + return ops[size]; +} + -+static IROp mkV256MAXU ( UInt size ) { ++static IROp mkV256MAXU ( UInt size ) ++{ + const IROp ops[4] + = { Iop_Max8Ux32, Iop_Max16Ux16, Iop_Max32Ux8, Iop_Max64Ux4 }; + vassert(size < 4); + return ops[size]; +} + -+static IROp mkV256MAXS ( UInt size ) { ++static IROp mkV256MAXS ( UInt size ) ++{ + const IROp ops[4] + = { Iop_Max8Sx32, Iop_Max16Sx16, Iop_Max32Sx8, Iop_Max64Sx4 }; + vassert(size < 4); + return ops[size]; +} + -+static IROp mkV256MINU ( UInt size ) { ++static IROp mkV256MINU ( UInt size ) ++{ + const IROp ops[4] + = { Iop_Min8Ux32, Iop_Min16Ux16, Iop_Min32Ux8, Iop_Min64Ux4 }; + vassert(size < 4); + return ops[size]; +} + -+static IROp mkV256MINS ( UInt size ) { ++static IROp mkV256MINS ( UInt size ) ++{ + const IROp ops[4] + = { Iop_Min8Sx32, Iop_Min16Sx16, Iop_Min32Sx8, Iop_Min64Sx4 }; + vassert(size < 4); + return ops[size]; +} + -+static IROp mkVecCMPGTS ( UInt size ) { ++static IROp mkVecCMPGTS ( UInt size ) ++{ + const IROp ops[4] + = { Iop_CmpGT8Sx16, Iop_CmpGT16Sx8, Iop_CmpGT32Sx4, Iop_CmpGT64Sx2 }; + vassert(size < 4); + return ops[size]; +} + -+static IROp mkVecSHLN ( UInt size ) { ++static IROp mkVecSHLN ( UInt size ) ++{ + const IROp ops[4] + = { Iop_ShlN8x16, Iop_ShlN16x8, Iop_ShlN32x4, Iop_ShlN64x2 }; + vassert(size < 4); + return ops[size]; +} + -+static IROp mkVecSHRN ( UInt size ) { ++static IROp mkVecSHRN ( UInt size ) ++{ + const IROp ops[4] + = { Iop_ShrN8x16, Iop_ShrN16x8, Iop_ShrN32x4, Iop_ShrN64x2 }; + vassert(size < 4); @@ -10398,7 +9910,7 @@ index 0000000..50c24f1 + UInt insSz = SLICE(insn, 16, 15); + UInt isAdd = SLICE(insn, 17, 17); + -+ const HChar *nm[2] = { "vsub", "vadd" }; ++ const HChar* nm[2] = { "vsub", "vadd" }; + IROp mathOp = isAdd ? mkVecADD(insSz): mkVecSUB(insSz); + + DIP("%s.%s %s, %s, %s\n", nm[isAdd], mkInsSize(insSz), @@ -10436,7 +9948,7 @@ index 0000000..50c24f1 + default: vassert(0); break; + } + -+ const HChar *nm[2] = { "vsubi", "vaddi" }; ++ const HChar* nm[2] = { "vsubi", "vaddi" }; + + DIP("%s.%s %s, %s, %u\n", nm[isAdd], mkInsSize(insSz + 4), + nameVReg(vd), nameVReg(vj), ui5); @@ -10452,6 +9964,96 @@ index 0000000..50c24f1 + return True; +} + ++static Bool gen_vpcnt ( DisResult* dres, UInt insn, ++ const VexArchInfo* archinfo, ++ const VexAbiInfo* abiinfo ) ++{ ++ UInt vd = SLICE(insn, 4, 0); ++ UInt vj = SLICE(insn, 9, 5); ++ UInt insSz = SLICE(insn, 11, 10); ++ ++ IRTemp res = newTemp(Ity_V128); ++ IRTemp cnt8 = newTemp(Ity_V128); ++ IRTemp add16 = newTemp(Ity_V128); ++ IRTemp add32 = newTemp(Ity_V128); ++ ++ switch (insSz) { ++ case 0b00: { ++ assign(res, unop(Iop_Cnt8x16, getVReg(vj))); ++ break; ++ } ++ case 0b01: { ++ assign(cnt8, unop(Iop_Cnt8x16, getVReg(vj))); ++ assign(res, binop(Iop_Add16x8, ++ unop(Iop_WidenHIto16Ux8, ++ binop(Iop_PackEvenLanes8x16, ++ mkexpr(cnt8), mkV128(0x0000))), ++ unop(Iop_WidenHIto16Ux8, ++ binop(Iop_PackOddLanes8x16, ++ mkexpr(cnt8), mkV128(0x0000))))); ++ break; ++ } ++ case 0b10: { ++ assign(cnt8, unop(Iop_Cnt8x16, getVReg(vj))); ++ assign(add16, binop(Iop_Add16x8, ++ unop(Iop_WidenHIto16Ux8, ++ binop(Iop_PackEvenLanes8x16, ++ mkexpr(cnt8), mkV128(0x0000))), ++ unop(Iop_WidenHIto16Ux8, ++ binop(Iop_PackOddLanes8x16, ++ mkexpr(cnt8), mkV128(0x0000))))); ++ assign(res, binop(Iop_Add32x4, ++ unop(Iop_WidenHIto32Ux4, ++ binop(Iop_PackEvenLanes16x8, ++ mkexpr(add16), mkV128(0x0000))), ++ unop(Iop_WidenHIto32Ux4, ++ binop(Iop_PackOddLanes16x8, ++ mkexpr(add16), mkV128(0x0000))))); ++ break; ++ } ++ case 0b11: { ++ assign(cnt8, unop(Iop_Cnt8x16, getVReg(vj))); ++ assign(add16, binop(Iop_Add16x8, ++ unop(Iop_WidenHIto16Ux8, ++ binop(Iop_PackEvenLanes8x16, ++ mkexpr(cnt8), mkV128(0x0000))), ++ unop(Iop_WidenHIto16Ux8, ++ binop(Iop_PackOddLanes8x16, ++ mkexpr(cnt8), mkV128(0x0000))))); ++ assign(add32, binop(Iop_Add32x4, ++ unop(Iop_WidenHIto32Ux4, ++ binop(Iop_PackEvenLanes16x8, ++ mkexpr(add16), mkV128(0x0000))), ++ unop(Iop_WidenHIto32Ux4, ++ binop(Iop_PackOddLanes16x8, ++ mkexpr(add16), mkV128(0x0000))))); ++ assign(res, binop(Iop_Add64x2, ++ unop(Iop_WidenHIto64Ux2, ++ binop(Iop_PackEvenLanes32x4, ++ mkexpr(add32), mkV128(0x0000))), ++ unop(Iop_WidenHIto64Ux2, ++ binop(Iop_PackOddLanes32x4, ++ mkexpr(add32), mkV128(0x0000))))); ++ break; ++ } ++ default: ++ vassert(0); ++ break; ++ } ++ ++ DIP("vpcnt.%s %s, %s\n", mkInsSize(insSz), nameVReg(vd), nameVReg(vj)); ++ ++ if (!(archinfo->hwcaps & VEX_HWCAPS_LOONGARCH_LSX)) { ++ dres->jk_StopHere = Ijk_SigILL; ++ dres->whatNext = Dis_StopHere; ++ return True; ++ } ++ ++ putVReg(vd, mkexpr(res)); ++ ++ return True; ++} ++ +static Bool gen_vmax_vmin ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) @@ -10466,7 +10068,7 @@ index 0000000..50c24f1 + IROp op = isMin ? isU ? mkVecMINU(insSz) : mkVecMINS(insSz) : + isU ? mkVecMAXU(insSz) : mkVecMAXS(insSz); + UInt id = isU ? (insSz + 4) : insSz; -+ const HChar *nm[2] = { "vmax", "vmin" }; ++ const HChar* nm[2] = { "vmax", "vmin" }; + + DIP("%s.%s %s, %s, %s\n", nm[isMin], mkInsSize(id), + nameVReg(vd), nameVReg(vj), nameVReg(vk)); @@ -10496,7 +10098,7 @@ index 0000000..50c24f1 + IROp op = isMin ? isU ? mkV256MINU(insSz) : mkV256MINS(insSz) : + isU ? mkV256MAXU(insSz) : mkV256MAXS(insSz); + UInt id = isU ? (insSz + 4) : insSz; -+ const HChar *nm[2] = { "xvmax", "xvmin" }; ++ const HChar* nm[2] = { "xvmax", "xvmin" }; + + DIP("%s.%s %s, %s, %s\n", nm[isMin], mkInsSize(id), + nameXReg(xd), nameXReg(xj), nameXReg(xk)); @@ -10719,7 +10321,7 @@ index 0000000..50c24f1 + case 0b10: { + DIP("xvmsknz.b %s, %s\n", nameXReg(xd), nameXReg(xj)); + -+ if (!(archinfo->hwcaps & VEX_HWCAPS_LOONGARCH_LSX)) { ++ if (!(archinfo->hwcaps & VEX_HWCAPS_LOONGARCH_LASX)) { + dres->jk_StopHere = Ijk_SigILL; + dres->whatNext = Dis_StopHere; + return True; @@ -10747,11 +10349,211 @@ index 0000000..50c24f1 + return True; +} + ++static Bool gen_vldi ( DisResult* dres, UInt insn, ++ const VexArchInfo* archinfo, ++ const VexAbiInfo* abiinfo ) ++{ ++ UInt vd = SLICE(insn, 4, 0); ++ Int i13 = SLICE(insn, 17, 5); ++ UInt isX = SLICE(insn, 26, 26); ++ ++ if (isX) { ++ DIP("xvldi %s, %d\n", nameXReg(vd), i13); ++ ++ if (!(archinfo->hwcaps & VEX_HWCAPS_LOONGARCH_LASX)) { ++ dres->jk_StopHere = Ijk_SigILL; ++ dres->whatNext = Dis_StopHere; ++ return True; ++ } ++ } else { ++ DIP("vldi %s, %d\n", nameVReg(vd), i13); ++ ++ if (!(archinfo->hwcaps & VEX_HWCAPS_LOONGARCH_LSX)) { ++ dres->jk_StopHere = Ijk_SigILL; ++ dres->whatNext = Dis_StopHere; ++ return True; ++ } ++ } ++ ++ UInt i; ++ IRExpr* irex; ++ IRTemp data = newTemp(Ity_I64); ++ UInt immX = SLICE(i13, 5, 0); ++ UChar imm8 = SLICE(i13, 7, 0); ++ UShort imm10 = (SLICE(i13, 9, 9) == 0b1) ? ++ (SLICE(i13, 9, 0) | 0xfc00): SLICE(i13, 9, 0); ++ ++ if (SLICE(i13, 12, 12) == 0) { ++ switch (SLICE(i13, 11, 10)) { ++ case 0b00: { ++ irex = binop(Iop_8HLto16, mkU8(imm8), mkU8(imm8)); ++ assign(data, binop(Iop_32HLto64, ++ binop(Iop_16HLto32, irex, irex), ++ binop(Iop_16HLto32, irex, irex))); ++ break; ++ } ++ case 0b01: { ++ irex = binop(Iop_16HLto32, mkU16(imm10), mkU16(imm10)); ++ assign(data, binop(Iop_32HLto64, irex, irex)); ++ break; ++ } ++ case 0b10: { ++ irex = unop(Iop_16Sto32, mkU16(imm10)); ++ assign(data, binop(Iop_32HLto64, irex, irex)); ++ break; ++ } ++ case 0b11: { ++ assign(data, extendS(Ity_I16, mkU16(imm10))); ++ break; ++ } ++ default: vassert(0); ++ } ++ } else { ++ switch (SLICE(i13, 11, 8)) { ++ case 0b0000: { ++ assign(data, binop(Iop_32HLto64, ++ unop(Iop_8Uto32, mkU8(imm8)), ++ unop(Iop_8Uto32, mkU8(imm8)))); ++ break; ++ } ++ case 0b0001: { ++ irex = binop(Iop_Shl32, unop(Iop_8Uto32, mkU8(imm8)), mkU8(0x8)); ++ assign(data, binop(Iop_32HLto64, irex, irex)); ++ break; ++ } ++ case 0b0010: { ++ irex = binop(Iop_Shl32, unop(Iop_8Uto32, mkU8(imm8)), mkU8(0x10)); ++ assign(data, binop(Iop_32HLto64, irex, irex)); ++ break; ++ } ++ case 0b0011: { ++ irex = binop(Iop_Shl32, unop(Iop_8Uto32, mkU8(imm8)), mkU8(0x18)); ++ assign(data, binop(Iop_32HLto64, irex, irex)); ++ break; ++ } ++ case 0b0100: { ++ irex = unop(Iop_8Uto16, mkU8(imm8)); ++ assign(data, binop(Iop_32HLto64, ++ binop(Iop_16HLto32, irex, irex), ++ binop(Iop_16HLto32, irex, irex))); ++ break; ++ } ++ case 0b0101: { ++ irex = binop(Iop_Shl16, unop(Iop_8Uto16, mkU8(imm8)), mkU8(0x8)); ++ assign(data, binop(Iop_32HLto64, ++ binop(Iop_16HLto32, irex, irex), ++ binop(Iop_16HLto32, irex, irex))); ++ break; ++ } ++ case 0b0110: { ++ irex = binop(Iop_Or16, ++ binop(Iop_Shl16, ++ unop(Iop_8Uto16, mkU8(imm8)), ++ mkU8(0x8)), ++ mkU16(0xff)); ++ assign(data, binop(Iop_32HLto64, ++ binop(Iop_16HLto32, mkU16(0), irex), ++ binop(Iop_16HLto32, mkU16(0), irex))); ++ break; ++ } ++ case 0b0111: { ++ irex = binop(Iop_16HLto32, ++ unop(Iop_8Uto16, mkU8(imm8)), ++ mkU16(0xffff)); ++ assign(data, binop(Iop_32HLto64, irex, irex)); ++ break; ++ } ++ case 0b1000: { ++ irex = binop(Iop_8HLto16, mkU8(imm8), mkU8(imm8)); ++ assign(data, binop(Iop_32HLto64, ++ binop(Iop_16HLto32, irex, irex), ++ binop(Iop_16HLto32, irex, irex))); ++ break; ++ } ++ case 0b1001: { ++ assign(data, ++ binop(Iop_32HLto64, ++ binop(Iop_16HLto32, ++ binop(Iop_8HLto16, ++ unop(Iop_1Sto8, mkU1(SLICE(i13, 7, 7))), ++ unop(Iop_1Sto8, mkU1(SLICE(i13, 6, 6)))), ++ binop(Iop_8HLto16, ++ unop(Iop_1Sto8, mkU1(SLICE(i13, 5, 5))), ++ unop(Iop_1Sto8, mkU1(SLICE(i13, 4, 4))))), ++ binop(Iop_16HLto32, ++ binop(Iop_8HLto16, ++ unop(Iop_1Sto8, mkU1(SLICE(i13, 3, 3))), ++ unop(Iop_1Sto8, mkU1(SLICE(i13, 2, 2)))), ++ binop(Iop_8HLto16, ++ unop(Iop_1Sto8, mkU1(SLICE(i13, 1, 1))), ++ unop(Iop_1Sto8, mkU1(SLICE(i13, 0, 0))))))); ++ break; ++ } ++ case 0b1010: { ++ for (i = 6; i < 11; i++) ++ immX |= SLICE(i13, 6, 6) << i; ++ immX |= !SLICE(i13, 6, 6) << 11 | SLICE(i13, 7, 7) << 12; ++ immX <<= 19; ++ assign(data, binop(Iop_32HLto64, mkU32(immX), mkU32(immX))); ++ break; ++ } ++ case 0b1011: { ++ for (i = 6; i < 11; i++) ++ immX |= SLICE(i13, 6, 6) << i; ++ immX |= !SLICE(i13, 6, 6) << 11 | SLICE(i13, 7, 7) << 12; ++ immX <<= 19; ++ assign(data, extendU(Ity_I32, mkU32(immX))); ++ break; ++ } ++ case 0b1100: { ++ for (i = 6; i < 14; i++) ++ immX |= SLICE(i13, 6, 6) << i; ++ immX |= !SLICE(i13, 6, 6) << 14 | SLICE(i13, 7, 7) << 15; ++ assign(data, binop(Iop_Shl64, extendU(Ity_I32, mkU32(immX)), mkU8(0x30))); ++ break; ++ } ++ default: vassert(0); ++ } ++ } ++ ++ if (isX) { ++ putXReg(vd, mkV256from64s(data, data, data, data)); ++ } else { ++ putVReg(vd, mkV128from64s(data, data)); ++ } ++ ++ return True; ++} ++ + +/*------------------------------------------------------------*/ +/*--- Helpers for vector bit operation insns ---*/ +/*------------------------------------------------------------*/ + ++static IROp mkV128SHLN ( UInt size ) ++{ ++ const IROp ops[4] ++ = { Iop_ShlN8x16, Iop_ShlN16x8, Iop_ShlN32x4, Iop_ShlN64x2 }; ++ vassert(size < 4); ++ return ops[size]; ++} ++ ++static IROp mkV128SHRN ( UInt size ) ++{ ++ const IROp ops[4] ++ = { Iop_ShrN8x16, Iop_ShrN16x8, Iop_ShrN32x4, Iop_ShrN64x2 }; ++ vassert(size < 4); ++ return ops[size]; ++} ++ ++static IROp mkV128SARN ( UInt size ) ++{ ++ const IROp ops[4] ++ = { Iop_SarN8x16, Iop_SarN16x8, Iop_SarN32x4, Iop_SarN64x2 }; ++ vassert(size < 4); ++ return ops[size]; ++} ++ +static Bool gen_logical_v ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) @@ -10795,7 +10597,7 @@ index 0000000..50c24f1 + return False; + } + -+ const HChar *nm[8] = { "vandn.v", "vorn.v", "", "", ++ const HChar* nm[8] = { "vandn.v", "vorn.v", "", "", + "vand.v", "vor.v", "vxor.v", "vnor.v" }; + + DIP("%s %s, %s, %s\n", nm[insTy], nameVReg(vd), nameVReg(vj), nameVReg(vk)); @@ -10834,7 +10636,7 @@ index 0000000..50c24f1 + return False; + } + -+ const HChar *nm[8] = { "xvandn.v", "xvorn.v", "", "", ++ const HChar* nm[8] = { "xvandn.v", "xvorn.v", "", "", + "xvand.v", "xvor.v", "xvxor.v", "xvnor.v" }; + + DIP("%s %s, %s, %s\n", nm[insTy], nameXReg(xd), nameXReg(xj), nameXReg(xk)); @@ -10887,7 +10689,7 @@ index 0000000..50c24f1 + break; + } + -+ const HChar *nm[4] = { "vandi.b", "vori.b", "vxori.b", "vnori.b" }; ++ const HChar* nm[4] = { "vandi.b", "vori.b", "vxori.b", "vnori.b" }; + + DIP("%s %s, %s, %u\n", nm[insTy], nameVReg(vd), nameVReg(vj), ui8); + @@ -10902,6 +10704,49 @@ index 0000000..50c24f1 + return True; +} + ++static Bool gen_vshift_imm ( DisResult* dres, UInt insn, ++ const VexArchInfo* archinfo, ++ const VexAbiInfo* abiinfo ) ++{ ++ UInt vd = SLICE(insn, 4, 0); ++ UInt vj = SLICE(insn, 9, 5); ++ UInt insImm = SLICE(insn, 17, 10); ++ UInt insTy = SLICE(insn, 19, 18); ++ ++ UInt insSz, uImm; ++ if ((insImm & 0xf8) == 0x8) { // 00001mmm; b ++ uImm = insImm & 0x07; ++ insSz = 0; ++ } else if ((insImm & 0xf0) == 0x10) { // 0001mmmm; h ++ uImm = insImm & 0x0f; ++ insSz = 1; ++ } else if ((insImm & 0xe0) == 0x20) { // 001mmmmm; w ++ uImm = insImm & 0x1f; ++ insSz = 2; ++ } else if ((insImm & 0xc0) == 0x40) { // 01mmmmmm; d ++ uImm = insImm & 0x3f; ++ insSz = 3; ++ } else { ++ vassert(0); ++ } ++ ++ const HChar* nm[4] = { "vsrli", "vsrai", "", "vslli" }; ++ DIP("%s.%s %s, %s, %u\n", nm[insTy], mkInsSize(insSz), ++ nameVReg(vd), nameVReg(vj), uImm); ++ ++ IROp op = Iop_INVALID; ++ switch (insTy) { ++ case 0b11: op = mkV128SHLN(insSz); break; ++ case 0b00: op = mkV128SHRN(insSz); break; ++ case 0b01: op = mkV128SARN(insSz); break; ++ default: vassert(0); ++ } ++ ++ putVReg(vd, binop(op, getVReg(vj), mkU8(uImm))); ++ ++ return True; ++} ++ +static Bool gen_vbiti ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) @@ -10967,7 +10812,7 @@ index 0000000..50c24f1 + break; + } + -+ const HChar *nm[3] = { "vbitrevi", "vbitclri", "vbitseti" }; ++ const HChar* nm[3] = { "vbitrevi", "vbitclri", "vbitseti" }; + + DIP("%s.%s %s, %u\n", nm[insTy], mkInsSize(insSz), nameVReg(vd), uImm); + @@ -11043,24 +10888,192 @@ index 0000000..50c24f1 + + +/*------------------------------------------------------------*/ ++/*--- Helpers for vector floating point conversion insns ---*/ ++/*------------------------------------------------------------*/ ++ ++static Bool gen_vfrintrm_s ( DisResult* dres, UInt insn, ++ const VexArchInfo* archinfo, ++ const VexAbiInfo* abiinfo ) ++{ ++ UInt vd = SLICE(insn, 4, 0); ++ UInt vj = SLICE(insn, 9, 5); ++ ++ DIP("vfrintrm.s %s, %s\n", nameVReg(vd), nameVReg(vj)); ++ ++ if (!(archinfo->hwcaps & VEX_HWCAPS_LOONGARCH_LSX)) { ++ dres->jk_StopHere = Ijk_SigILL; ++ dres->whatNext = Dis_StopHere; ++ return True; ++ } ++ ++ putVReg(vd, unop(Iop_RoundF32x4_RM, getVReg(vj))); ++ ++ return True; ++} ++ ++static Bool gen_vfrintrm_d ( DisResult* dres, UInt insn, ++ const VexArchInfo* archinfo, ++ const VexAbiInfo* abiinfo ) ++{ ++ UInt vd = SLICE(insn, 4, 0); ++ UInt vj = SLICE(insn, 9, 5); ++ ++ DIP("vfrintrm.d %s, %s\n", nameVReg(vd), nameVReg(vj)); ++ ++ if (!(archinfo->hwcaps & VEX_HWCAPS_LOONGARCH_LSX)) { ++ dres->jk_StopHere = Ijk_SigILL; ++ dres->whatNext = Dis_StopHere; ++ return True; ++ } ++ ++ putVReg(vd, unop(Iop_RoundF64x2_RM, getVReg(vj))); ++ ++ return True; ++} ++ ++static Bool gen_vfrintrp_s ( DisResult* dres, UInt insn, ++ const VexArchInfo* archinfo, ++ const VexAbiInfo* abiinfo ) ++{ ++ UInt vd = SLICE(insn, 4, 0); ++ UInt vj = SLICE(insn, 9, 5); ++ ++ DIP("vfrintrp.s %s, %s\n", nameVReg(vd), nameVReg(vj)); ++ ++ if (!(archinfo->hwcaps & VEX_HWCAPS_LOONGARCH_LSX)) { ++ dres->jk_StopHere = Ijk_SigILL; ++ dres->whatNext = Dis_StopHere; ++ return True; ++ } ++ ++ putVReg(vd, unop(Iop_RoundF32x4_RP, getVReg(vj))); ++ ++ return True; ++} ++ ++static Bool gen_vfrintrp_d ( DisResult* dres, UInt insn, ++ const VexArchInfo* archinfo, ++ const VexAbiInfo* abiinfo ) ++{ ++ UInt vd = SLICE(insn, 4, 0); ++ UInt vj = SLICE(insn, 9, 5); ++ ++ DIP("vfrintrp.d %s, %s\n", nameVReg(vd), nameVReg(vj)); ++ ++ if (!(archinfo->hwcaps & VEX_HWCAPS_LOONGARCH_LSX)) { ++ dres->jk_StopHere = Ijk_SigILL; ++ dres->whatNext = Dis_StopHere; ++ return True; ++ } ++ ++ putVReg(vd, unop(Iop_RoundF64x2_RP, getVReg(vj))); ++ ++ return True; ++} ++ ++static Bool gen_vfrintrz_s ( DisResult* dres, UInt insn, ++ const VexArchInfo* archinfo, ++ const VexAbiInfo* abiinfo ) ++{ ++ UInt vd = SLICE(insn, 4, 0); ++ UInt vj = SLICE(insn, 9, 5); ++ ++ DIP("vfrintrz.s %s, %s\n", nameVReg(vd), nameVReg(vj)); ++ ++ if (!(archinfo->hwcaps & VEX_HWCAPS_LOONGARCH_LSX)) { ++ dres->jk_StopHere = Ijk_SigILL; ++ dres->whatNext = Dis_StopHere; ++ return True; ++ } ++ ++ putVReg(vd, unop(Iop_RoundF32x4_RZ, getVReg(vj))); ++ ++ return True; ++} ++ ++static Bool gen_vfrintrz_d ( DisResult* dres, UInt insn, ++ const VexArchInfo* archinfo, ++ const VexAbiInfo* abiinfo ) ++{ ++ UInt vd = SLICE(insn, 4, 0); ++ UInt vj = SLICE(insn, 9, 5); ++ ++ DIP("vfrintrz.d %s, %s\n", nameVReg(vd), nameVReg(vj)); ++ ++ if (!(archinfo->hwcaps & VEX_HWCAPS_LOONGARCH_LSX)) { ++ dres->jk_StopHere = Ijk_SigILL; ++ dres->whatNext = Dis_StopHere; ++ return True; ++ } ++ ++ putVReg(vd, unop(Iop_RoundF64x2_RZ, getVReg(vj))); ++ ++ return True; ++} ++ ++static Bool gen_vfrintrne_s ( DisResult* dres, UInt insn, ++ const VexArchInfo* archinfo, ++ const VexAbiInfo* abiinfo ) ++{ ++ UInt vd = SLICE(insn, 4, 0); ++ UInt vj = SLICE(insn, 9, 5); ++ ++ DIP("vfrintrne.s %s, %s\n", nameVReg(vd), nameVReg(vj)); ++ ++ if (!(archinfo->hwcaps & VEX_HWCAPS_LOONGARCH_LSX)) { ++ dres->jk_StopHere = Ijk_SigILL; ++ dres->whatNext = Dis_StopHere; ++ return True; ++ } ++ ++ putVReg(vd, unop(Iop_RoundF32x4_RN, getVReg(vj))); ++ ++ return True; ++} ++ ++static Bool gen_vfrintrne_d ( DisResult* dres, UInt insn, ++ const VexArchInfo* archinfo, ++ const VexAbiInfo* abiinfo ) ++{ ++ UInt vd = SLICE(insn, 4, 0); ++ UInt vj = SLICE(insn, 9, 5); ++ ++ DIP("vfrintrne.d %s, %s\n", nameVReg(vd), nameVReg(vj)); ++ ++ if (!(archinfo->hwcaps & VEX_HWCAPS_LOONGARCH_LSX)) { ++ dres->jk_StopHere = Ijk_SigILL; ++ dres->whatNext = Dis_StopHere; ++ return True; ++ } ++ ++ putVReg(vd, unop(Iop_RoundF64x2_RN, getVReg(vj))); ++ ++ return True; ++} ++ ++ ++/*------------------------------------------------------------*/ +/*--- Helpers for vector comparison and selection insns ---*/ +/*------------------------------------------------------------*/ + -+static IROp mkVecCMPEQ ( UInt size ) { ++static IROp mkVecCMPEQ ( UInt size ) ++{ + const IROp ops[4] + = { Iop_CmpEQ8x16, Iop_CmpEQ16x8, Iop_CmpEQ32x4, Iop_CmpEQ64x2 }; + vassert(size < 4); + return ops[size]; +} + -+static IROp mkV256CMPEQ ( UInt size ) { ++static IROp mkV256CMPEQ ( UInt size ) ++{ + const IROp ops[4] + = { Iop_CmpEQ8x32, Iop_CmpEQ16x16, Iop_CmpEQ32x8, Iop_CmpEQ64x4 }; + vassert(size < 4); + return ops[size]; +} + -+static IROp mkVecCMPGTU ( UInt size ) { ++static IROp mkVecCMPGTU ( UInt size ) ++{ + const IROp ops[4] + = { Iop_CmpGT8Ux16, Iop_CmpGT16Ux8, Iop_CmpGT32Ux4, Iop_CmpGT64Ux2 }; + vassert(size < 4); @@ -11110,7 +11123,7 @@ index 0000000..50c24f1 + return False; + } + -+ const HChar *nm[5] = { "vseq", "vsle", "vsle", "vslt", "vslt" }; ++ const HChar* nm[5] = { "vseq", "vsle", "vsle", "vslt", "vslt" }; + + DIP("%s.%s %s, %s, %s\n", nm[insTy], mkInsSize(szId), + nameVReg(vd), nameVReg(vj), nameVReg(vk)); @@ -11143,7 +11156,7 @@ index 0000000..50c24f1 + IRTemp argR = newTemp(Ity_V128); + assign(argL, getVReg(vj)); + -+ IRExpr *si5Expr; ++ IRExpr* si5Expr; + IRTemp s64 = newTemp(Ity_I64); + assign(s64, mkU64(extend64(si5, 5))); + @@ -11199,7 +11212,7 @@ index 0000000..50c24f1 + break; + } + -+ const HChar *nm[10] = { "vseqi", "vslei", "vslei", "vslti", "vslti" }; ++ const HChar* nm[10] = { "vseqi", "vslei", "vslei", "vslti", "vslti" }; + + DIP("%s.%s %s, %s, %d\n", nm[insTy], mkInsSize(szId), nameVReg(vd), + nameVReg(vj), (Int)extend32(si5, 5)); @@ -11240,7 +11253,7 @@ index 0000000..50c24f1 + return False; + } + -+ const HChar *nm[5] = { "xvseq", "xvsle", "xvsle", "xvslt", "xvslt" }; ++ const HChar* nm[5] = { "xvseq", "xvsle", "xvsle", "xvslt", "xvslt" }; + + DIP("%s.%s %s, %s, %s\n", nm[insTy], mkInsSize(szId), + nameXReg(xd), nameXReg(xj), nameXReg(xk)); @@ -11427,7 +11440,8 @@ index 0000000..50c24f1 +/*--- Helpers for vector moving and shuffling insns ---*/ +/*------------------------------------------------------------*/ + -+static IROp mkVecPACKOD ( UInt size ) { ++static IROp mkVecPACKOD ( UInt size ) ++{ + const IROp ops[4] + = { Iop_PackOddLanes8x16, Iop_PackOddLanes16x8, + Iop_PackOddLanes32x4, Iop_InterleaveHI64x2 }; @@ -11435,7 +11449,8 @@ index 0000000..50c24f1 + return ops[size]; +} + -+static IROp mkVecPACKEV ( UInt size ) { ++static IROp mkVecPACKEV ( UInt size ) ++{ + const IROp ops[4] + = { Iop_PackEvenLanes8x16, Iop_PackEvenLanes16x8, + Iop_PackEvenLanes32x4, Iop_InterleaveLO64x2 }; @@ -11443,7 +11458,8 @@ index 0000000..50c24f1 + return ops[size]; +} + -+static IROp mkVecINTERLEAVELO ( UInt size ) { ++static IROp mkVecINTERLEAVELO ( UInt size ) ++{ + const IROp ops[4] + = { Iop_InterleaveLO8x16, Iop_InterleaveLO16x8, + Iop_InterleaveLO32x4, Iop_InterleaveLO64x2 }; @@ -11451,7 +11467,8 @@ index 0000000..50c24f1 + return ops[size]; +} + -+static IROp mkVecINTERLEAVEHI ( UInt size ) { ++static IROp mkVecINTERLEAVEHI ( UInt size ) ++{ + const IROp ops[4] + = { Iop_InterleaveHI8x16, Iop_InterleaveHI16x8, + Iop_InterleaveHI32x4, Iop_InterleaveHI64x2 }; @@ -11459,6 +11476,77 @@ index 0000000..50c24f1 + return ops[size]; +} + ++static IROp mkV128GetElem ( UInt size ) ++{ ++ const IROp ops[4] ++ = { Iop_GetElem8x16, Iop_GetElem16x8, ++ Iop_GetElem32x4, Iop_GetElem64x2 }; ++ vassert(size < 4); ++ return ops[size]; ++} ++ ++static Bool gen_vinsgr2vr ( DisResult* dres, UInt insn, ++ const VexArchInfo* archinfo, ++ const VexAbiInfo* abiinfo ) ++{ ++ UInt vd = SLICE(insn, 4, 0); ++ UInt rj = SLICE(insn, 9, 5); ++ UInt insImm = SLICE(insn, 15, 10); ++ ++ UInt uImm, insSz; ++ IRTemp res = newTemp(Ity_V128); ++ ++ if ((insImm & 0x30) == 0x20) { // 10mmmm; b ++ insSz = 0; ++ uImm = insImm & 0xf; ++ assign(res, triop(Iop_SetElem8x16, ++ getVReg(vd), ++ mkU8(uImm), ++ getIReg8(rj))); ++ } else if ((insImm & 0x38) == 0x30) { // 110mmm; h ++ insSz = 1; ++ uImm = insImm & 0x7; ++ assign(res, triop(Iop_SetElem16x8, ++ getVReg(vd), ++ mkU8(uImm), ++ getIReg16(rj))); ++ } else if ((insImm & 0x3c) == 0x38) { // 1110mm; w ++ insSz = 2; ++ uImm = insImm & 0x3; ++ assign(res, triop(Iop_SetElem32x4, ++ getVReg(vd), ++ mkU8(uImm), ++ getIReg32(rj))); ++ } else if ((insImm & 0x3e) == 0x3c) { // 11110m; d ++ insSz = 3; ++ uImm = insImm & 0x1; ++ if (uImm == 0) { ++ assign(res, binop(Iop_64HLtoV128, ++ unop(Iop_V128HIto64, getVReg(vd)), ++ getIReg64(rj))); ++ } else { ++ assign(res, binop(Iop_64HLtoV128, ++ getIReg64(rj), ++ unop(Iop_V128to64, getVReg(vd)))); ++ } ++ } else { ++ vassert(0); ++ } ++ ++ DIP("vinsgr2vr.%s %s, %s, %u\n", mkInsSize(insSz), ++ nameVReg(vd), nameIReg(rj), uImm); ++ ++ if (!(archinfo->hwcaps & VEX_HWCAPS_LOONGARCH_LSX)) { ++ dres->jk_StopHere = Ijk_SigILL; ++ dres->whatNext = Dis_StopHere; ++ return True; ++ } ++ ++ putVReg(vd, mkexpr(res)); ++ ++ return True; ++} ++ +static Bool gen_vpickve2gr ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) @@ -11469,7 +11557,7 @@ index 0000000..50c24f1 + UInt isS = SLICE(insn, 18, 18); + + UInt uImm, insSz; -+ IRExpr *immExpr; ++ IRExpr* immExpr; + IRType extTy = Ity_INVALID; + IRTemp res = newTemp(Ity_I64); + @@ -11606,7 +11694,7 @@ index 0000000..50c24f1 + UInt rk = SLICE(insn, 14, 10); + UInt insSz = SLICE(insn, 16, 15); + -+ IRExpr *elem; ++ IRExpr* elem; + IRTemp mod = newTemp(Ity_I8); + IRTemp res = newTemp(Ity_V128); + UInt div[4] = { 0x10, 0x8, 0x4, 0x2 }; @@ -11698,6 +11786,113 @@ index 0000000..50c24f1 + return True; +} + ++static Bool gen_vbsll_vbsrl ( DisResult* dres, UInt insn, ++ const VexArchInfo* archinfo, ++ const VexAbiInfo* abiinfo ) ++{ ++ UInt vd = SLICE(insn, 4, 0); ++ UInt vj = SLICE(insn, 9, 5); ++ UInt ui5 = SLICE(insn, 14, 10); ++ UInt insTy = SLICE(insn, 16, 15); ++ ++ IROp op = Iop_INVALID; ++ switch (insTy) { ++ case 0b00: { ++ DIP("vbsll.v %s, %s, %u", nameVReg(vd), nameVReg(vj), ui5); ++ ++ if (!(archinfo->hwcaps & VEX_HWCAPS_LOONGARCH_LSX)) { ++ dres->jk_StopHere = Ijk_SigILL; ++ dres->whatNext = Dis_StopHere; ++ return True; ++ } ++ ++ op = Iop_ShlV128; ++ ++ break; ++ } ++ ++ case 0b01: { ++ DIP("vbsrl.v %s, %s, %u", nameVReg(vd), nameVReg(vj), ui5); ++ ++ if (!(archinfo->hwcaps & VEX_HWCAPS_LOONGARCH_LSX)) { ++ dres->jk_StopHere = Ijk_SigILL; ++ dres->whatNext = Dis_StopHere; ++ return True; ++ } ++ ++ op = Iop_ShrV128; ++ ++ break; ++ } ++ ++ default: ++ return False; ++ } ++ ++ putVReg(vd, binop(op, getVReg(vj), mkU8(ui5))); ++ ++ return True; ++} ++ ++static Bool gen_vreplvei ( DisResult* dres, UInt insn, ++ const VexArchInfo* archinfo, ++ const VexAbiInfo* abiinfo ) ++{ ++ UInt vd = SLICE(insn, 4, 0); ++ UInt vj = SLICE(insn, 9, 5); ++ UInt insImm = SLICE(insn, 17, 10); ++ ++ IRExpr* elem; ++ UInt uImm, insSz; ++ IRTemp res = newTemp(Ity_V128); ++ ++ if ((insImm & 0xf0) == 0xe0) { // 1110mmmm; b ++ uImm = insImm & 0xf; ++ insSz = 0; ++ } else if ((insImm & 0xf8) == 0xf0) { // 11110mmm; h ++ uImm = insImm & 0x7; ++ insSz = 1; ++ } else if ((insImm & 0xfc) == 0xf8) { // 111110mm; w ++ uImm = insImm & 0x3; ++ insSz = 2; ++ } else if ((insImm & 0xfe) == 0xfc) { // 1111110m; d ++ uImm = insImm & 0x1; ++ insSz = 3; ++ } else { ++ vassert(0); ++ } ++ ++ DIP("vreplvei.%s %s, %s, %u", mkInsSize(insSz), ++ nameVReg(vd), nameVReg(vj), uImm); ++ ++ if (!(archinfo->hwcaps & VEX_HWCAPS_LOONGARCH_LSX)) { ++ dres->jk_StopHere = Ijk_SigILL; ++ dres->whatNext = Dis_StopHere; ++ return True; ++ } ++ ++ elem = binop(mkV128GetElem(insSz), getVReg(vj), mkU8(uImm)); ++ switch (insSz) { ++ case 0: ++ assign(res, unop(Iop_Dup8x16, elem)); ++ break; ++ case 1: ++ assign(res, unop(Iop_Dup16x8, elem)); ++ break; ++ case 2: ++ assign(res, unop(Iop_Dup32x4, elem)); ++ break; ++ case 3: ++ assign(res, binop(Iop_64HLtoV128, elem, elem)); ++ break; ++ default: vassert(0); ++ } ++ ++ putVReg(vd, mkexpr(res)); ++ ++ return True; ++} ++ +static Bool gen_evod ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) @@ -11707,7 +11902,7 @@ index 0000000..50c24f1 + UInt vk = SLICE(insn, 14, 10); + UInt insSz = SLICE(insn, 16, 15); + -+ const HChar *nm; ++ const HChar* nm; + IRTemp argL = newTemp(Ity_V128); + IRTemp argR = newTemp(Ity_V128); + IRTemp res = newTemp(Ity_V128); @@ -11949,6 +12144,28 @@ index 0000000..50c24f1 + return True; +} + ++static Bool gen_vldx ( DisResult* dres, UInt insn, ++ const VexArchInfo* archinfo, ++ const VexAbiInfo* abiinfo ) ++{ ++ UInt vd = SLICE(insn, 4, 0); ++ UInt rj = SLICE(insn, 9, 5); ++ UInt rk = SLICE(insn, 14, 10); ++ ++ DIP("vldx %s, %s, %s\n", nameVReg(vd), nameIReg(rj), nameIReg(rk)); ++ ++ if (!(archinfo->hwcaps & VEX_HWCAPS_LOONGARCH_LSX)) { ++ dres->jk_StopHere = Ijk_SigILL; ++ dres->whatNext = Dis_StopHere; ++ return True; ++ } ++ ++ IRExpr* addr = binop(Iop_Add64, getIReg64(rj), getIReg64(rk)); ++ putVReg(vd, load(Ity_V128, addr)); ++ ++ return True; ++} ++ +static Bool gen_vldrepl ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) @@ -12050,6 +12267,28 @@ index 0000000..50c24f1 + return True; +} + ++static Bool gen_vstx ( DisResult* dres, UInt insn, ++ const VexArchInfo* archinfo, ++ const VexAbiInfo* abiinfo ) ++{ ++ UInt vd = SLICE(insn, 4, 0); ++ UInt rj = SLICE(insn, 9, 5); ++ UInt rk = SLICE(insn, 14, 10); ++ ++ DIP("vstx %s, %s, %s\n", nameVReg(vd), nameIReg(rj), nameIReg(rk)); ++ ++ if (!(archinfo->hwcaps & VEX_HWCAPS_LOONGARCH_LSX)) { ++ dres->jk_StopHere = Ijk_SigILL; ++ dres->whatNext = Dis_StopHere; ++ return True; ++ } ++ ++ IRExpr* addr = binop(Iop_Add64, getIReg64(rj), getIReg64(rk)); ++ store(addr, getVReg(vd)); ++ ++ return True; ++} ++ +static Bool gen_xvld ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) @@ -12073,6 +12312,28 @@ index 0000000..50c24f1 + return True; +} + ++static Bool gen_xvldx ( DisResult* dres, UInt insn, ++ const VexArchInfo* archinfo, ++ const VexAbiInfo* abiinfo ) ++{ ++ UInt xd = SLICE(insn, 4, 0); ++ UInt rj = SLICE(insn, 9, 5); ++ UInt rk = SLICE(insn, 14, 10); ++ ++ DIP("xvldx %s, %s, %s\n", nameXReg(xd), nameIReg(rj), nameIReg(rk)); ++ ++ if (!(archinfo->hwcaps & VEX_HWCAPS_LOONGARCH_LASX)) { ++ dres->jk_StopHere = Ijk_SigILL; ++ dres->whatNext = Dis_StopHere; ++ return True; ++ } ++ ++ IRExpr* addr = binop(Iop_Add64, getIReg64(rj), getIReg64(rk)); ++ putXReg(xd, load(Ity_V256, addr)); ++ ++ return True; ++} ++ +static Bool gen_xvst ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) @@ -12096,6 +12357,28 @@ index 0000000..50c24f1 + return True; +} + ++static Bool gen_xvstx ( DisResult* dres, UInt insn, ++ const VexArchInfo* archinfo, ++ const VexAbiInfo* abiinfo ) ++{ ++ UInt xd = SLICE(insn, 4, 0); ++ UInt rj = SLICE(insn, 9, 5); ++ UInt rk = SLICE(insn, 14, 10); ++ ++ DIP("xvstx %s, %s, %s\n", nameXReg(xd), nameIReg(rj), nameIReg(rk)); ++ ++ if (!(archinfo->hwcaps & VEX_HWCAPS_LOONGARCH_LASX)) { ++ dres->jk_StopHere = Ijk_SigILL; ++ dres->whatNext = Dis_StopHere; ++ return True; ++ } ++ ++ IRExpr* addr = binop(Iop_Add64, getIReg64(rj), getIReg64(rk)); ++ store(addr, getXReg(xd)); ++ ++ return True; ++} ++ +static Bool gen_vstelm ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) @@ -13132,6 +13415,18 @@ index 0000000..50c24f1 + Bool ok; + + switch (SLICE(insn, 21, 15)) { ++ case 0b0000000: ++ ok = gen_vldx(dres, insn, archinfo, abiinfo); ++ break; ++ case 0b0001000: ++ ok = gen_vstx(dres, insn, archinfo, abiinfo); ++ break; ++ case 0b0010000: ++ ok = gen_xvldx(dres, insn, archinfo, abiinfo); ++ break; ++ case 0b0011000: ++ ok = gen_xvstx(dres, insn, archinfo, abiinfo); ++ break; + case 0b1000000: + ok = gen_amswap_w(dres, insn, archinfo, abiinfo); + break; @@ -13727,6 +14022,45 @@ index 0000000..50c24f1 + return ok; +} + ++static Bool disInstr_LOONGARCH64_WRK_01_1100_1010_01110_101 ( DisResult* dres, UInt insn, ++ const VexArchInfo* archinfo, ++ const VexAbiInfo* abiinfo ) ++{ ++ Bool ok; ++ ++ switch (SLICE(insn, 13, 10)) { ++ case 0b0001: ++ ok = gen_vfrintrm_s(dres, insn, archinfo, abiinfo); ++ break; ++ case 0b0010: ++ ok = gen_vfrintrm_d(dres, insn, archinfo, abiinfo); ++ break; ++ case 0b0101: ++ ok = gen_vfrintrp_s(dres, insn, archinfo, abiinfo); ++ break; ++ case 0b0110: ++ ok = gen_vfrintrp_d(dres, insn, archinfo, abiinfo); ++ break; ++ case 0b1001: ++ ok = gen_vfrintrz_s(dres, insn, archinfo, abiinfo); ++ break; ++ case 0b1010: ++ ok = gen_vfrintrz_d(dres, insn, archinfo, abiinfo); ++ break; ++ case 0b1101: ++ ok = gen_vfrintrne_s(dres, insn, archinfo, abiinfo); ++ break; ++ case 0b1110: ++ ok = gen_vfrintrne_d(dres, insn, archinfo, abiinfo); ++ break; ++ default: ++ ok = False; ++ break; ++ } ++ ++ return ok; ++} ++ +static Bool disInstr_LOONGARCH64_WRK_01_1100_1010_01110 ( DisResult* dres, UInt insn, + const VexArchInfo* archinfo, + const VexAbiInfo* abiinfo ) @@ -13734,12 +14068,22 @@ index 0000000..50c24f1 + Bool ok; + + switch (SLICE(insn, 16, 14)) { ++ case 0b000: ++ if (SLICE(insn, 13, 12) == 0b10) { ++ ok = gen_vpcnt(dres, insn, archinfo, abiinfo); ++ } else { ++ ok = False; ++ } ++ break; + case 0b001: + ok = gen_vmsk(dres, insn, archinfo, abiinfo); + break; + case 0b010: + ok = gen_vset(dres, insn, archinfo, abiinfo); + break; ++ case 0b101: ++ ok = disInstr_LOONGARCH64_WRK_01_1100_1010_01110_101(dres, insn, archinfo, abiinfo); ++ break; + default: + ok = False; + break; @@ -13785,6 +14129,9 @@ index 0000000..50c24f1 + case 0b00110: + ok = gen_vaddi_vsubi(dres, insn, archinfo, abiinfo); + break; ++ case 0b00111: ++ ok = gen_vbsll_vbsrl(dres, insn, archinfo, abiinfo); ++ break; + case 0b01101: + ok = gen_vfrstpi(dres, insn, archinfo, abiinfo); + break; @@ -13809,10 +14156,16 @@ index 0000000..50c24f1 + Bool ok; + + switch (SLICE(insn, 21, 16)) { ++ case 0b101011: ++ ok = gen_vinsgr2vr(dres, insn, archinfo, abiinfo); ++ break; + case 0b101111: + case 0b110011: + ok = gen_vpickve2gr(dres, insn, archinfo, abiinfo); + break; ++ case 0b110111: ++ ok = gen_vreplvei(dres, insn, archinfo, abiinfo); ++ break; + default: + ok = False; + break; @@ -13833,6 +14186,9 @@ index 0000000..50c24f1 + case 0b0110: + ok = gen_vbiti(dres, insn, archinfo, abiinfo); + break; ++ case 0b1011: ++ ok = gen_vshift_imm(dres, insn, archinfo, abiinfo); ++ break; + default: + ok = False; + break; @@ -13854,6 +14210,9 @@ index 0000000..50c24f1 + case 0b0111: + ok = gen_vlogical_u8(dres, insn, archinfo, abiinfo); + break; ++ case 0b1000: ++ ok = gen_vldi(dres, insn, archinfo, abiinfo); ++ break; + default: + ok = False; + break; @@ -14024,6 +14383,9 @@ index 0000000..50c24f1 + case 0b1011: + ok = gen_xvpermi(dres, insn, archinfo, abiinfo); + break; ++ case 0b1000: ++ ok = gen_vldi(dres, insn, archinfo, abiinfo); ++ break; + default: + ok = False; + break; @@ -14262,10 +14624,10 @@ index 0000000..50c24f1 +/*--------------------------------------------------------------------*/ diff --git a/VEX/priv/host_loongarch64_defs.c b/VEX/priv/host_loongarch64_defs.c new file mode 100644 -index 0000000..6b50970 +index 000000000000..269b91020f31 --- /dev/null +++ b/VEX/priv/host_loongarch64_defs.c -@@ -0,0 +1,3929 @@ +@@ -0,0 +1,3953 @@ + +/*---------------------------------------------------------------*/ +/*--- begin host_loongarch64_defs.c ---*/ @@ -15068,6 +15430,22 @@ index 0000000..6b50970 + return "vclz.d"; + case LAvecun_VPCNT_B: + return "vpcnt.b"; ++ case LAvecun_VFRINTRM_S: ++ return "vfrintrm.s"; ++ case LAvecun_VFRINTRM_D: ++ return "vfrintrm.d"; ++ case LAvecun_VFRINTRP_S: ++ return "vfrintrp.s"; ++ case LAvecun_VFRINTRP_D: ++ return "vfrintrp.d"; ++ case LAvecun_VFRINTRZ_S: ++ return "vfrintrz.s"; ++ case LAvecun_VFRINTRZ_D: ++ return "vfrintrz.d"; ++ case LAvecun_VFRINTRNE_S: ++ return "vfrintrne.s"; ++ case LAvecun_VFRINTRNE_D: ++ return "vfrintrne.d"; + case LAvecun_VEXTH_H_B: + return "vexth.h.b"; + case LAvecun_VEXTH_W_H: @@ -17258,6 +17636,14 @@ index 0000000..6b50970 + case LAvecun_VCLZ_W: + case LAvecun_VCLZ_D: + case LAvecun_VPCNT_B: ++ case LAvecun_VFRINTRM_S: ++ case LAvecun_VFRINTRM_D: ++ case LAvecun_VFRINTRP_S: ++ case LAvecun_VFRINTRP_D: ++ case LAvecun_VFRINTRZ_S: ++ case LAvecun_VFRINTRZ_D: ++ case LAvecun_VFRINTRNE_S: ++ case LAvecun_VFRINTRNE_D: + case LAvecun_VEXTH_H_B: + case LAvecun_VEXTH_W_H: + case LAvecun_VEXTH_D_W: @@ -18197,10 +18583,10 @@ index 0000000..6b50970 +/*---------------------------------------------------------------*/ diff --git a/VEX/priv/host_loongarch64_defs.h b/VEX/priv/host_loongarch64_defs.h new file mode 100644 -index 0000000..acf38b1 +index 000000000000..5b6bc9652832 --- /dev/null +++ b/VEX/priv/host_loongarch64_defs.h -@@ -0,0 +1,919 @@ +@@ -0,0 +1,927 @@ + +/*---------------------------------------------------------------*/ +/*--- begin host_loongarch64_defs.h ---*/ @@ -18583,6 +18969,14 @@ index 0000000..acf38b1 + LAvecun_VCLZ_W = 0x729c1800, + LAvecun_VCLZ_D = 0x729c1c00, + LAvecun_VPCNT_B = 0x729c2000, ++ LAvecun_VFRINTRM_S = 0x729d4400, ++ LAvecun_VFRINTRM_D = 0x729d4800, ++ LAvecun_VFRINTRP_S = 0x729d5400, ++ LAvecun_VFRINTRP_D = 0x729d5800, ++ LAvecun_VFRINTRZ_S = 0x729d6400, ++ LAvecun_VFRINTRZ_D = 0x729d6800, ++ LAvecun_VFRINTRNE_S = 0x729d7400, ++ LAvecun_VFRINTRNE_D = 0x729d7800, + LAvecun_VEXTH_H_B = 0x729ee000, + LAvecun_VEXTH_W_H = 0x729ee400, + LAvecun_VEXTH_D_W = 0x729ee800, @@ -19122,10 +19516,10 @@ index 0000000..acf38b1 +/*---------------------------------------------------------------*/ diff --git a/VEX/priv/host_loongarch64_isel.c b/VEX/priv/host_loongarch64_isel.c new file mode 100644 -index 0000000..d60a2b3 +index 000000000000..0a84fb06a0bb --- /dev/null +++ b/VEX/priv/host_loongarch64_isel.c -@@ -0,0 +1,3748 @@ +@@ -0,0 +1,3796 @@ + +/*---------------------------------------------------------------*/ +/*--- begin host_loongarch64_isel.c ---*/ @@ -20230,9 +20624,9 @@ index 0000000..d60a2b3 + if (src2->tag == LAri_Imm) { + addInstr(env, LOONGARCH64Instr_VecBinary(pickOp, src2, src1, dst)); + } else { -+ HReg v_tmp = newVRegV(env); -+ addInstr(env, LOONGARCH64Instr_VecBinary(veplOp, src2, src1, v_tmp)); -+ addInstr(env, LOONGARCH64Instr_VecBinary(pickOp, LOONGARCH64RI_I(0, size, False), v_tmp, dst)); ++ HReg tmp = newVRegV(env); ++ addInstr(env, LOONGARCH64Instr_VecBinary(veplOp, src2, src1, tmp)); ++ addInstr(env, LOONGARCH64Instr_VecBinary(pickOp, LOONGARCH64RI_I(0, size, False), tmp, dst)); + } + + return dst; @@ -20354,16 +20748,6 @@ index 0000000..d60a2b3 + addInstr(env, LOONGARCH64Instr_Binary(op, src2, src1, dst)); + return dst; + } -+ case Iop_64HLtoV128: { -+ HReg dst = newVRegV(env); -+ HReg sHi = iselIntExpr_R(env, e->Iex.Binop.arg1); -+ HReg sLow = iselIntExpr_R(env, e->Iex.Binop.arg2); -+ addInstr(env, LOONGARCH64Instr_VecBinary(LAvecbin_VINSGR2VR_D, -+ LOONGARCH64RI_I(0, 1, False), sLow, dst)); -+ addInstr(env, LOONGARCH64Instr_VecBinary(LAvecbin_VINSGR2VR_D, -+ LOONGARCH64RI_I(1, 1, False), sHi, dst)); -+ return dst; -+ } + default: + goto irreducible; + } @@ -21799,8 +22183,8 @@ index 0000000..d60a2b3 + case Iop_ShrV128: op = LAvecbin_VBSRL_V; size = 5; break; + default: vassert(0); break; + } -+ HReg dst = newVRegV(env); -+ HReg src1 = iselV128Expr(env, e->Iex.Binop.arg1); ++ HReg dst = newVRegV(env); ++ HReg src1 = iselV128Expr(env, e->Iex.Binop.arg1); + LOONGARCH64RI* src2 = iselIntExpr_RI(env, e->Iex.Binop.arg2, size, False); + vassert(e->Iex.Binop.arg2->tag == Iex_Const); + vassert(e->Iex.Binop.arg2->Iex.Const.con->tag == Ico_U8); @@ -21818,7 +22202,8 @@ index 0000000..d60a2b3 + LOONGARCH64RI_I(1, 1, False), sHi, dst)); + return dst; + } -+ default: goto irreducible; ++ default: ++ goto irreducible; + } + } + @@ -21847,13 +22232,6 @@ index 0000000..d60a2b3 + LOONGARCH64RI_I(1, 1, False), hregZERO(), dst)); + return dst; + } -+ case Iop_NotV128: { -+ HReg dst = newVRegV(env); -+ HReg src = iselV128Expr(env, e->Iex.Unop.arg); -+ addInstr(env, LOONGARCH64Instr_VecBinary(LAvecbin_VNOR_V, -+ LOONGARCH64RI_R(src), src, dst)); -+ return dst; -+ } + case Iop_Abs8x16: case Iop_Abs16x8: + case Iop_Abs32x4: case Iop_Abs64x2: { + LOONGARCH64VecBinOp subOp, addOp; @@ -21885,6 +22263,43 @@ index 0000000..d60a2b3 + addInstr(env, LOONGARCH64Instr_VecBinary(addOp, LOONGARCH64RI_R(src), sub, dst)); + return dst; + } ++ case Iop_CmpNEZ16x8: case Iop_CmpNEZ8x16: ++ case Iop_CmpNEZ32x4: case Iop_CmpNEZ64x2: { ++ HReg dst = newVRegV(env); ++ HReg src = iselV128Expr(env, e->Iex.Unop.arg); ++ LOONGARCH64VecBinOp op; ++ switch (e->Iex.Unop.op) { ++ case Iop_CmpNEZ64x2: op = LAvecbin_VSEQ_D; break; ++ case Iop_CmpNEZ32x4: op = LAvecbin_VSEQ_W; break; ++ case Iop_CmpNEZ16x8: op = LAvecbin_VSEQ_H; break; ++ case Iop_CmpNEZ8x16: op = LAvecbin_VSEQ_B; break; ++ default: vassert(0); break; ++ } ++ addInstr(env, LOONGARCH64Instr_VecUnary(LAvecun_VREPLGR2VR_D, hregZERO(), dst)); ++ addInstr(env, LOONGARCH64Instr_VecBinary(op, LOONGARCH64RI_R(dst), src, dst)); ++ return dst; ++ } ++ case Iop_WidenHIto16Sx8: case Iop_WidenHIto16Ux8: ++ case Iop_WidenHIto32Sx4: case Iop_WidenHIto32Ux4: ++ case Iop_WidenHIto64Sx2: case Iop_WidenHIto64Ux2: ++ case Iop_WidenHIto128Sx1: case Iop_WidenHIto128Ux1: { ++ HReg dst = newVRegV(env); ++ HReg src = iselV128Expr(env, e->Iex.Unop.arg); ++ LOONGARCH64VecUnOp op; ++ switch (e->Iex.Unop.op) { ++ case Iop_WidenHIto16Sx8: op = LAvecun_VEXTH_H_B; break; ++ case Iop_WidenHIto16Ux8: op = LAvecun_VEXTH_HU_BU; break; ++ case Iop_WidenHIto32Sx4: op = LAvecun_VEXTH_W_H; break; ++ case Iop_WidenHIto32Ux4: op = LAvecun_VEXTH_WU_HU; break; ++ case Iop_WidenHIto64Sx2: op = LAvecun_VEXTH_D_W; break; ++ case Iop_WidenHIto64Ux2: op = LAvecun_VEXTH_DU_WU; break; ++ case Iop_WidenHIto128Sx1: op = LAvecun_VEXTH_Q_D; break; ++ case Iop_WidenHIto128Ux1: op = LAvecun_VEXTH_QU_DU; break; ++ default: vassert(0); break; ++ } ++ addInstr(env, LOONGARCH64Instr_VecUnary(op, src, dst)); ++ return dst; ++ } + case Iop_Dup8x16: case Iop_Dup16x8: case Iop_Dup32x4: { + HReg dst = newVRegV(env); + HReg src = iselIntExpr_R(env, e->Iex.Unop.arg); @@ -21898,8 +22313,35 @@ index 0000000..d60a2b3 + addInstr(env, LOONGARCH64Instr_VecUnary(op, src, dst)); + return dst; + } -+ case Iop_V256toV128_0: -+ case Iop_V256toV128_1: { ++ case Iop_NotV128: { ++ HReg dst = newVRegV(env); ++ HReg src = iselV128Expr(env, e->Iex.Unop.arg); ++ addInstr(env, LOONGARCH64Instr_VecBinary(LAvecbin_VNOR_V, ++ LOONGARCH64RI_R(src), src, dst)); ++ return dst; ++ } ++ case Iop_RoundF32x4_RM: case Iop_RoundF32x4_RN: ++ case Iop_RoundF32x4_RP: case Iop_RoundF32x4_RZ: ++ case Iop_RoundF64x2_RM: case Iop_RoundF64x2_RN: ++ case Iop_RoundF64x2_RP: case Iop_RoundF64x2_RZ: { ++ HReg dst = newVRegV(env); ++ HReg src = iselV128Expr(env, e->Iex.Unop.arg); ++ LOONGARCH64VecUnOp op; ++ switch (e->Iex.Unop.op) { ++ case Iop_RoundF32x4_RM: op = LAvecun_VFRINTRM_S; break; ++ case Iop_RoundF32x4_RN: op = LAvecun_VFRINTRNE_S; break; ++ case Iop_RoundF32x4_RP: op = LAvecun_VFRINTRP_S; break; ++ case Iop_RoundF32x4_RZ: op = LAvecun_VFRINTRZ_S; break; ++ case Iop_RoundF64x2_RM: op = LAvecun_VFRINTRM_D; break; ++ case Iop_RoundF64x2_RN: op = LAvecun_VFRINTRNE_D; break; ++ case Iop_RoundF64x2_RP: op = LAvecun_VFRINTRP_D; break; ++ case Iop_RoundF64x2_RZ: op = LAvecun_VFRINTRZ_D; break; ++ default: vassert(0); break; ++ } ++ addInstr(env, LOONGARCH64Instr_VecUnary(op, src, dst)); ++ return dst; ++ } ++ case Iop_V256toV128_0: case Iop_V256toV128_1: { + HReg vHi, vLo; + iselV256Expr(&vHi, &vLo, env, e->Iex.Unop.arg); + return (e->Iex.Unop.op == Iop_V256toV128_1) ? vHi : vLo; @@ -22875,7 +23317,7 @@ index 0000000..d60a2b3 +/*--- end host_loongarch64_isel.c ---*/ +/*---------------------------------------------------------------*/ diff --git a/VEX/priv/ir_defs.c b/VEX/priv/ir_defs.c -index 31710eb..d6b245f 100644 +index 9e7fbf920ef4..05e8a79213cb 100644 --- a/VEX/priv/ir_defs.c +++ b/VEX/priv/ir_defs.c @@ -280,6 +280,8 @@ void ppIROp ( IROp op ) @@ -22911,7 +23353,34 @@ index 31710eb..d6b245f 100644 case Iop_F16toF64: vex_printf("F16toF64"); return; case Iop_F64toF16: vex_printf("F64toF16"); return; -@@ -1307,16 +1317,20 @@ void ppIROp ( IROp op ) +@@ -774,6 +784,11 @@ void ppIROp ( IROp op ) + case Iop_F32x4_2toQ16x8: vex_printf("F32x4_2toQ16x8"); return; + case Iop_F64x2_2toQ32x4: vex_printf("F64x2_2toQ32x4"); return; + ++ case Iop_RoundF64x2_RM: vex_printf("RoundF64x2_RM"); return; ++ case Iop_RoundF64x2_RP: vex_printf("RoundF64x2_RP"); return; ++ case Iop_RoundF64x2_RN: vex_printf("RoundF64x2_RN"); return; ++ case Iop_RoundF64x2_RZ: vex_printf("RoundF64x2_RZ"); return; ++ + case Iop_V128to64: vex_printf("V128to64"); return; + case Iop_V128HIto64: vex_printf("V128HIto64"); return; + case Iop_64HLtoV128: vex_printf("64HLtoV128"); return; +@@ -1108,6 +1123,14 @@ void ppIROp ( IROp op ) + case Iop_Widen8Sto16x8: vex_printf("Widen8Sto16x8"); return; + case Iop_Widen16Sto32x4: vex_printf("Widen16Sto32x4"); return; + case Iop_Widen32Sto64x2: vex_printf("Widen32Sto64x2"); return; ++ case Iop_WidenHIto16Sx8: vex_printf("WidenHIto16Sx8"); return; ++ case Iop_WidenHIto32Sx4: vex_printf("WidenHIto32Sx4"); return; ++ case Iop_WidenHIto64Sx2: vex_printf("WidenHIto128Sx1"); return; ++ case Iop_WidenHIto128Sx1: vex_printf("WidenHIto64Sx2"); return; ++ case Iop_WidenHIto16Ux8: vex_printf("WidenHIto16Ux8"); return; ++ case Iop_WidenHIto32Ux4: vex_printf("WidenHIto32Ux4"); return; ++ case Iop_WidenHIto64Ux2: vex_printf("WidenHIto64Ux2"); return; ++ case Iop_WidenHIto128Ux1: vex_printf("WidenHIto128Ux1"); return; + + case Iop_InterleaveHI8x16: vex_printf("InterleaveHI8x16"); return; + case Iop_InterleaveHI16x8: vex_printf("InterleaveHI16x8"); return; +@@ -1311,16 +1334,20 @@ void ppIROp ( IROp op ) case Iop_Max8Sx32: vex_printf("Max8Sx32"); return; case Iop_Max16Sx16: vex_printf("Max16Sx16"); return; case Iop_Max32Sx8: vex_printf("Max32Sx8"); return; @@ -22932,7 +23401,7 @@ index 31710eb..d6b245f 100644 case Iop_CmpEQ8x32: vex_printf("CmpEQ8x32"); return; case Iop_CmpEQ16x16: vex_printf("CmpEQ16x16"); return; -@@ -1434,10 +1448,13 @@ Bool primopMightTrap ( IROp op ) +@@ -1438,10 +1465,13 @@ Bool primopMightTrap ( IROp op ) case Iop_1Uto8: case Iop_1Uto32: case Iop_1Uto64: case Iop_1Sto8: case Iop_1Sto16: case Iop_1Sto32: case Iop_1Sto64: case Iop_AddF64: case Iop_SubF64: case Iop_MulF64: case Iop_DivF64: @@ -22946,7 +23415,7 @@ index 31710eb..d6b245f 100644 case Iop_NegF16: case Iop_AbsF16: case Iop_SqrtF16: case Iop_SubF16: case Iop_AddF16: case Iop_CmpF64: case Iop_CmpF32: case Iop_CmpF16: case Iop_CmpF128: -@@ -1477,8 +1494,11 @@ Bool primopMightTrap ( IROp op ) +@@ -1483,8 +1513,11 @@ Bool primopMightTrap ( IROp op ) case Iop_RSqrtEst5GoodF64: case Iop_RoundF64toF64_NEAREST: case Iop_RoundF64toF64_NegINF: case Iop_RoundF64toF64_PosINF: case Iop_RoundF64toF64_ZERO: case Iop_TruncF64asF32: case Iop_RoundF64toF32: @@ -22960,7 +23429,27 @@ index 31710eb..d6b245f 100644 case Iop_F16toF64: case Iop_F64toF16: case Iop_F16toF32: case Iop_F32toF16: case Iop_QAdd32S: case Iop_QSub32S: case Iop_Add16x2: case Iop_Sub16x2: -@@ -1786,10 +1806,10 @@ Bool primopMightTrap ( IROp op ) +@@ -1631,6 +1664,8 @@ Bool primopMightTrap ( IROp op ) + case Iop_Sqrt64Fx2: case Iop_Scale2_64Fx2: case Iop_Log2_64Fx2: + case Iop_RecipEst64Fx2: case Iop_RecipStep64Fx2: case Iop_RSqrtEst64Fx2: + case Iop_RSqrtStep64Fx2: case Iop_F64x2_2toQ32x4: ++ case Iop_RoundF64x2_RM: case Iop_RoundF64x2_RP: ++ case Iop_RoundF64x2_RN: case Iop_RoundF64x2_RZ: + case Iop_Add64F0x2: case Iop_Sub64F0x2: case Iop_Mul64F0x2: + case Iop_Div64F0x2: case Iop_Max64F0x2: case Iop_Min64F0x2: + case Iop_CmpEQ64F0x2: case Iop_CmpLT64F0x2: case Iop_CmpLE64F0x2: +@@ -1751,6 +1786,10 @@ Bool primopMightTrap ( IROp op ) + case Iop_QNarrowUn64Uto32Ux2: + case Iop_Widen8Uto16x8: case Iop_Widen16Uto32x4: case Iop_Widen32Uto64x2: + case Iop_Widen8Sto16x8: case Iop_Widen16Sto32x4: case Iop_Widen32Sto64x2: ++ case Iop_WidenHIto16Sx8: case Iop_WidenHIto32Sx4: ++ case Iop_WidenHIto64Sx2: case Iop_WidenHIto128Sx1: ++ case Iop_WidenHIto16Ux8: case Iop_WidenHIto32Ux4: ++ case Iop_WidenHIto64Ux2: case Iop_WidenHIto128Ux1: + case Iop_InterleaveHI8x16: case Iop_InterleaveHI16x8: + case Iop_InterleaveHI32x4: case Iop_InterleaveHI64x2: + case Iop_InterleaveLO8x16: case Iop_InterleaveLO16x8: +@@ -1792,10 +1831,10 @@ Bool primopMightTrap ( IROp op ) case Iop_ShlN16x16: case Iop_ShlN32x8: case Iop_ShlN64x4: case Iop_ShrN16x16: case Iop_ShrN32x8: case Iop_ShrN64x4: case Iop_SarN16x16: case Iop_SarN32x8: @@ -22975,7 +23464,7 @@ index 31710eb..d6b245f 100644 case Iop_Mul16x16: case Iop_Mul32x8: case Iop_MulHi16Ux16: case Iop_MulHi16Sx16: case Iop_QAdd8Ux32: case Iop_QAdd16Ux16: -@@ -2075,6 +2095,7 @@ void ppIRJumpKind ( IRJumpKind kind ) +@@ -2081,6 +2120,7 @@ void ppIRJumpKind ( IRJumpKind kind ) case Ijk_SigFPE: vex_printf("SigFPE"); break; case Ijk_SigFPE_IntDiv: vex_printf("SigFPE_IntDiv"); break; case Ijk_SigFPE_IntOvf: vex_printf("SigFPE_IntOvf"); break; @@ -22983,7 +23472,7 @@ index 31710eb..d6b245f 100644 case Ijk_Sys_syscall: vex_printf("Sys_syscall"); break; case Ijk_Sys_int32: vex_printf("Sys_int32"); break; case Ijk_Sys_int128: vex_printf("Sys_int128"); break; -@@ -2094,6 +2115,8 @@ void ppIRMBusEvent ( IRMBusEvent event ) +@@ -2101,6 +2141,8 @@ void ppIRMBusEvent ( IRMBusEvent event ) vex_printf("Fence"); break; case Imbe_CancelReservation: vex_printf("CancelReservation"); break; @@ -22992,7 +23481,7 @@ index 31710eb..d6b245f 100644 default: vpanic("ppIRMBusEvent"); } -@@ -3372,12 +3395,14 @@ void typeOfPrimop ( IROp op, +@@ -3379,12 +3421,14 @@ void typeOfPrimop ( IROp op, case Iop_AddF64: case Iop_SubF64: case Iop_MulF64: case Iop_DivF64: @@ -23007,7 +23496,7 @@ index 31710eb..d6b245f 100644 TERNARY(ity_RMode,Ity_F32,Ity_F32, Ity_F32); case Iop_AddF16: -@@ -3394,10 +3419,14 @@ void typeOfPrimop ( IROp op, +@@ -3401,10 +3445,14 @@ void typeOfPrimop ( IROp op, UNARY(Ity_F16, Ity_F16); case Iop_SqrtF64: @@ -23022,7 +23511,7 @@ index 31710eb..d6b245f 100644 case Iop_RoundF32toInt: case Iop_RecpExpF32: BINARY(ity_RMode,Ity_F32, Ity_F32); -@@ -3406,9 +3435,11 @@ void typeOfPrimop ( IROp op, +@@ -3417,9 +3465,11 @@ void typeOfPrimop ( IROp op, BINARY(ity_RMode, Ity_F16, Ity_F16); case Iop_MaxNumF64: case Iop_MinNumF64: @@ -23034,7 +23523,35 @@ index 31710eb..d6b245f 100644 BINARY(Ity_F32,Ity_F32, Ity_F32); case Iop_CmpF16: -@@ -4098,10 +4129,10 @@ void typeOfPrimop ( IROp op, +@@ -3519,6 +3569,10 @@ void typeOfPrimop ( IROp op, + case Iop_Abs64Fx2: case Iop_Abs32Fx4: case Iop_Abs16Fx8: + case Iop_RSqrtEst32Fx4: + case Iop_RSqrtEst32Ux4: ++ case Iop_RoundF64x2_RM: ++ case Iop_RoundF64x2_RP: ++ case Iop_RoundF64x2_RN: ++ case Iop_RoundF64x2_RZ: + UNARY(Ity_V128, Ity_V128); + + case Iop_Sqrt64Fx2: +@@ -3567,6 +3621,16 @@ void typeOfPrimop ( IROp op, + case Iop_F16toF32x4: + UNARY(Ity_I64, Ity_V128); + ++ case Iop_WidenHIto16Sx8: ++ case Iop_WidenHIto32Sx4: ++ case Iop_WidenHIto64Sx2: ++ case Iop_WidenHIto128Sx1: ++ case Iop_WidenHIto16Ux8: ++ case Iop_WidenHIto32Ux4: ++ case Iop_WidenHIto64Ux2: ++ case Iop_WidenHIto128Ux1: ++ UNARY(Ity_V128, Ity_V128); ++ + case Iop_V128to32: UNARY(Ity_V128, Ity_I32); + case Iop_32UtoV128: UNARY(Ity_I32, Ity_V128); + case Iop_64UtoV128: UNARY(Ity_I64, Ity_V128); +@@ -4112,10 +4176,10 @@ void typeOfPrimop ( IROp op, case Iop_Mul16x16: case Iop_Mul32x8: case Iop_MulHi16Ux16: case Iop_MulHi16Sx16: case Iop_Avg8Ux32: case Iop_Avg16Ux16: @@ -23049,7 +23566,7 @@ index 31710eb..d6b245f 100644 case Iop_CmpEQ8x32: case Iop_CmpEQ16x16: case Iop_CmpEQ32x8: case Iop_CmpEQ64x4: case Iop_CmpGT8Sx32: case Iop_CmpGT16Sx16: -@@ -5245,7 +5276,9 @@ void tcStmt ( const IRSB* bb, const IRStmt* stmt, IRType gWordTy ) +@@ -5259,7 +5323,9 @@ void tcStmt ( const IRSB* bb, const IRStmt* stmt, IRType gWordTy ) break; case Ist_MBE: switch (stmt->Ist.MBE.event) { @@ -23061,35 +23578,35 @@ index 31710eb..d6b245f 100644 default: sanityCheckFail(bb,stmt,"IRStmt.MBE.event: unknown"); break; diff --git a/VEX/priv/main_main.c b/VEX/priv/main_main.c -index 482047c..98d4a81 100644 +index 0520fd7470e0..858f197208d9 100644 --- a/VEX/priv/main_main.c +++ b/VEX/priv/main_main.c -@@ -43,6 +43,7 @@ - #include "libvex_guest_s390x.h" +@@ -44,6 +44,7 @@ #include "libvex_guest_mips32.h" #include "libvex_guest_mips64.h" + #include "libvex_guest_riscv64.h" +#include "libvex_guest_loongarch64.h" #include "main_globals.h" #include "main_util.h" -@@ -57,6 +58,7 @@ - #include "host_s390_defs.h" +@@ -59,6 +60,7 @@ #include "host_mips_defs.h" #include "host_nanomips_defs.h" + #include "host_riscv64_defs.h" +#include "host_loongarch64_defs.h" #include "guest_generic_bb_to_IR.h" #include "guest_x86_defs.h" -@@ -67,6 +69,7 @@ - #include "guest_s390_defs.h" +@@ -70,6 +72,7 @@ #include "guest_mips_defs.h" #include "guest_nanomips_defs.h" + #include "guest_riscv64_defs.h" +#include "guest_loongarch64_defs.h" #include "host_generic_simd128.h" -@@ -163,6 +166,14 @@ - #define NANOMIPSST(f) vassert(0) +@@ -174,6 +177,14 @@ + #define RISCV64ST(f) vassert(0) #endif +#if defined(VGA_loongarch64) || defined(VEXMULTIARCH) @@ -23103,8 +23620,8 @@ index 482047c..98d4a81 100644 /* This file contains the top level interface to the library. */ /* --------- fwds ... --------- */ -@@ -541,6 +552,23 @@ IRSB* LibVEX_FrontEnd ( /*MOD*/ VexTranslateArgs* vta, - vassert(sizeof( ((VexGuestMIPS32State*)0)->guest_NRADDR ) == 4); +@@ -569,6 +580,23 @@ IRSB* LibVEX_FrontEnd ( /*MOD*/ VexTranslateArgs* vta, + vassert(sizeof( ((VexGuestRISCV64State*)0)->guest_NRADDR ) == 8); break; + case VexArchLOONGARCH64: @@ -23127,8 +23644,8 @@ index 482047c..98d4a81 100644 default: vpanic("LibVEX_Translate: unsupported guest insn set"); } -@@ -878,6 +906,14 @@ static void libvex_BackEnd ( const VexTranslateArgs *vta, - offB_HOST_EvC_FAILADDR = offsetof(VexGuestMIPS32State,host_EvC_FAILADDR); +@@ -914,6 +942,14 @@ static void libvex_BackEnd ( const VexTranslateArgs *vta, + offB_HOST_EvC_FAILADDR = offsetof(VexGuestRISCV64State,host_EvC_FAILADDR); break; + case VexArchLOONGARCH64: @@ -23142,8 +23659,8 @@ index 482047c..98d4a81 100644 default: vpanic("LibVEX_Codegen: unsupported guest insn set"); } -@@ -1052,6 +1088,23 @@ static void libvex_BackEnd ( const VexTranslateArgs *vta, - || vta->archinfo_host.endness == VexEndnessBE); +@@ -1104,6 +1140,23 @@ static void libvex_BackEnd ( const VexTranslateArgs *vta, + vassert(vta->archinfo_host.endness == VexEndnessLE); break; + case VexArchLOONGARCH64: @@ -23166,10 +23683,10 @@ index 482047c..98d4a81 100644 default: vpanic("LibVEX_Translate: unsupported host insn set"); } -@@ -1297,6 +1350,11 @@ VexInvalRange LibVEX_Chain ( VexArch arch_host, - place_to_chain, - disp_cp_chain_me_EXPECTED, - place_to_jump_to)); +@@ -1354,6 +1407,11 @@ VexInvalRange LibVEX_Chain ( VexArch arch_host, + place_to_chain, + disp_cp_chain_me_EXPECTED, + place_to_jump_to)); + case VexArchLOONGARCH64: + LOONGARCH64ST(return chainXDirect_LOONGARCH64(endness_host, + place_to_chain, @@ -23178,7 +23695,7 @@ index 482047c..98d4a81 100644 default: vassert(0); } -@@ -1359,6 +1417,11 @@ VexInvalRange LibVEX_UnChain ( VexArch arch_host, +@@ -1421,6 +1479,11 @@ VexInvalRange LibVEX_UnChain ( VexArch arch_host, place_to_unchain, place_to_jump_to_EXPECTED, disp_cp_chain_me)); @@ -23190,19 +23707,19 @@ index 482047c..98d4a81 100644 default: vassert(0); } -@@ -1389,6 +1452,8 @@ Int LibVEX_evCheckSzB ( VexArch arch_host ) - MIPS64ST(cached = evCheckSzB_MIPS()); break; - case VexArchNANOMIPS: +@@ -1453,6 +1516,8 @@ Int LibVEX_evCheckSzB ( VexArch arch_host ) NANOMIPSST(cached = evCheckSzB_NANOMIPS()); break; + case VexArchRISCV64: + RISCV64ST(cached = evCheckSzB_RISCV64()); break; + case VexArchLOONGARCH64: + LOONGARCH64ST(cached = evCheckSzB_LOONGARCH64()); break; default: vassert(0); } -@@ -1432,6 +1497,10 @@ VexInvalRange LibVEX_PatchProfInc ( VexArch arch_host, - case VexArchNANOMIPS: - NANOMIPSST(return patchProfInc_NANOMIPS(endness_host, place_to_patch, - location_of_counter)); +@@ -1499,6 +1564,10 @@ VexInvalRange LibVEX_PatchProfInc ( VexArch arch_host, + case VexArchRISCV64: + RISCV64ST(return patchProfInc_RISCV64(endness_host, place_to_patch, + location_of_counter)); + case VexArchLOONGARCH64: + LOONGARCH64ST(return patchProfInc_LOONGARCH64(endness_host, + place_to_patch, @@ -23210,24 +23727,50 @@ index 482047c..98d4a81 100644 default: vassert(0); } -@@ -1515,6 +1584,7 @@ const HChar* LibVEX_ppVexArch ( VexArch arch ) - case VexArchMIPS32: return "MIPS32"; - case VexArchMIPS64: return "MIPS64"; - case VexArchNANOMIPS: return "NANOMIPS"; +@@ -1606,19 +1675,20 @@ const HChar* LibVEX_EmNote_string ( VexEmNote ew ) + const HChar* LibVEX_ppVexArch ( VexArch arch ) + { + switch (arch) { +- case VexArch_INVALID: return "INVALID"; +- case VexArchX86: return "X86"; +- case VexArchAMD64: return "AMD64"; +- case VexArchARM: return "ARM"; +- case VexArchARM64: return "ARM64"; +- case VexArchPPC32: return "PPC32"; +- case VexArchPPC64: return "PPC64"; +- case VexArchS390X: return "S390X"; +- case VexArchMIPS32: return "MIPS32"; +- case VexArchMIPS64: return "MIPS64"; +- case VexArchNANOMIPS: return "NANOMIPS"; +- case VexArchRISCV64: return "RISCV64"; +- default: return "VexArch???"; ++ case VexArch_INVALID: return "INVALID"; ++ case VexArchX86: return "X86"; ++ case VexArchAMD64: return "AMD64"; ++ case VexArchARM: return "ARM"; ++ case VexArchARM64: return "ARM64"; ++ case VexArchPPC32: return "PPC32"; ++ case VexArchPPC64: return "PPC64"; ++ case VexArchS390X: return "S390X"; ++ case VexArchMIPS32: return "MIPS32"; ++ case VexArchMIPS64: return "MIPS64"; ++ case VexArchNANOMIPS: return "NANOMIPS"; ++ case VexArchRISCV64: return "RISCV64"; + case VexArchLOONGARCH64: return "LOONGARCH64"; - default: return "VexArch???"; ++ default: return "VexArch???"; } } -@@ -1585,6 +1655,7 @@ static IRType arch_word_size (VexArch arch) { - case VexArchMIPS64: + +@@ -1690,6 +1760,7 @@ static IRType arch_word_size (VexArch arch) { case VexArchPPC64: case VexArchS390X: + case VexArchRISCV64: + case VexArchLOONGARCH64: return Ity_I64; default: -@@ -1925,6 +1996,38 @@ static const HChar* show_hwcaps_mips64 ( UInt hwcaps ) - return "Unsupported baseline"; +@@ -2045,6 +2116,38 @@ static const HChar* show_hwcaps_riscv64 ( UInt hwcaps ) + return "riscv64"; } +static const HChar* show_hwcaps_loongarch64 ( UInt hwcaps ) @@ -23265,17 +23808,39 @@ index 482047c..98d4a81 100644 #undef NUM_HWCAPS /* Thie function must not return NULL. */ -@@ -1941,6 +2044,7 @@ static const HChar* show_hwcaps ( VexArch arch, UInt hwcaps ) - case VexArchS390X: return show_hwcaps_s390x(hwcaps); - case VexArchMIPS32: return show_hwcaps_mips32(hwcaps); - case VexArchMIPS64: return show_hwcaps_mips64(hwcaps); +@@ -2052,17 +2155,18 @@ static const HChar* show_hwcaps_riscv64 ( UInt hwcaps ) + static const HChar* show_hwcaps ( VexArch arch, UInt hwcaps ) + { + switch (arch) { +- case VexArchX86: return show_hwcaps_x86(hwcaps); +- case VexArchAMD64: return show_hwcaps_amd64(hwcaps); +- case VexArchPPC32: return show_hwcaps_ppc32(hwcaps); +- case VexArchPPC64: return show_hwcaps_ppc64(hwcaps); +- case VexArchARM: return show_hwcaps_arm(hwcaps); +- case VexArchARM64: return show_hwcaps_arm64(hwcaps); +- case VexArchS390X: return show_hwcaps_s390x(hwcaps); +- case VexArchMIPS32: return show_hwcaps_mips32(hwcaps); +- case VexArchMIPS64: return show_hwcaps_mips64(hwcaps); +- case VexArchRISCV64: return show_hwcaps_riscv64(hwcaps); +- default: return NULL; ++ case VexArchX86: return show_hwcaps_x86(hwcaps); ++ case VexArchAMD64: return show_hwcaps_amd64(hwcaps); ++ case VexArchPPC32: return show_hwcaps_ppc32(hwcaps); ++ case VexArchPPC64: return show_hwcaps_ppc64(hwcaps); ++ case VexArchARM: return show_hwcaps_arm(hwcaps); ++ case VexArchARM64: return show_hwcaps_arm64(hwcaps); ++ case VexArchS390X: return show_hwcaps_s390x(hwcaps); ++ case VexArchMIPS32: return show_hwcaps_mips32(hwcaps); ++ case VexArchMIPS64: return show_hwcaps_mips64(hwcaps); ++ case VexArchRISCV64: return show_hwcaps_riscv64(hwcaps); + case VexArchLOONGARCH64: return show_hwcaps_loongarch64(hwcaps); - default: return NULL; ++ default: return NULL; } } -@@ -2203,6 +2307,11 @@ static void check_hwcaps ( VexArch arch, UInt hwcaps ) + +@@ -2329,6 +2433,11 @@ static void check_hwcaps ( VexArch arch, UInt hwcaps ) return; - invalid_hwcaps(arch, hwcaps, "Unsupported baseline\n"); + invalid_hwcaps(arch, hwcaps, "Cannot handle capabilities\n"); + case VexArchLOONGARCH64: + if (!(hwcaps & VEX_HWCAPS_LOONGARCH_ISA_64BIT)) @@ -23286,18 +23851,18 @@ index 482047c..98d4a81 100644 vpanic("unknown architecture"); } diff --git a/VEX/pub/libvex.h b/VEX/pub/libvex.h -index 27bb6e0..5ed24bd 100644 +index 2dbfbe770e2b..53d7ebdfebff 100644 --- a/VEX/pub/libvex.h +++ b/VEX/pub/libvex.h -@@ -60,6 +60,7 @@ typedef - VexArchMIPS32, +@@ -61,6 +61,7 @@ typedef VexArchMIPS64, VexArchNANOMIPS, + VexArchRISCV64, + VexArchLOONGARCH64, } VexArch; -@@ -300,6 +301,22 @@ typedef +@@ -319,6 +320,22 @@ typedef (VEX_MIPS_PROC_ID(x) == VEX_PRID_IMP_P5600) && \ (VEX_MIPS_HOST_FP_MODE(x))) @@ -23320,7 +23885,7 @@ index 27bb6e0..5ed24bd 100644 /* These return statically allocated strings. */ extern const HChar* LibVEX_ppVexArch ( VexArch ); -@@ -420,6 +437,7 @@ void LibVEX_default_VexArchInfo ( /*OUT*/VexArchInfo* vai ); +@@ -440,6 +457,7 @@ void LibVEX_default_VexArchInfo ( /*OUT*/VexArchInfo* vai ); guest is mips32 ==> applicable, default True guest is mips64 ==> applicable, default True guest is arm64 ==> applicable, default False @@ -23328,9 +23893,9 @@ index 27bb6e0..5ed24bd 100644 host_ppc_calls_use_fndescrs: host is ppc32-linux ==> False -@@ -1026,6 +1044,10 @@ extern void LibVEX_InitIRI ( const IRICB * ); - ~~~~~ - r21 is GSP. +@@ -1056,6 +1074,10 @@ extern void LibVEX_InitIRI ( const IRICB * ); + read/write values in the guest state (primary + 2x shadow state + areas) and most of the spill area. + loongarch64 + ~~~~~ @@ -23340,11 +23905,11 @@ index 27bb6e0..5ed24bd 100644 ~~~~~~~~~~~~~~~~~~~~~~~ The guest state must contain two pseudo-registers, guest_CMSTART diff --git a/VEX/pub/libvex_basictypes.h b/VEX/pub/libvex_basictypes.h -index e3f1485..b4c81bf 100644 +index 6c48b227c037..522b75aca6c2 100644 --- a/VEX/pub/libvex_basictypes.h +++ b/VEX/pub/libvex_basictypes.h -@@ -198,6 +198,10 @@ typedef unsigned long HWord; - # define VEX_HOST_WORDSIZE 4 +@@ -201,6 +201,10 @@ typedef unsigned long HWord; + # define VEX_HOST_WORDSIZE 8 # define VEX_REGPARM(_n) /* */ +#elif defined(__loongarch__) && (__loongarch_grlen == 64) @@ -23356,10 +23921,10 @@ index e3f1485..b4c81bf 100644 #endif diff --git a/VEX/pub/libvex_guest_loongarch64.h b/VEX/pub/libvex_guest_loongarch64.h new file mode 100644 -index 0000000..fde111f +index 000000000000..a1ef044f27d0 --- /dev/null +++ b/VEX/pub/libvex_guest_loongarch64.h -@@ -0,0 +1,172 @@ +@@ -0,0 +1,173 @@ + +/*---------------------------------------------------------------*/ +/*--- begin libvex_guest_loongarch64.h ---*/ @@ -23471,12 +24036,13 @@ index 0000000..fde111f + replace-style ones. */ + /* 312 */ ULong guest_NRADDR; + -+ /* Fallback LL/SC support. */ -+ /* 320 */ ULong guest_LLSC_SIZE; /* 0==no transaction, else 4 or 8. */ -+ /* 328 */ ULong guest_LLSC_ADDR; /* Address of the transaction. */ -+ /* 336 */ ULong guest_LLSC_DATA; /* Original value at ADDR. */ ++ /* Needed for Darwin (but mandated for all guest architectures) */ ++ /* 320 */ ULong guest_IP_AT_SYSCALL; + -+ /* 344 */ ULong _padding1; ++ /* Fallback LL/SC support. */ ++ /* 328 */ ULong guest_LLSC_SIZE; /* 0==no transaction, else 4 or 8. */ ++ /* 336 */ ULong guest_LLSC_ADDR; /* Address of the transaction. */ ++ /* 344 */ ULong guest_LLSC_DATA; /* Original value at ADDR. */ + + /* FPU/SIMD Registers */ + /* 352 */ U256 guest_X0; @@ -23532,49 +24098,8 @@ index 0000000..fde111f +/*---------------------------------------------------------------*/ +/*--- libvex_guest_loongarch64.h ---*/ +/*---------------------------------------------------------------*/ -diff --git a/VEX/pub/libvex_guest_offsets.h b/VEX/pub/libvex_guest_offsets.h -index a456b6d..9faa0ce 100644 ---- a/VEX/pub/libvex_guest_offsets.h -+++ b/VEX/pub/libvex_guest_offsets.h -@@ -162,3 +162,36 @@ - #define OFFSET_mips64_PC 272 - #define OFFSET_mips64_HI 280 - #define OFFSET_mips64_LO 288 -+#define OFFSET_loongarch64_R0 16 -+#define OFFSET_loongarch64_R1 24 -+#define OFFSET_loongarch64_R2 32 -+#define OFFSET_loongarch64_R3 40 -+#define OFFSET_loongarch64_R4 48 -+#define OFFSET_loongarch64_R5 56 -+#define OFFSET_loongarch64_R6 64 -+#define OFFSET_loongarch64_R7 72 -+#define OFFSET_loongarch64_R8 80 -+#define OFFSET_loongarch64_R9 88 -+#define OFFSET_loongarch64_R10 96 -+#define OFFSET_loongarch64_R11 104 -+#define OFFSET_loongarch64_R12 112 -+#define OFFSET_loongarch64_R13 120 -+#define OFFSET_loongarch64_R14 128 -+#define OFFSET_loongarch64_R15 136 -+#define OFFSET_loongarch64_R16 144 -+#define OFFSET_loongarch64_R17 152 -+#define OFFSET_loongarch64_R18 160 -+#define OFFSET_loongarch64_R19 168 -+#define OFFSET_loongarch64_R20 176 -+#define OFFSET_loongarch64_R21 184 -+#define OFFSET_loongarch64_R22 192 -+#define OFFSET_loongarch64_R23 200 -+#define OFFSET_loongarch64_R24 208 -+#define OFFSET_loongarch64_R25 216 -+#define OFFSET_loongarch64_R26 224 -+#define OFFSET_loongarch64_R27 232 -+#define OFFSET_loongarch64_R28 240 -+#define OFFSET_loongarch64_R29 248 -+#define OFFSET_loongarch64_R30 256 -+#define OFFSET_loongarch64_R31 264 -+#define OFFSET_loongarch64_PC 272 diff --git a/VEX/pub/libvex_ir.h b/VEX/pub/libvex_ir.h -index 85805bb..c8b2e8f 100644 +index 80ef8f27a47e..f5a118a6e2a2 100644 --- a/VEX/pub/libvex_ir.h +++ b/VEX/pub/libvex_ir.h @@ -588,10 +588,10 @@ typedef @@ -23603,7 +24128,7 @@ index 85805bb..c8b2e8f 100644 /* :: IRRoundingMode(I32) x F16 -> F16 */ Iop_SqrtF16, -@@ -829,10 +829,14 @@ typedef +@@ -834,10 +834,14 @@ typedef /* --------- Possibly required by IEEE 754-2008. --------- */ @@ -23622,7 +24147,28 @@ index 85805bb..c8b2e8f 100644 /* ------------------ 16-bit scalar FP ------------------ */ -@@ -2006,10 +2010,10 @@ typedef +@@ -1533,6 +1537,10 @@ typedef + IRRoundingMode(I32) x (F64x2 | F64x2) -> Q32x4 */ + Iop_F64x2_2toQ32x4, + ++ /* --- Int to/from FP conversion --- */ ++ Iop_RoundF64x2_RM, Iop_RoundF64x2_RP, /* round to fp integer */ ++ Iop_RoundF64x2_RN, Iop_RoundF64x2_RZ, /* round to fp integer */ ++ + /* --- 64x2 lowest-lane-only scalar FP --- */ + + /* In binary cases, upper half is copied from first operand. In +@@ -1878,6 +1886,9 @@ typedef + Iop_Widen8Uto16x8, Iop_Widen16Uto32x4, Iop_Widen32Uto64x2, + Iop_Widen8Sto16x8, Iop_Widen16Sto32x4, Iop_Widen32Sto64x2, + ++ Iop_WidenHIto16Sx8, Iop_WidenHIto32Sx4, Iop_WidenHIto64Sx2, Iop_WidenHIto128Sx1, ++ Iop_WidenHIto16Ux8, Iop_WidenHIto32Ux4, Iop_WidenHIto64Ux2, Iop_WidenHIto128Ux1, ++ + /* INTERLEAVING */ + /* Interleave lanes from low or high halves of + operands. Most-significant result lane is from the left +@@ -2011,10 +2022,10 @@ typedef Iop_ShrN16x16, Iop_ShrN32x8, Iop_ShrN64x4, Iop_SarN16x16, Iop_SarN32x8, @@ -23637,7 +24183,7 @@ index 85805bb..c8b2e8f 100644 Iop_Mul16x16, Iop_Mul32x8, Iop_MulHi16Ux16, Iop_MulHi16Sx16, -@@ -2503,6 +2507,7 @@ typedef +@@ -2514,6 +2525,7 @@ typedef Ijk_SigFPE, /* current instruction synths generic SIGFPE */ Ijk_SigFPE_IntDiv, /* current instruction synths SIGFPE - IntDiv */ Ijk_SigFPE_IntOvf, /* current instruction synths SIGFPE - IntOvf */ @@ -23645,7 +24191,7 @@ index 85805bb..c8b2e8f 100644 /* Unfortunately, various guest-dependent syscall kinds. They all mean: do a syscall before continuing. */ Ijk_Sys_syscall, /* amd64/x86 'syscall', ppc 'sc', arm 'svc #0' */ -@@ -2662,7 +2667,12 @@ typedef +@@ -2674,7 +2686,12 @@ typedef /* Needed only on ARM. It cancels a reservation made by a preceding Linked-Load, and needs to be handed through to the back end, just as LL and SC themselves are. */ @@ -23660,7 +24206,7 @@ index 85805bb..c8b2e8f 100644 IRMBusEvent; diff --git a/VEX/pub/libvex_trc_values.h b/VEX/pub/libvex_trc_values.h -index cfd54de..90e2b60 100644 +index c9adcb70d776..987d5cc508d7 100644 --- a/VEX/pub/libvex_trc_values.h +++ b/VEX/pub/libvex_trc_values.h @@ -57,6 +57,7 @@ @@ -23671,96 +24217,13 @@ index cfd54de..90e2b60 100644 #define VEX_TRC_JMP_SIGFPE_INTDIV 97 /* deliver SIGFPE (integer divide by zero) before continuing */ -diff --git a/auxprogs/Makefile.in b/auxprogs/Makefile.in -index cabc2bf..d9481c3 100644 ---- a/auxprogs/Makefile.in -+++ b/auxprogs/Makefile.in -@@ -613,6 +613,12 @@ AM_CFLAGS_PSO_MIPS64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ - $(AM_CFLAGS_PSO_BASE) - - AM_CCASFLAGS_MIPS64_LINUX = @FLAG_M64@ -g -+AM_FLAG_M3264_LOONGARCH64_LINUX = @FLAG_M64@ -+AM_CFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) -+AM_CFLAGS_PSO_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ -+ $(AM_CFLAGS_PSO_BASE) -+ -+AM_CCASFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ -g - AM_FLAG_M3264_X86_SOLARIS = @FLAG_M32@ - AM_CFLAGS_X86_SOLARIS = @FLAG_M32@ @PREFERRED_STACK_BOUNDARY_2@ \ - $(AM_CFLAGS_BASE) -fomit-frame-pointer @SOLARIS_UNDEF_LARGESOURCE@ -@@ -660,6 +666,7 @@ PRELOAD_LDFLAGS_S390X_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ - PRELOAD_LDFLAGS_MIPS32_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ - PRELOAD_LDFLAGS_NANOMIPS_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ - PRELOAD_LDFLAGS_MIPS64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ -+PRELOAD_LDFLAGS_LOONGARCH64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ - PRELOAD_LDFLAGS_X86_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M32@ - PRELOAD_LDFLAGS_AMD64_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M64@ - dist_noinst_SCRIPTS = \ -diff --git a/cachegrind/Makefile.in b/cachegrind/Makefile.in -index 1363cc6..3fc4a88 100644 ---- a/cachegrind/Makefile.in -+++ b/cachegrind/Makefile.in -@@ -661,6 +661,12 @@ AM_CFLAGS_PSO_MIPS64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ - $(AM_CFLAGS_PSO_BASE) - - AM_CCASFLAGS_MIPS64_LINUX = @FLAG_M64@ -g -+AM_FLAG_M3264_LOONGARCH64_LINUX = @FLAG_M64@ -+AM_CFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) -+AM_CFLAGS_PSO_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ -+ $(AM_CFLAGS_PSO_BASE) -+ -+AM_CCASFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ -g - AM_FLAG_M3264_X86_SOLARIS = @FLAG_M32@ - AM_CFLAGS_X86_SOLARIS = @FLAG_M32@ @PREFERRED_STACK_BOUNDARY_2@ \ - $(AM_CFLAGS_BASE) -fomit-frame-pointer @SOLARIS_UNDEF_LARGESOURCE@ -@@ -708,6 +714,7 @@ PRELOAD_LDFLAGS_S390X_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ - PRELOAD_LDFLAGS_MIPS32_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ - PRELOAD_LDFLAGS_NANOMIPS_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ - PRELOAD_LDFLAGS_MIPS64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ -+PRELOAD_LDFLAGS_LOONGARCH64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ - PRELOAD_LDFLAGS_X86_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M32@ - PRELOAD_LDFLAGS_AMD64_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M64@ - -@@ -798,6 +805,10 @@ TOOL_LDFLAGS_MIPS64_LINUX = \ - -static -nodefaultlibs -nostartfiles -u __start @FLAG_NO_BUILD_ID@ \ - @FLAG_M64@ - -+TOOL_LDFLAGS_LOONGARCH64_LINUX = \ -+ -static -nodefaultlibs -nostartfiles -u __start @FLAG_NO_BUILD_ID@ \ -+ @FLAG_M64@ -+ - TOOL_LDFLAGS_X86_SOLARIS = \ - $(TOOL_LDFLAGS_COMMON_SOLARIS) @FLAG_M32@ - -@@ -858,6 +869,9 @@ LIBREPLACEMALLOC_MIPS32_LINUX = \ - LIBREPLACEMALLOC_MIPS64_LINUX = \ - $(top_builddir)/coregrind/libreplacemalloc_toolpreload-mips64-linux.a - -+LIBREPLACEMALLOC_LOONGARCH64_LINUX = \ -+ $(top_builddir)/coregrind/libreplacemalloc_toolpreload-loongarch64-linux.a -+ - LIBREPLACEMALLOC_X86_SOLARIS = \ - $(top_builddir)/coregrind/libreplacemalloc_toolpreload-x86-solaris.a - -@@ -930,6 +944,11 @@ LIBREPLACEMALLOC_LDFLAGS_MIPS64_LINUX = \ - $(LIBREPLACEMALLOC_MIPS64_LINUX) \ - -Wl,--no-whole-archive - -+LIBREPLACEMALLOC_LDFLAGS_LOONGARCH64_LINUX = \ -+ -Wl,--whole-archive \ -+ $(LIBREPLACEMALLOC_LOONGARCH64_LINUX) \ -+ -Wl,--no-whole-archive -+ - LIBREPLACEMALLOC_LDFLAGS_X86_SOLARIS = \ - -Wl,--whole-archive \ - $(LIBREPLACEMALLOC_X86_SOLARIS) \ diff --git a/cachegrind/cg_arch.c b/cachegrind/cg_arch.c -index 68314c9..55f7585 100644 +index be2973405aaa..3f637092cea8 100644 --- a/cachegrind/cg_arch.c +++ b/cachegrind/cg_arch.c -@@ -484,6 +484,13 @@ configure_caches(cache_t *I1c, cache_t *D1c, cache_t *LLc, - *D1c = (cache_t) { 65536, 2, 64 }; - *LLc = (cache_t) { 262144, 8, 64 }; +@@ -491,6 +491,13 @@ configure_caches(cache_t *I1c, cache_t *D1c, cache_t *LLc, + *D1c = (cache_t) { 32768, 8, 64 }; + *LLc = (cache_t) { 2097152, 16, 64 }; +#elif defined(VGA_loongarch64) + @@ -23773,7 +24236,7 @@ index 68314c9..55f7585 100644 #error "Unknown arch" diff --git a/cachegrind/cg_branchpred.c b/cachegrind/cg_branchpred.c -index 927b7bf..6a97209 100644 +index f7a261c6fe42..542a352355f6 100644 --- a/cachegrind/cg_branchpred.c +++ b/cachegrind/cg_branchpred.c @@ -44,7 +44,7 @@ @@ -23785,310 +24248,13 @@ index 927b7bf..6a97209 100644 # define N_IADDR_LO_ZERO_BITS 2 #elif defined(VGA_x86) || defined(VGA_amd64) # define N_IADDR_LO_ZERO_BITS 0 -diff --git a/cachegrind/tests/Makefile.in b/cachegrind/tests/Makefile.in -index 722b1e7..7bb020e 100644 ---- a/cachegrind/tests/Makefile.in -+++ b/cachegrind/tests/Makefile.in -@@ -629,6 +629,12 @@ AM_CFLAGS_PSO_MIPS64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ - $(AM_CFLAGS_PSO_BASE) - - AM_CCASFLAGS_MIPS64_LINUX = @FLAG_M64@ -g -+AM_FLAG_M3264_LOONGARCH64_LINUX = @FLAG_M64@ -+AM_CFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) -+AM_CFLAGS_PSO_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ -+ $(AM_CFLAGS_PSO_BASE) -+ -+AM_CCASFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ -g - AM_FLAG_M3264_X86_SOLARIS = @FLAG_M32@ - AM_CFLAGS_X86_SOLARIS = @FLAG_M32@ @PREFERRED_STACK_BOUNDARY_2@ \ - $(AM_CFLAGS_BASE) -fomit-frame-pointer @SOLARIS_UNDEF_LARGESOURCE@ -@@ -676,6 +682,7 @@ PRELOAD_LDFLAGS_S390X_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ - PRELOAD_LDFLAGS_MIPS32_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ - PRELOAD_LDFLAGS_NANOMIPS_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ - PRELOAD_LDFLAGS_MIPS64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ -+PRELOAD_LDFLAGS_LOONGARCH64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ - PRELOAD_LDFLAGS_X86_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M32@ - PRELOAD_LDFLAGS_AMD64_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M64@ - AM_CPPFLAGS = -I$(top_srcdir) -I$(top_srcdir)/include \ -diff --git a/cachegrind/tests/x86/Makefile.in b/cachegrind/tests/x86/Makefile.in -index 1f7c820..6fcfd84 100644 ---- a/cachegrind/tests/x86/Makefile.in -+++ b/cachegrind/tests/x86/Makefile.in -@@ -572,6 +572,12 @@ AM_CFLAGS_PSO_MIPS64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ - $(AM_CFLAGS_PSO_BASE) - - AM_CCASFLAGS_MIPS64_LINUX = @FLAG_M64@ -g -+AM_FLAG_M3264_LOONGARCH64_LINUX = @FLAG_M64@ -+AM_CFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) -+AM_CFLAGS_PSO_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ -+ $(AM_CFLAGS_PSO_BASE) -+ -+AM_CCASFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ -g - AM_FLAG_M3264_X86_SOLARIS = @FLAG_M32@ - AM_CFLAGS_X86_SOLARIS = @FLAG_M32@ @PREFERRED_STACK_BOUNDARY_2@ \ - $(AM_CFLAGS_BASE) -fomit-frame-pointer @SOLARIS_UNDEF_LARGESOURCE@ -@@ -619,6 +625,7 @@ PRELOAD_LDFLAGS_S390X_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ - PRELOAD_LDFLAGS_MIPS32_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ - PRELOAD_LDFLAGS_NANOMIPS_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ - PRELOAD_LDFLAGS_MIPS64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ -+PRELOAD_LDFLAGS_LOONGARCH64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ - PRELOAD_LDFLAGS_X86_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M32@ - PRELOAD_LDFLAGS_AMD64_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M64@ - AM_CPPFLAGS = -I$(top_srcdir) -I$(top_srcdir)/include \ -diff --git a/callgrind/Makefile.in b/callgrind/Makefile.in -index 0c33846..a74dfa5 100644 ---- a/callgrind/Makefile.in -+++ b/callgrind/Makefile.in -@@ -708,6 +708,12 @@ AM_CFLAGS_PSO_MIPS64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ - $(AM_CFLAGS_PSO_BASE) - - AM_CCASFLAGS_MIPS64_LINUX = @FLAG_M64@ -g -+AM_FLAG_M3264_LOONGARCH64_LINUX = @FLAG_M64@ -+AM_CFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) -+AM_CFLAGS_PSO_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ -+ $(AM_CFLAGS_PSO_BASE) -+ -+AM_CCASFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ -g - AM_FLAG_M3264_X86_SOLARIS = @FLAG_M32@ - AM_CFLAGS_X86_SOLARIS = @FLAG_M32@ @PREFERRED_STACK_BOUNDARY_2@ \ - $(AM_CFLAGS_BASE) -fomit-frame-pointer @SOLARIS_UNDEF_LARGESOURCE@ -@@ -755,6 +761,7 @@ PRELOAD_LDFLAGS_S390X_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ - PRELOAD_LDFLAGS_MIPS32_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ - PRELOAD_LDFLAGS_NANOMIPS_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ - PRELOAD_LDFLAGS_MIPS64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ -+PRELOAD_LDFLAGS_LOONGARCH64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ - PRELOAD_LDFLAGS_X86_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M32@ - PRELOAD_LDFLAGS_AMD64_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M64@ - -@@ -845,6 +852,10 @@ TOOL_LDFLAGS_MIPS64_LINUX = \ - -static -nodefaultlibs -nostartfiles -u __start @FLAG_NO_BUILD_ID@ \ - @FLAG_M64@ - -+TOOL_LDFLAGS_LOONGARCH64_LINUX = \ -+ -static -nodefaultlibs -nostartfiles -u __start @FLAG_NO_BUILD_ID@ \ -+ @FLAG_M64@ -+ - TOOL_LDFLAGS_X86_SOLARIS = \ - $(TOOL_LDFLAGS_COMMON_SOLARIS) @FLAG_M32@ - -@@ -905,6 +916,9 @@ LIBREPLACEMALLOC_MIPS32_LINUX = \ - LIBREPLACEMALLOC_MIPS64_LINUX = \ - $(top_builddir)/coregrind/libreplacemalloc_toolpreload-mips64-linux.a - -+LIBREPLACEMALLOC_LOONGARCH64_LINUX = \ -+ $(top_builddir)/coregrind/libreplacemalloc_toolpreload-loongarch64-linux.a -+ - LIBREPLACEMALLOC_X86_SOLARIS = \ - $(top_builddir)/coregrind/libreplacemalloc_toolpreload-x86-solaris.a - -@@ -977,6 +991,11 @@ LIBREPLACEMALLOC_LDFLAGS_MIPS64_LINUX = \ - $(LIBREPLACEMALLOC_MIPS64_LINUX) \ - -Wl,--no-whole-archive - -+LIBREPLACEMALLOC_LDFLAGS_LOONGARCH64_LINUX = \ -+ -Wl,--whole-archive \ -+ $(LIBREPLACEMALLOC_LOONGARCH64_LINUX) \ -+ -Wl,--no-whole-archive -+ - LIBREPLACEMALLOC_LDFLAGS_X86_SOLARIS = \ - -Wl,--whole-archive \ - $(LIBREPLACEMALLOC_X86_SOLARIS) \ -diff --git a/callgrind/tests/Makefile.in b/callgrind/tests/Makefile.in -index 5268175..9a98624 100644 ---- a/callgrind/tests/Makefile.in -+++ b/callgrind/tests/Makefile.in -@@ -614,6 +614,12 @@ AM_CFLAGS_PSO_MIPS64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ - $(AM_CFLAGS_PSO_BASE) - - AM_CCASFLAGS_MIPS64_LINUX = @FLAG_M64@ -g -+AM_FLAG_M3264_LOONGARCH64_LINUX = @FLAG_M64@ -+AM_CFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) -+AM_CFLAGS_PSO_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ -+ $(AM_CFLAGS_PSO_BASE) -+ -+AM_CCASFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ -g - AM_FLAG_M3264_X86_SOLARIS = @FLAG_M32@ - AM_CFLAGS_X86_SOLARIS = @FLAG_M32@ @PREFERRED_STACK_BOUNDARY_2@ \ - $(AM_CFLAGS_BASE) -fomit-frame-pointer @SOLARIS_UNDEF_LARGESOURCE@ -@@ -661,6 +667,7 @@ PRELOAD_LDFLAGS_S390X_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ - PRELOAD_LDFLAGS_MIPS32_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ - PRELOAD_LDFLAGS_NANOMIPS_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ - PRELOAD_LDFLAGS_MIPS64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ -+PRELOAD_LDFLAGS_LOONGARCH64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ - PRELOAD_LDFLAGS_X86_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M32@ - PRELOAD_LDFLAGS_AMD64_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M64@ - AM_CPPFLAGS = -I$(top_srcdir) -I$(top_srcdir)/include \ -diff --git a/config.h b/config.h -index 34b8917..9bdf4ff 100644 ---- a/config.h -+++ b/config.h -@@ -96,7 +96,7 @@ - #define HAVE_ASM_UNISTD_H 1 - - /* Define to 1 if as supports fxsave64/fxrstor64. */ --#define HAVE_AS_AMD64_FXSAVE64 1 -+/* #undef HAVE_AS_AMD64_FXSAVE64 */ - - /* Define to 1 if as supports floating point phased out category. */ - /* #undef HAVE_AS_PPC_FPPO */ -diff --git a/configure b/configure -index 26f7d89..9d6deb1 100755 ---- a/configure -+++ b/configure -@@ -1003,6 +1003,8 @@ VGCONF_PLATFORMS_INCLUDE_AMD64_FREEBSD_FALSE - VGCONF_PLATFORMS_INCLUDE_AMD64_FREEBSD_TRUE - VGCONF_PLATFORMS_INCLUDE_X86_FREEBSD_FALSE - VGCONF_PLATFORMS_INCLUDE_X86_FREEBSD_TRUE -+VGCONF_PLATFORMS_INCLUDE_LOONGARCH64_LINUX_FALSE -+VGCONF_PLATFORMS_INCLUDE_LOONGARCH64_LINUX_TRUE - VGCONF_PLATFORMS_INCLUDE_NANOMIPS_LINUX_FALSE - VGCONF_PLATFORMS_INCLUDE_NANOMIPS_LINUX_TRUE - VGCONF_PLATFORMS_INCLUDE_MIPS64_LINUX_FALSE -@@ -1025,6 +1027,8 @@ VGCONF_PLATFORMS_INCLUDE_AMD64_LINUX_FALSE - VGCONF_PLATFORMS_INCLUDE_AMD64_LINUX_TRUE - VGCONF_PLATFORMS_INCLUDE_X86_LINUX_FALSE - VGCONF_PLATFORMS_INCLUDE_X86_LINUX_TRUE -+VGCONF_ARCHS_INCLUDE_LOONGARCH64_FALSE -+VGCONF_ARCHS_INCLUDE_LOONGARCH64_TRUE - VGCONF_ARCHS_INCLUDE_NANOMIPS_FALSE - VGCONF_ARCHS_INCLUDE_NANOMIPS_TRUE - VGCONF_ARCHS_INCLUDE_MIPS64_FALSE -@@ -6938,6 +6942,12 @@ printf "%s\n" "ok (${host_cpu})" >&6; } - ARCH_MAX="nanomips" - ;; - -+ loongarch64*) -+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: ok (${host_cpu})" >&5 -+printf "%s\n" "ok (${host_cpu})" >&6; } -+ ARCH_MAX="loongarch64" -+ ;; -+ - *) - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no (${host_cpu})" >&5 - printf "%s\n" "no (${host_cpu})" >&6; } -@@ -7764,6 +7774,18 @@ printf "%s\n" "ok (${ARCH_MAX}-${VGCONF_OS})" >&6; } - valt_load_address_sec_norml="0xUNSET" - valt_load_address_sec_inner="0xUNSET" - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: ok (${ARCH_MAX}-${VGCONF_OS})" >&5 -+printf "%s\n" "ok (${ARCH_MAX}-${VGCONF_OS})" >&6; } -+ ;; -+ loongarch64-linux) -+ VGCONF_ARCH_PRI="loongarch64" -+ VGCONF_ARCH_SEC="" -+ VGCONF_PLATFORM_PRI_CAPS="LOONGARCH64_LINUX" -+ VGCONF_PLATFORM_SEC_CAPS="" -+ valt_load_address_pri_norml="0x58000000" -+ valt_load_address_pri_inner="0x38000000" -+ valt_load_address_sec_norml="0xUNSET" -+ valt_load_address_sec_inner="0xUNSET" -+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: ok (${ARCH_MAX}-${VGCONF_OS})" >&5 - printf "%s\n" "ok (${ARCH_MAX}-${VGCONF_OS})" >&6; } - ;; - x86-solaris) -@@ -7921,6 +7943,14 @@ else - VGCONF_ARCHS_INCLUDE_NANOMIPS_FALSE= - fi - -+ if test x$VGCONF_PLATFORM_PRI_CAPS = xLOONGARCH64_LINUX ; then -+ VGCONF_ARCHS_INCLUDE_LOONGARCH64_TRUE= -+ VGCONF_ARCHS_INCLUDE_LOONGARCH64_FALSE='#' -+else -+ VGCONF_ARCHS_INCLUDE_LOONGARCH64_TRUE='#' -+ VGCONF_ARCHS_INCLUDE_LOONGARCH64_FALSE= -+fi -+ - - # Set up VGCONF_PLATFORMS_INCLUDE_. Either one or two of these - # become defined. -@@ -8017,6 +8047,14 @@ else - VGCONF_PLATFORMS_INCLUDE_NANOMIPS_LINUX_FALSE= - fi - -+ if test x$VGCONF_PLATFORM_PRI_CAPS = xLOONGARCH64_LINUX; then -+ VGCONF_PLATFORMS_INCLUDE_LOONGARCH64_LINUX_TRUE= -+ VGCONF_PLATFORMS_INCLUDE_LOONGARCH64_LINUX_FALSE='#' -+else -+ VGCONF_PLATFORMS_INCLUDE_LOONGARCH64_LINUX_TRUE='#' -+ VGCONF_PLATFORMS_INCLUDE_LOONGARCH64_LINUX_FALSE= -+fi -+ - if test x$VGCONF_PLATFORM_PRI_CAPS = xX86_FREEBSD \ - -o x$VGCONF_PLATFORM_SEC_CAPS = xX86_FREEBSD; then - VGCONF_PLATFORMS_INCLUDE_X86_FREEBSD_TRUE= -@@ -8083,7 +8121,8 @@ fi - -o x$VGCONF_PLATFORM_PRI_CAPS = xS390X_LINUX \ - -o x$VGCONF_PLATFORM_PRI_CAPS = xMIPS32_LINUX \ - -o x$VGCONF_PLATFORM_PRI_CAPS = xMIPS64_LINUX \ -- -o x$VGCONF_PLATFORM_PRI_CAPS = xNANOMIPS_LINUX; then -+ -o x$VGCONF_PLATFORM_PRI_CAPS = xNANOMIPS_LINUX \ -+ -o x$VGCONF_PLATFORM_PRI_CAPS = xLOONGARCH64_LINUX; then - VGCONF_OS_IS_LINUX_TRUE= - VGCONF_OS_IS_LINUX_FALSE='#' - else -@@ -18254,7 +18293,8 @@ elif test x$VGCONF_PLATFORM_PRI_CAPS = xAMD64_LINUX \ - -o x$VGCONF_PLATFORM_PRI_CAPS = xPPC64_LINUX \ - -o x$VGCONF_PLATFORM_PRI_CAPS = xARM64_LINUX \ - -o x$VGCONF_PLATFORM_PRI_CAPS = xMIPS64_LINUX \ -- -o x$VGCONF_PLATFORM_PRI_CAPS = xS390X_LINUX ; then -+ -o x$VGCONF_PLATFORM_PRI_CAPS = xS390X_LINUX \ -+ -o x$VGCONF_PLATFORM_PRI_CAPS = xLOONGARCH64_LINUX; then - mflag_primary=$FLAG_M64 - elif test x$VGCONF_PLATFORM_PRI_CAPS = xX86_DARWIN ; then - mflag_primary="$FLAG_M32 -arch i386" -@@ -19213,7 +19253,7 @@ fi - #---------------------------------------------------------------------------- - - # Nb: VEX/Makefile is generated from Makefile.vex.in. --ac_config_files="$ac_config_files Makefile VEX/Makefile:Makefile.vex.in valgrind.spec valgrind.pc glibc-2.X.supp glibc-2.X-helgrind.supp glibc-2.X-drd.supp include/valgrind.h docs/Makefile docs/xml/vg-entities.xml tests/Makefile tests/vg_regtest perf/Makefile perf/vg_perf gdbserver_tests/Makefile gdbserver_tests/solaris/Makefile include/Makefile auxprogs/Makefile mpi/Makefile coregrind/Makefile memcheck/Makefile memcheck/tests/Makefile memcheck/tests/common/Makefile memcheck/tests/amd64/Makefile memcheck/tests/x86/Makefile memcheck/tests/linux/Makefile memcheck/tests/linux/debuginfod-check.vgtest memcheck/tests/darwin/Makefile memcheck/tests/solaris/Makefile memcheck/tests/freebsd/Makefile memcheck/tests/amd64-linux/Makefile memcheck/tests/arm64-linux/Makefile memcheck/tests/x86-linux/Makefile memcheck/tests/amd64-solaris/Makefile memcheck/tests/x86-solaris/Makefile memcheck/tests/amd64-freebsd/Makefile memcheck/tests/x86-freebsd/Makefile memcheck/tests/ppc32/Makefile memcheck/tests/ppc64/Makefile memcheck/tests/s390x/Makefile memcheck/tests/mips32/Makefile memcheck/tests/mips64/Makefile memcheck/tests/vbit-test/Makefile cachegrind/Makefile cachegrind/tests/Makefile cachegrind/tests/x86/Makefile cachegrind/cg_annotate cachegrind/cg_diff cachegrind/cg_merge callgrind/Makefile callgrind/callgrind_annotate callgrind/callgrind_control callgrind/tests/Makefile helgrind/Makefile helgrind/tests/Makefile drd/Makefile drd/scripts/download-and-build-splash2 drd/tests/Makefile massif/Makefile massif/tests/Makefile massif/ms_print dhat/Makefile dhat/tests/Makefile lackey/Makefile lackey/tests/Makefile none/Makefile none/tests/Makefile none/tests/scripts/Makefile none/tests/amd64/Makefile none/tests/ppc32/Makefile none/tests/ppc64/Makefile none/tests/x86/Makefile none/tests/arm/Makefile none/tests/arm64/Makefile none/tests/s390x/Makefile none/tests/mips32/Makefile none/tests/mips64/Makefile none/tests/nanomips/Makefile none/tests/linux/Makefile none/tests/darwin/Makefile none/tests/solaris/Makefile none/tests/freebsd/Makefile none/tests/amd64-linux/Makefile none/tests/x86-linux/Makefile none/tests/amd64-darwin/Makefile none/tests/x86-darwin/Makefile none/tests/amd64-solaris/Makefile none/tests/x86-solaris/Makefile none/tests/x86-freebsd/Makefile exp-bbv/Makefile exp-bbv/tests/Makefile exp-bbv/tests/x86/Makefile exp-bbv/tests/x86-linux/Makefile exp-bbv/tests/amd64-linux/Makefile exp-bbv/tests/ppc32-linux/Makefile exp-bbv/tests/arm-linux/Makefile shared/Makefile solaris/Makefile" -+ac_config_files="$ac_config_files Makefile VEX/Makefile:Makefile.vex.in valgrind.spec valgrind.pc glibc-2.X.supp glibc-2.X-helgrind.supp glibc-2.X-drd.supp include/valgrind.h docs/Makefile docs/xml/vg-entities.xml tests/Makefile tests/vg_regtest perf/Makefile perf/vg_perf gdbserver_tests/Makefile gdbserver_tests/solaris/Makefile include/Makefile auxprogs/Makefile mpi/Makefile coregrind/Makefile memcheck/Makefile memcheck/tests/Makefile memcheck/tests/common/Makefile memcheck/tests/amd64/Makefile memcheck/tests/x86/Makefile memcheck/tests/linux/Makefile memcheck/tests/linux/debuginfod-check.vgtest memcheck/tests/darwin/Makefile memcheck/tests/solaris/Makefile memcheck/tests/freebsd/Makefile memcheck/tests/amd64-linux/Makefile memcheck/tests/arm64-linux/Makefile memcheck/tests/x86-linux/Makefile memcheck/tests/loongarch64-linux/Makefile memcheck/tests/amd64-solaris/Makefile memcheck/tests/x86-solaris/Makefile memcheck/tests/amd64-freebsd/Makefile memcheck/tests/x86-freebsd/Makefile memcheck/tests/ppc32/Makefile memcheck/tests/ppc64/Makefile memcheck/tests/s390x/Makefile memcheck/tests/mips32/Makefile memcheck/tests/mips64/Makefile memcheck/tests/vbit-test/Makefile cachegrind/Makefile cachegrind/tests/Makefile cachegrind/tests/x86/Makefile cachegrind/cg_annotate cachegrind/cg_diff cachegrind/cg_merge callgrind/Makefile callgrind/callgrind_annotate callgrind/callgrind_control callgrind/tests/Makefile helgrind/Makefile helgrind/tests/Makefile drd/Makefile drd/scripts/download-and-build-splash2 drd/tests/Makefile massif/Makefile massif/tests/Makefile massif/ms_print dhat/Makefile dhat/tests/Makefile lackey/Makefile lackey/tests/Makefile none/Makefile none/tests/Makefile none/tests/scripts/Makefile none/tests/amd64/Makefile none/tests/ppc32/Makefile none/tests/ppc64/Makefile none/tests/x86/Makefile none/tests/arm/Makefile none/tests/arm64/Makefile none/tests/s390x/Makefile none/tests/mips32/Makefile none/tests/mips64/Makefile none/tests/nanomips/Makefile none/tests/loongarch64/Makefile none/tests/linux/Makefile none/tests/darwin/Makefile none/tests/solaris/Makefile none/tests/freebsd/Makefile none/tests/amd64-linux/Makefile none/tests/x86-linux/Makefile none/tests/amd64-darwin/Makefile none/tests/x86-darwin/Makefile none/tests/amd64-solaris/Makefile none/tests/x86-solaris/Makefile none/tests/x86-freebsd/Makefile exp-bbv/Makefile exp-bbv/tests/Makefile exp-bbv/tests/x86/Makefile exp-bbv/tests/x86-linux/Makefile exp-bbv/tests/amd64-linux/Makefile exp-bbv/tests/ppc32-linux/Makefile exp-bbv/tests/arm-linux/Makefile shared/Makefile solaris/Makefile" - - ac_config_files="$ac_config_files coregrind/link_tool_exe_linux" - -@@ -19450,6 +19490,10 @@ if test -z "${VGCONF_ARCHS_INCLUDE_NANOMIPS_TRUE}" && test -z "${VGCONF_ARCHS_IN - as_fn_error $? "conditional \"VGCONF_ARCHS_INCLUDE_NANOMIPS\" was never defined. - Usually this means the macro was only invoked conditionally." "$LINENO" 5 - fi -+if test -z "${VGCONF_ARCHS_INCLUDE_LOONGARCH64_TRUE}" && test -z "${VGCONF_ARCHS_INCLUDE_LOONGARCH64_FALSE}"; then -+ as_fn_error $? "conditional \"VGCONF_ARCHS_INCLUDE_LOONGARCH64\" was never defined. -+Usually this means the macro was only invoked conditionally." "$LINENO" 5 -+fi - if test -z "${VGCONF_PLATFORMS_INCLUDE_X86_LINUX_TRUE}" && test -z "${VGCONF_PLATFORMS_INCLUDE_X86_LINUX_FALSE}"; then - as_fn_error $? "conditional \"VGCONF_PLATFORMS_INCLUDE_X86_LINUX\" was never defined. - Usually this means the macro was only invoked conditionally." "$LINENO" 5 -@@ -19494,6 +19538,10 @@ if test -z "${VGCONF_PLATFORMS_INCLUDE_NANOMIPS_LINUX_TRUE}" && test -z "${VGCON - as_fn_error $? "conditional \"VGCONF_PLATFORMS_INCLUDE_NANOMIPS_LINUX\" was never defined. - Usually this means the macro was only invoked conditionally." "$LINENO" 5 - fi -+if test -z "${VGCONF_PLATFORMS_INCLUDE_LOONGARCH64_LINUX_TRUE}" && test -z "${VGCONF_PLATFORMS_INCLUDE_LOONGARCH64_LINUX_FALSE}"; then -+ as_fn_error $? "conditional \"VGCONF_PLATFORMS_INCLUDE_LOONGARCH64_LINUX\" was never defined. -+Usually this means the macro was only invoked conditionally." "$LINENO" 5 -+fi - if test -z "${VGCONF_PLATFORMS_INCLUDE_X86_FREEBSD_TRUE}" && test -z "${VGCONF_PLATFORMS_INCLUDE_X86_FREEBSD_FALSE}"; then - as_fn_error $? "conditional \"VGCONF_PLATFORMS_INCLUDE_X86_FREEBSD\" was never defined. - Usually this means the macro was only invoked conditionally." "$LINENO" 5 -@@ -20752,6 +20800,7 @@ do - "memcheck/tests/amd64-linux/Makefile") CONFIG_FILES="$CONFIG_FILES memcheck/tests/amd64-linux/Makefile" ;; - "memcheck/tests/arm64-linux/Makefile") CONFIG_FILES="$CONFIG_FILES memcheck/tests/arm64-linux/Makefile" ;; - "memcheck/tests/x86-linux/Makefile") CONFIG_FILES="$CONFIG_FILES memcheck/tests/x86-linux/Makefile" ;; -+ "memcheck/tests/loongarch64-linux/Makefile") CONFIG_FILES="$CONFIG_FILES memcheck/tests/loongarch64-linux/Makefile" ;; - "memcheck/tests/amd64-solaris/Makefile") CONFIG_FILES="$CONFIG_FILES memcheck/tests/amd64-solaris/Makefile" ;; - "memcheck/tests/x86-solaris/Makefile") CONFIG_FILES="$CONFIG_FILES memcheck/tests/x86-solaris/Makefile" ;; - "memcheck/tests/amd64-freebsd/Makefile") CONFIG_FILES="$CONFIG_FILES memcheck/tests/amd64-freebsd/Makefile" ;; -@@ -20797,6 +20846,7 @@ do - "none/tests/mips32/Makefile") CONFIG_FILES="$CONFIG_FILES none/tests/mips32/Makefile" ;; - "none/tests/mips64/Makefile") CONFIG_FILES="$CONFIG_FILES none/tests/mips64/Makefile" ;; - "none/tests/nanomips/Makefile") CONFIG_FILES="$CONFIG_FILES none/tests/nanomips/Makefile" ;; -+ "none/tests/loongarch64/Makefile") CONFIG_FILES="$CONFIG_FILES none/tests/loongarch64/Makefile" ;; - "none/tests/linux/Makefile") CONFIG_FILES="$CONFIG_FILES none/tests/linux/Makefile" ;; - "none/tests/darwin/Makefile") CONFIG_FILES="$CONFIG_FILES none/tests/darwin/Makefile" ;; - "none/tests/solaris/Makefile") CONFIG_FILES="$CONFIG_FILES none/tests/solaris/Makefile" ;; diff --git a/configure.ac b/configure.ac -index bf024ac..47485d1 100755 +index 2dfbd1c1afd0..15fb5a13141d 100755 --- a/configure.ac +++ b/configure.ac -@@ -310,6 +310,11 @@ case "${host_cpu}" in - ARCH_MAX="nanomips" - ;; +@@ -306,6 +306,11 @@ case "${host_cpu}" in + ARCH_MAX="riscv64" + ;; + loongarch64*) + AC_MSG_RESULT([ok (${host_cpu})]) @@ -24098,7 +24264,7 @@ index bf024ac..47485d1 100755 *) AC_MSG_RESULT([no (${host_cpu})]) AC_MSG_ERROR([Unsupported host architecture. Sorry]) -@@ -952,6 +957,17 @@ case "$ARCH_MAX-$VGCONF_OS" in +@@ -889,6 +894,17 @@ case "$ARCH_MAX-$VGCONF_OS" in valt_load_address_sec_inner="0xUNSET" AC_MSG_RESULT([ok (${ARCH_MAX}-${VGCONF_OS})]) ;; @@ -24116,998 +24282,135 @@ index bf024ac..47485d1 100755 x86-solaris) VGCONF_ARCH_PRI="x86" VGCONF_ARCH_SEC="" -@@ -1044,6 +1060,8 @@ AM_CONDITIONAL(VGCONF_ARCHS_INCLUDE_MIPS64, - test x$VGCONF_PLATFORM_PRI_CAPS = xMIPS64_LINUX ) - AM_CONDITIONAL(VGCONF_ARCHS_INCLUDE_NANOMIPS, +@@ -984,6 +1000,8 @@ AM_CONDITIONAL(VGCONF_ARCHS_INCLUDE_NANOMIPS, test x$VGCONF_PLATFORM_PRI_CAPS = xNANOMIPS_LINUX ) + AM_CONDITIONAL(VGCONF_ARCHS_INCLUDE_RISCV64, + test x$VGCONF_PLATFORM_PRI_CAPS = xRISCV64_LINUX ) +AM_CONDITIONAL(VGCONF_ARCHS_INCLUDE_LOONGARCH64, + test x$VGCONF_PLATFORM_PRI_CAPS = xLOONGARCH64_LINUX ) # Set up VGCONF_PLATFORMS_INCLUDE_. Either one or two of these # become defined. -@@ -1074,6 +1092,8 @@ AM_CONDITIONAL(VGCONF_PLATFORMS_INCLUDE_MIPS64_LINUX, - test x$VGCONF_PLATFORM_PRI_CAPS = xMIPS64_LINUX) - AM_CONDITIONAL(VGCONF_PLATFORMS_INCLUDE_NANOMIPS_LINUX, +@@ -1016,6 +1034,8 @@ AM_CONDITIONAL(VGCONF_PLATFORMS_INCLUDE_NANOMIPS_LINUX, test x$VGCONF_PLATFORM_PRI_CAPS = xNANOMIPS_LINUX) + AM_CONDITIONAL(VGCONF_PLATFORMS_INCLUDE_RISCV64_LINUX, + test x$VGCONF_PLATFORM_PRI_CAPS = xRISCV64_LINUX) +AM_CONDITIONAL(VGCONF_PLATFORMS_INCLUDE_LOONGARCH64_LINUX, + test x$VGCONF_PLATFORM_PRI_CAPS = xLOONGARCH64_LINUX) AM_CONDITIONAL(VGCONF_PLATFORMS_INCLUDE_X86_FREEBSD, test x$VGCONF_PLATFORM_PRI_CAPS = xX86_FREEBSD \ -o x$VGCONF_PLATFORM_SEC_CAPS = xX86_FREEBSD) -@@ -1105,7 +1125,8 @@ AM_CONDITIONAL(VGCONF_OS_IS_LINUX, - -o x$VGCONF_PLATFORM_PRI_CAPS = xS390X_LINUX \ +@@ -1050,7 +1070,8 @@ AM_CONDITIONAL(VGCONF_OS_IS_LINUX, -o x$VGCONF_PLATFORM_PRI_CAPS = xMIPS32_LINUX \ -o x$VGCONF_PLATFORM_PRI_CAPS = xMIPS64_LINUX \ -- -o x$VGCONF_PLATFORM_PRI_CAPS = xNANOMIPS_LINUX) -+ -o x$VGCONF_PLATFORM_PRI_CAPS = xNANOMIPS_LINUX \ + -o x$VGCONF_PLATFORM_PRI_CAPS = xNANOMIPS_LINUX \ +- -o x$VGCONF_PLATFORM_PRI_CAPS = xRISCV64_LINUX) ++ -o x$VGCONF_PLATFORM_PRI_CAPS = xRISCV64_LINUX \ + -o x$VGCONF_PLATFORM_PRI_CAPS = xLOONGARCH64_LINUX) AM_CONDITIONAL(VGCONF_OS_IS_FREEBSD, test x$VGCONF_PLATFORM_PRI_CAPS = xX86_FREEBSD \ - -o x$VGCONF_PLATFORM_PRI_CAPS = xAMD64_FREEBSD) -@@ -4979,7 +5000,8 @@ elif test x$VGCONF_PLATFORM_PRI_CAPS = xAMD64_LINUX \ - -o x$VGCONF_PLATFORM_PRI_CAPS = xPPC64_LINUX \ - -o x$VGCONF_PLATFORM_PRI_CAPS = xARM64_LINUX \ + -o x$VGCONF_PLATFORM_PRI_CAPS = xAMD64_FREEBSD \ +@@ -5099,7 +5120,8 @@ elif test x$VGCONF_PLATFORM_PRI_CAPS = xAMD64_LINUX \ + -o x$VGCONF_PLATFORM_PRI_CAPS = xARM64_FREEBSD \ -o x$VGCONF_PLATFORM_PRI_CAPS = xMIPS64_LINUX \ -- -o x$VGCONF_PLATFORM_PRI_CAPS = xS390X_LINUX ; then -+ -o x$VGCONF_PLATFORM_PRI_CAPS = xS390X_LINUX \ + -o x$VGCONF_PLATFORM_PRI_CAPS = xS390X_LINUX \ +- -o x$VGCONF_PLATFORM_PRI_CAPS = xRISCV64_LINUX ; then ++ -o x$VGCONF_PLATFORM_PRI_CAPS = xRISCV64_LINUX \ + -o x$VGCONF_PLATFORM_PRI_CAPS = xLOONGARCH64_LINUX; then mflag_primary=$FLAG_M64 elif test x$VGCONF_PLATFORM_PRI_CAPS = xX86_DARWIN ; then mflag_primary="$FLAG_M32 -arch i386" -@@ -5505,6 +5527,7 @@ AC_CONFIG_FILES([ - memcheck/tests/amd64-linux/Makefile +@@ -5708,6 +5730,7 @@ AC_CONFIG_FILES([ memcheck/tests/arm64-linux/Makefile memcheck/tests/x86-linux/Makefile + memcheck/tests/riscv64-linux/Makefile + memcheck/tests/loongarch64-linux/Makefile memcheck/tests/amd64-solaris/Makefile memcheck/tests/x86-solaris/Makefile memcheck/tests/amd64-freebsd/Makefile -@@ -5550,6 +5573,7 @@ AC_CONFIG_FILES([ - none/tests/mips32/Makefile +@@ -5755,6 +5778,7 @@ AC_CONFIG_FILES([ none/tests/mips64/Makefile none/tests/nanomips/Makefile + none/tests/riscv64/Makefile + none/tests/loongarch64/Makefile none/tests/linux/Makefile none/tests/darwin/Makefile none/tests/solaris/Makefile diff --git a/coregrind/Makefile.am b/coregrind/Makefile.am -index 8a7f753..54c4824 100644 +index 700751dea455..9251ceddcdaa 100644 --- a/coregrind/Makefile.am +++ b/coregrind/Makefile.am -@@ -386,6 +386,7 @@ COREGRIND_SOURCES_COMMON = \ - m_dispatch/dispatch-mips32-linux.S \ +@@ -393,6 +393,7 @@ COREGRIND_SOURCES_COMMON = \ m_dispatch/dispatch-mips64-linux.S \ m_dispatch/dispatch-nanomips-linux.S \ + m_dispatch/dispatch-riscv64-linux.S \ + m_dispatch/dispatch-loongarch64-linux.S \ m_dispatch/dispatch-x86-freebsd.S \ m_dispatch/dispatch-amd64-freebsd.S \ - m_dispatch/dispatch-x86-darwin.S \ -@@ -409,6 +410,7 @@ COREGRIND_SOURCES_COMMON = \ - m_gdbserver/valgrind-low-mips32.c \ + m_dispatch/dispatch-arm64-freebsd.S \ +@@ -421,6 +422,7 @@ COREGRIND_SOURCES_COMMON = \ m_gdbserver/valgrind-low-mips64.c \ m_gdbserver/valgrind-low-nanomips.c \ + m_gdbserver/valgrind-low-riscv64.c \ + m_gdbserver/valgrind-low-loongarch64.c \ m_gdbserver/version.c \ m_initimg/initimg-linux.c \ m_initimg/initimg-freebsd.c \ -@@ -436,6 +438,7 @@ COREGRIND_SOURCES_COMMON = \ - m_sigframe/sigframe-mips32-linux.c \ +@@ -450,6 +452,7 @@ COREGRIND_SOURCES_COMMON = \ m_sigframe/sigframe-mips64-linux.c \ m_sigframe/sigframe-nanomips-linux.c \ + m_sigframe/sigframe-riscv64-linux.c \ + m_sigframe/sigframe-loongarch64-linux.c \ m_sigframe/sigframe-x86-darwin.c \ m_sigframe/sigframe-amd64-darwin.c \ m_sigframe/sigframe-solaris.c \ -@@ -450,6 +453,7 @@ COREGRIND_SOURCES_COMMON = \ - m_syswrap/syscall-mips32-linux.S \ +@@ -465,6 +468,7 @@ COREGRIND_SOURCES_COMMON = \ m_syswrap/syscall-mips64-linux.S \ m_syswrap/syscall-nanomips-linux.S \ + m_syswrap/syscall-riscv64-linux.S \ + m_syswrap/syscall-loongarch64-linux.S \ m_syswrap/syscall-x86-freebsd.S \ m_syswrap/syscall-amd64-freebsd.S \ - m_syswrap/syscall-x86-darwin.S \ -@@ -475,6 +479,7 @@ COREGRIND_SOURCES_COMMON = \ - m_syswrap/syswrap-mips32-linux.c \ + m_syswrap/syscall-arm64-freebsd.S \ +@@ -493,6 +497,7 @@ COREGRIND_SOURCES_COMMON = \ m_syswrap/syswrap-mips64-linux.c \ m_syswrap/syswrap-nanomips-linux.c \ + m_syswrap/syswrap-riscv64-linux.c \ + m_syswrap/syswrap-loongarch64-linux.c \ m_syswrap/syswrap-x86-darwin.c \ m_syswrap/syswrap-amd64-darwin.c \ m_syswrap/syswrap-xen.c \ -@@ -767,7 +772,15 @@ GDBSERVER_XML_FILES = \ - m_gdbserver/mips64-linux-valgrind.xml \ - m_gdbserver/mips64-fpu-valgrind-s1.xml \ - m_gdbserver/mips64-fpu-valgrind-s2.xml \ -- m_gdbserver/mips64-fpu.xml -+ m_gdbserver/mips64-fpu.xml \ -+ m_gdbserver/loongarch-base64.xml \ -+ m_gdbserver/loongarch-fpu64.xml \ +@@ -793,7 +798,24 @@ GDBSERVER_XML_FILES = \ + m_gdbserver/riscv64-linux-valgrind.xml \ + m_gdbserver/riscv64-fpu-valgrind-s1.xml \ + m_gdbserver/riscv64-fpu-valgrind-s2.xml \ +- m_gdbserver/riscv64-fpu.xml ++ m_gdbserver/riscv64-fpu.xml \ ++ m_gdbserver/loongarch64-base64.xml \ ++ m_gdbserver/loongarch64-fpu.xml \ ++ m_gdbserver/loongarch64-lsx.xml \ ++ m_gdbserver/loongarch64-lasx.xml \ ++ m_gdbserver/loongarch64-lbt.xml \ + m_gdbserver/loongarch64-linux.xml \ -+ m_gdbserver/loongarch-base64-valgrind-s1.xml \ -+ m_gdbserver/loongarch-base64-valgrind-s2.xml \ -+ m_gdbserver/loongarch-fpu64-valgrind-s1.xml \ -+ m_gdbserver/loongarch-fpu64-valgrind-s2.xml \ ++ m_gdbserver/loongarch64-base64-valgrind-s1.xml \ ++ m_gdbserver/loongarch64-base64-valgrind-s2.xml \ ++ m_gdbserver/loongarch64-fpu-valgrind-s1.xml \ ++ m_gdbserver/loongarch64-fpu-valgrind-s2.xml \ ++ m_gdbserver/loongarch64-lsx-valgrind-s1.xml \ ++ m_gdbserver/loongarch64-lsx-valgrind-s2.xml \ ++ m_gdbserver/loongarch64-lasx-valgrind-s1.xml \ ++ m_gdbserver/loongarch64-lasx-valgrind-s2.xml \ ++ m_gdbserver/loongarch64-lbt-valgrind-s1.xml \ ++ m_gdbserver/loongarch64-lbt-valgrind-s2.xml \ + m_gdbserver/loongarch64-linux-valgrind.xml # so as to make sure these get copied into the install tree vglibdir = $(pkglibexecdir) -diff --git a/coregrind/Makefile.in b/coregrind/Makefile.in -index 554ee94..a14da8d 100644 ---- a/coregrind/Makefile.in -+++ b/coregrind/Makefile.in -@@ -280,6 +280,7 @@ am__libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_SOURCES_DIST = \ - m_dispatch/dispatch-mips32-linux.S \ - m_dispatch/dispatch-mips64-linux.S \ - m_dispatch/dispatch-nanomips-linux.S \ -+ m_dispatch/dispatch-loongarch64-linux.S \ - m_dispatch/dispatch-x86-freebsd.S \ - m_dispatch/dispatch-amd64-freebsd.S \ - m_dispatch/dispatch-x86-darwin.S \ -@@ -298,7 +299,8 @@ am__libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_SOURCES_DIST = \ - m_gdbserver/valgrind-low-s390x.c \ - m_gdbserver/valgrind-low-mips32.c \ - m_gdbserver/valgrind-low-mips64.c \ -- m_gdbserver/valgrind-low-nanomips.c m_gdbserver/version.c \ -+ m_gdbserver/valgrind-low-nanomips.c \ -+ m_gdbserver/valgrind-low-loongarch64.c m_gdbserver/version.c \ - m_initimg/initimg-linux.c m_initimg/initimg-freebsd.c \ - m_initimg/initimg-darwin.c m_initimg/initimg-solaris.c \ - m_mach/mach_basics.c m_mach/mach_msg.c \ -@@ -319,6 +321,7 @@ am__libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_SOURCES_DIST = \ - m_sigframe/sigframe-mips32-linux.c \ - m_sigframe/sigframe-mips64-linux.c \ - m_sigframe/sigframe-nanomips-linux.c \ -+ m_sigframe/sigframe-loongarch64-linux.c \ - m_sigframe/sigframe-x86-darwin.c \ - m_sigframe/sigframe-amd64-darwin.c \ - m_sigframe/sigframe-solaris.c m_syswrap/syscall-x86-linux.S \ -@@ -331,6 +334,7 @@ am__libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_SOURCES_DIST = \ - m_syswrap/syscall-mips32-linux.S \ - m_syswrap/syscall-mips64-linux.S \ - m_syswrap/syscall-nanomips-linux.S \ -+ m_syswrap/syscall-loongarch64-linux.S \ - m_syswrap/syscall-x86-freebsd.S \ - m_syswrap/syscall-amd64-freebsd.S \ - m_syswrap/syscall-x86-darwin.S \ -@@ -350,6 +354,7 @@ am__libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_SOURCES_DIST = \ - m_syswrap/syswrap-mips32-linux.c \ - m_syswrap/syswrap-mips64-linux.c \ - m_syswrap/syswrap-nanomips-linux.c \ -+ m_syswrap/syswrap-loongarch64-linux.c \ - m_syswrap/syswrap-x86-darwin.c \ - m_syswrap/syswrap-amd64-darwin.c m_syswrap/syswrap-xen.c \ - m_syswrap/syswrap-x86-solaris.c \ -@@ -437,6 +442,7 @@ am__objects_1 = libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-m_addrinfo.$(OBJEXT - m_dispatch/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-dispatch-mips32-linux.$(OBJEXT) \ - m_dispatch/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-dispatch-mips64-linux.$(OBJEXT) \ - m_dispatch/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-dispatch-nanomips-linux.$(OBJEXT) \ -+ m_dispatch/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-dispatch-loongarch64-linux.$(OBJEXT) \ - m_dispatch/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-dispatch-x86-freebsd.$(OBJEXT) \ - m_dispatch/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-dispatch-amd64-freebsd.$(OBJEXT) \ - m_dispatch/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-dispatch-x86-darwin.$(OBJEXT) \ -@@ -460,6 +466,7 @@ am__objects_1 = libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-m_addrinfo.$(OBJEXT - m_gdbserver/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-valgrind-low-mips32.$(OBJEXT) \ - m_gdbserver/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-valgrind-low-mips64.$(OBJEXT) \ - m_gdbserver/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-valgrind-low-nanomips.$(OBJEXT) \ -+ m_gdbserver/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-valgrind-low-loongarch64.$(OBJEXT) \ - m_gdbserver/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-version.$(OBJEXT) \ - m_initimg/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-initimg-linux.$(OBJEXT) \ - m_initimg/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-initimg-freebsd.$(OBJEXT) \ -@@ -487,6 +494,7 @@ am__objects_1 = libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-m_addrinfo.$(OBJEXT - m_sigframe/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-sigframe-mips32-linux.$(OBJEXT) \ - m_sigframe/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-sigframe-mips64-linux.$(OBJEXT) \ - m_sigframe/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-sigframe-nanomips-linux.$(OBJEXT) \ -+ m_sigframe/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-sigframe-loongarch64-linux.$(OBJEXT) \ - m_sigframe/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-sigframe-x86-darwin.$(OBJEXT) \ - m_sigframe/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-sigframe-amd64-darwin.$(OBJEXT) \ - m_sigframe/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-sigframe-solaris.$(OBJEXT) \ -@@ -501,6 +509,7 @@ am__objects_1 = libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-m_addrinfo.$(OBJEXT - m_syswrap/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syscall-mips32-linux.$(OBJEXT) \ - m_syswrap/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syscall-mips64-linux.$(OBJEXT) \ - m_syswrap/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syscall-nanomips-linux.$(OBJEXT) \ -+ m_syswrap/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syscall-loongarch64-linux.$(OBJEXT) \ - m_syswrap/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syscall-x86-freebsd.$(OBJEXT) \ - m_syswrap/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syscall-amd64-freebsd.$(OBJEXT) \ - m_syswrap/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syscall-x86-darwin.$(OBJEXT) \ -@@ -526,6 +535,7 @@ am__objects_1 = libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-m_addrinfo.$(OBJEXT - m_syswrap/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syswrap-mips32-linux.$(OBJEXT) \ - m_syswrap/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syswrap-mips64-linux.$(OBJEXT) \ - m_syswrap/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syswrap-nanomips-linux.$(OBJEXT) \ -+ m_syswrap/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syswrap-loongarch64-linux.$(OBJEXT) \ - m_syswrap/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syswrap-x86-darwin.$(OBJEXT) \ - m_syswrap/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syswrap-amd64-darwin.$(OBJEXT) \ - m_syswrap/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syswrap-xen.$(OBJEXT) \ -@@ -587,6 +597,7 @@ am__libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_SOURCES_DIST = \ - m_dispatch/dispatch-mips32-linux.S \ - m_dispatch/dispatch-mips64-linux.S \ - m_dispatch/dispatch-nanomips-linux.S \ -+ m_dispatch/dispatch-loongarch64-linux.S \ - m_dispatch/dispatch-x86-freebsd.S \ - m_dispatch/dispatch-amd64-freebsd.S \ - m_dispatch/dispatch-x86-darwin.S \ -@@ -605,7 +616,8 @@ am__libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_SOURCES_DIST = \ - m_gdbserver/valgrind-low-s390x.c \ - m_gdbserver/valgrind-low-mips32.c \ - m_gdbserver/valgrind-low-mips64.c \ -- m_gdbserver/valgrind-low-nanomips.c m_gdbserver/version.c \ -+ m_gdbserver/valgrind-low-nanomips.c \ -+ m_gdbserver/valgrind-low-loongarch64.c m_gdbserver/version.c \ - m_initimg/initimg-linux.c m_initimg/initimg-freebsd.c \ - m_initimg/initimg-darwin.c m_initimg/initimg-solaris.c \ - m_mach/mach_basics.c m_mach/mach_msg.c \ -@@ -626,6 +638,7 @@ am__libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_SOURCES_DIST = \ - m_sigframe/sigframe-mips32-linux.c \ - m_sigframe/sigframe-mips64-linux.c \ - m_sigframe/sigframe-nanomips-linux.c \ -+ m_sigframe/sigframe-loongarch64-linux.c \ - m_sigframe/sigframe-x86-darwin.c \ - m_sigframe/sigframe-amd64-darwin.c \ - m_sigframe/sigframe-solaris.c m_syswrap/syscall-x86-linux.S \ -@@ -638,6 +651,7 @@ am__libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_SOURCES_DIST = \ - m_syswrap/syscall-mips32-linux.S \ - m_syswrap/syscall-mips64-linux.S \ - m_syswrap/syscall-nanomips-linux.S \ -+ m_syswrap/syscall-loongarch64-linux.S \ - m_syswrap/syscall-x86-freebsd.S \ - m_syswrap/syscall-amd64-freebsd.S \ - m_syswrap/syscall-x86-darwin.S \ -@@ -657,6 +671,7 @@ am__libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_SOURCES_DIST = \ - m_syswrap/syswrap-mips32-linux.c \ - m_syswrap/syswrap-mips64-linux.c \ - m_syswrap/syswrap-nanomips-linux.c \ -+ m_syswrap/syswrap-loongarch64-linux.c \ - m_syswrap/syswrap-x86-darwin.c \ - m_syswrap/syswrap-amd64-darwin.c m_syswrap/syswrap-xen.c \ - m_syswrap/syswrap-x86-solaris.c \ -@@ -743,6 +758,7 @@ am__objects_7 = libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-m_addrinfo.$(OBJEXT - m_dispatch/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-dispatch-mips32-linux.$(OBJEXT) \ - m_dispatch/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-dispatch-mips64-linux.$(OBJEXT) \ - m_dispatch/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-dispatch-nanomips-linux.$(OBJEXT) \ -+ m_dispatch/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-dispatch-loongarch64-linux.$(OBJEXT) \ - m_dispatch/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-dispatch-x86-freebsd.$(OBJEXT) \ - m_dispatch/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-dispatch-amd64-freebsd.$(OBJEXT) \ - m_dispatch/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-dispatch-x86-darwin.$(OBJEXT) \ -@@ -766,6 +782,7 @@ am__objects_7 = libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-m_addrinfo.$(OBJEXT - m_gdbserver/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-valgrind-low-mips32.$(OBJEXT) \ - m_gdbserver/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-valgrind-low-mips64.$(OBJEXT) \ - m_gdbserver/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-valgrind-low-nanomips.$(OBJEXT) \ -+ m_gdbserver/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-valgrind-low-loongarch64.$(OBJEXT) \ - m_gdbserver/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-version.$(OBJEXT) \ - m_initimg/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-initimg-linux.$(OBJEXT) \ - m_initimg/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-initimg-freebsd.$(OBJEXT) \ -@@ -793,6 +810,7 @@ am__objects_7 = libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-m_addrinfo.$(OBJEXT - m_sigframe/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-sigframe-mips32-linux.$(OBJEXT) \ - m_sigframe/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-sigframe-mips64-linux.$(OBJEXT) \ - m_sigframe/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-sigframe-nanomips-linux.$(OBJEXT) \ -+ m_sigframe/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-sigframe-loongarch64-linux.$(OBJEXT) \ - m_sigframe/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-sigframe-x86-darwin.$(OBJEXT) \ - m_sigframe/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-sigframe-amd64-darwin.$(OBJEXT) \ - m_sigframe/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-sigframe-solaris.$(OBJEXT) \ -@@ -807,6 +825,7 @@ am__objects_7 = libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-m_addrinfo.$(OBJEXT - m_syswrap/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syscall-mips32-linux.$(OBJEXT) \ - m_syswrap/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syscall-mips64-linux.$(OBJEXT) \ - m_syswrap/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syscall-nanomips-linux.$(OBJEXT) \ -+ m_syswrap/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syscall-loongarch64-linux.$(OBJEXT) \ - m_syswrap/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syscall-x86-freebsd.$(OBJEXT) \ - m_syswrap/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syscall-amd64-freebsd.$(OBJEXT) \ - m_syswrap/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syscall-x86-darwin.$(OBJEXT) \ -@@ -832,6 +851,7 @@ am__objects_7 = libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-m_addrinfo.$(OBJEXT - m_syswrap/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syswrap-mips32-linux.$(OBJEXT) \ - m_syswrap/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syswrap-mips64-linux.$(OBJEXT) \ - m_syswrap/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syswrap-nanomips-linux.$(OBJEXT) \ -+ m_syswrap/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syswrap-loongarch64-linux.$(OBJEXT) \ - m_syswrap/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syswrap-x86-darwin.$(OBJEXT) \ - m_syswrap/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syswrap-amd64-darwin.$(OBJEXT) \ - m_syswrap/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syswrap-xen.$(OBJEXT) \ -@@ -1133,6 +1153,7 @@ am__depfiles_remade = ./$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-m - m_dispatch/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-dispatch-amd64-solaris.Po \ - m_dispatch/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-dispatch-arm-linux.Po \ - m_dispatch/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-dispatch-arm64-linux.Po \ -+ m_dispatch/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-dispatch-loongarch64-linux.Po \ - m_dispatch/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-dispatch-mips32-linux.Po \ - m_dispatch/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-dispatch-mips64-linux.Po \ - m_dispatch/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-dispatch-nanomips-linux.Po \ -@@ -1150,6 +1171,7 @@ am__depfiles_remade = ./$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-m - m_dispatch/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-dispatch-amd64-solaris.Po \ - m_dispatch/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-dispatch-arm-linux.Po \ - m_dispatch/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-dispatch-arm64-linux.Po \ -+ m_dispatch/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-dispatch-loongarch64-linux.Po \ - m_dispatch/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-dispatch-mips32-linux.Po \ - m_dispatch/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-dispatch-mips64-linux.Po \ - m_dispatch/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-dispatch-nanomips-linux.Po \ -@@ -1171,6 +1193,7 @@ am__depfiles_remade = ./$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-m - m_gdbserver/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-valgrind-low-amd64.Po \ - m_gdbserver/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-valgrind-low-arm.Po \ - m_gdbserver/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-valgrind-low-arm64.Po \ -+ m_gdbserver/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-valgrind-low-loongarch64.Po \ - m_gdbserver/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-valgrind-low-mips32.Po \ - m_gdbserver/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-valgrind-low-mips64.Po \ - m_gdbserver/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-valgrind-low-nanomips.Po \ -@@ -1189,6 +1212,7 @@ am__depfiles_remade = ./$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-m - m_gdbserver/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-valgrind-low-amd64.Po \ - m_gdbserver/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-valgrind-low-arm.Po \ - m_gdbserver/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-valgrind-low-arm64.Po \ -+ m_gdbserver/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-valgrind-low-loongarch64.Po \ - m_gdbserver/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-valgrind-low-mips32.Po \ - m_gdbserver/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-valgrind-low-mips64.Po \ - m_gdbserver/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-valgrind-low-nanomips.Po \ -@@ -1243,6 +1267,7 @@ am__depfiles_remade = ./$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-m - m_sigframe/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-sigframe-arm-linux.Po \ - m_sigframe/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-sigframe-arm64-linux.Po \ - m_sigframe/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-sigframe-common.Po \ -+ m_sigframe/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-sigframe-loongarch64-linux.Po \ - m_sigframe/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-sigframe-mips32-linux.Po \ - m_sigframe/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-sigframe-mips64-linux.Po \ - m_sigframe/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-sigframe-nanomips-linux.Po \ -@@ -1259,6 +1284,7 @@ am__depfiles_remade = ./$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-m - m_sigframe/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-sigframe-arm-linux.Po \ - m_sigframe/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-sigframe-arm64-linux.Po \ - m_sigframe/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-sigframe-common.Po \ -+ m_sigframe/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-sigframe-loongarch64-linux.Po \ - m_sigframe/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-sigframe-mips32-linux.Po \ - m_sigframe/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-sigframe-mips64-linux.Po \ - m_sigframe/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-sigframe-nanomips-linux.Po \ -@@ -1275,6 +1301,7 @@ am__depfiles_remade = ./$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-m - m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syscall-amd64-solaris.Po \ - m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syscall-arm-linux.Po \ - m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syscall-arm64-linux.Po \ -+ m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syscall-loongarch64-linux.Po \ - m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syscall-mips32-linux.Po \ - m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syscall-mips64-linux.Po \ - m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syscall-nanomips-linux.Po \ -@@ -1297,6 +1324,7 @@ am__depfiles_remade = ./$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-m - m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syswrap-generic.Po \ - m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syswrap-linux-variants.Po \ - m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syswrap-linux.Po \ -+ m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syswrap-loongarch64-linux.Po \ - m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syswrap-main.Po \ - m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syswrap-mips32-linux.Po \ - m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syswrap-mips64-linux.Po \ -@@ -1316,6 +1344,7 @@ am__depfiles_remade = ./$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-m - m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syscall-amd64-solaris.Po \ - m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syscall-arm-linux.Po \ - m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syscall-arm64-linux.Po \ -+ m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syscall-loongarch64-linux.Po \ - m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syscall-mips32-linux.Po \ - m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syscall-mips64-linux.Po \ - m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syscall-nanomips-linux.Po \ -@@ -1338,6 +1367,7 @@ am__depfiles_remade = ./$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-m - m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syswrap-generic.Po \ - m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syswrap-linux-variants.Po \ - m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syswrap-linux.Po \ -+ m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syswrap-loongarch64-linux.Po \ - m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syswrap-main.Po \ - m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syswrap-mips32-linux.Po \ - m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syswrap-mips64-linux.Po \ -@@ -1818,6 +1848,12 @@ AM_CFLAGS_PSO_MIPS64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ - $(AM_CFLAGS_PSO_BASE) - - AM_CCASFLAGS_MIPS64_LINUX = @FLAG_M64@ -g -+AM_FLAG_M3264_LOONGARCH64_LINUX = @FLAG_M64@ -+AM_CFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) -+AM_CFLAGS_PSO_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ -+ $(AM_CFLAGS_PSO_BASE) -+ -+AM_CCASFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ -g - AM_FLAG_M3264_X86_SOLARIS = @FLAG_M32@ - AM_CFLAGS_X86_SOLARIS = @FLAG_M32@ @PREFERRED_STACK_BOUNDARY_2@ \ - $(AM_CFLAGS_BASE) -fomit-frame-pointer @SOLARIS_UNDEF_LARGESOURCE@ -@@ -1865,6 +1901,7 @@ PRELOAD_LDFLAGS_S390X_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ - PRELOAD_LDFLAGS_MIPS32_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ - PRELOAD_LDFLAGS_NANOMIPS_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ - PRELOAD_LDFLAGS_MIPS64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ -+PRELOAD_LDFLAGS_LOONGARCH64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ - PRELOAD_LDFLAGS_X86_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M32@ - PRELOAD_LDFLAGS_AMD64_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M64@ - -@@ -2144,6 +2181,7 @@ COREGRIND_SOURCES_COMMON = \ - m_dispatch/dispatch-mips32-linux.S \ - m_dispatch/dispatch-mips64-linux.S \ - m_dispatch/dispatch-nanomips-linux.S \ -+ m_dispatch/dispatch-loongarch64-linux.S \ - m_dispatch/dispatch-x86-freebsd.S \ - m_dispatch/dispatch-amd64-freebsd.S \ - m_dispatch/dispatch-x86-darwin.S \ -@@ -2167,6 +2205,7 @@ COREGRIND_SOURCES_COMMON = \ - m_gdbserver/valgrind-low-mips32.c \ - m_gdbserver/valgrind-low-mips64.c \ - m_gdbserver/valgrind-low-nanomips.c \ -+ m_gdbserver/valgrind-low-loongarch64.c \ - m_gdbserver/version.c \ - m_initimg/initimg-linux.c \ - m_initimg/initimg-freebsd.c \ -@@ -2194,6 +2233,7 @@ COREGRIND_SOURCES_COMMON = \ - m_sigframe/sigframe-mips32-linux.c \ - m_sigframe/sigframe-mips64-linux.c \ - m_sigframe/sigframe-nanomips-linux.c \ -+ m_sigframe/sigframe-loongarch64-linux.c \ - m_sigframe/sigframe-x86-darwin.c \ - m_sigframe/sigframe-amd64-darwin.c \ - m_sigframe/sigframe-solaris.c \ -@@ -2208,6 +2248,7 @@ COREGRIND_SOURCES_COMMON = \ - m_syswrap/syscall-mips32-linux.S \ - m_syswrap/syscall-mips64-linux.S \ - m_syswrap/syscall-nanomips-linux.S \ -+ m_syswrap/syscall-loongarch64-linux.S \ - m_syswrap/syscall-x86-freebsd.S \ - m_syswrap/syscall-amd64-freebsd.S \ - m_syswrap/syscall-x86-darwin.S \ -@@ -2233,6 +2274,7 @@ COREGRIND_SOURCES_COMMON = \ - m_syswrap/syswrap-mips32-linux.c \ - m_syswrap/syswrap-mips64-linux.c \ - m_syswrap/syswrap-nanomips-linux.c \ -+ m_syswrap/syswrap-loongarch64-linux.c \ - m_syswrap/syswrap-x86-darwin.c \ - m_syswrap/syswrap-amd64-darwin.c \ - m_syswrap/syswrap-xen.c \ -@@ -2487,7 +2529,15 @@ GDBSERVER_XML_FILES = \ - m_gdbserver/mips64-linux-valgrind.xml \ - m_gdbserver/mips64-fpu-valgrind-s1.xml \ - m_gdbserver/mips64-fpu-valgrind-s2.xml \ -- m_gdbserver/mips64-fpu.xml -+ m_gdbserver/mips64-fpu.xml \ -+ m_gdbserver/loongarch-base64.xml \ -+ m_gdbserver/loongarch-fpu64.xml \ -+ m_gdbserver/loongarch64-linux.xml \ -+ m_gdbserver/loongarch-base64-valgrind-s1.xml \ -+ m_gdbserver/loongarch-base64-valgrind-s2.xml \ -+ m_gdbserver/loongarch-fpu64-valgrind-s1.xml \ -+ m_gdbserver/loongarch-fpu64-valgrind-s2.xml \ -+ m_gdbserver/loongarch64-linux-valgrind.xml - - - # so as to make sure these get copied into the install tree -@@ -2762,6 +2812,9 @@ m_dispatch/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-dispatch-mips64-linux.$( - m_dispatch/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-dispatch-nanomips-linux.$(OBJEXT): \ - m_dispatch/$(am__dirstamp) \ - m_dispatch/$(DEPDIR)/$(am__dirstamp) -+m_dispatch/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-dispatch-loongarch64-linux.$(OBJEXT): \ -+ m_dispatch/$(am__dirstamp) \ -+ m_dispatch/$(DEPDIR)/$(am__dirstamp) - m_dispatch/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-dispatch-x86-freebsd.$(OBJEXT): \ - m_dispatch/$(am__dirstamp) \ - m_dispatch/$(DEPDIR)/$(am__dirstamp) -@@ -2837,6 +2890,9 @@ m_gdbserver/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-valgrind-low-mips64.$(O - m_gdbserver/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-valgrind-low-nanomips.$(OBJEXT): \ - m_gdbserver/$(am__dirstamp) \ - m_gdbserver/$(DEPDIR)/$(am__dirstamp) -+m_gdbserver/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-valgrind-low-loongarch64.$(OBJEXT): \ -+ m_gdbserver/$(am__dirstamp) \ -+ m_gdbserver/$(DEPDIR)/$(am__dirstamp) - m_gdbserver/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-version.$(OBJEXT): \ - m_gdbserver/$(am__dirstamp) \ - m_gdbserver/$(DEPDIR)/$(am__dirstamp) -@@ -2940,6 +2996,9 @@ m_sigframe/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-sigframe-mips64-linux.$( - m_sigframe/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-sigframe-nanomips-linux.$(OBJEXT): \ - m_sigframe/$(am__dirstamp) \ - m_sigframe/$(DEPDIR)/$(am__dirstamp) -+m_sigframe/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-sigframe-loongarch64-linux.$(OBJEXT): \ -+ m_sigframe/$(am__dirstamp) \ -+ m_sigframe/$(DEPDIR)/$(am__dirstamp) - m_sigframe/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-sigframe-x86-darwin.$(OBJEXT): \ - m_sigframe/$(am__dirstamp) \ - m_sigframe/$(DEPDIR)/$(am__dirstamp) -@@ -2977,6 +3036,8 @@ m_syswrap/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syscall-mips64-linux.$(OB - m_syswrap/$(am__dirstamp) m_syswrap/$(DEPDIR)/$(am__dirstamp) - m_syswrap/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syscall-nanomips-linux.$(OBJEXT): \ - m_syswrap/$(am__dirstamp) m_syswrap/$(DEPDIR)/$(am__dirstamp) -+m_syswrap/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syscall-loongarch64-linux.$(OBJEXT): \ -+ m_syswrap/$(am__dirstamp) m_syswrap/$(DEPDIR)/$(am__dirstamp) - m_syswrap/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syscall-x86-freebsd.$(OBJEXT): \ - m_syswrap/$(am__dirstamp) m_syswrap/$(DEPDIR)/$(am__dirstamp) - m_syswrap/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syscall-amd64-freebsd.$(OBJEXT): \ -@@ -3027,6 +3088,8 @@ m_syswrap/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syswrap-mips64-linux.$(OB - m_syswrap/$(am__dirstamp) m_syswrap/$(DEPDIR)/$(am__dirstamp) - m_syswrap/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syswrap-nanomips-linux.$(OBJEXT): \ - m_syswrap/$(am__dirstamp) m_syswrap/$(DEPDIR)/$(am__dirstamp) -+m_syswrap/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syswrap-loongarch64-linux.$(OBJEXT): \ -+ m_syswrap/$(am__dirstamp) m_syswrap/$(DEPDIR)/$(am__dirstamp) - m_syswrap/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syswrap-x86-darwin.$(OBJEXT): \ - m_syswrap/$(am__dirstamp) m_syswrap/$(DEPDIR)/$(am__dirstamp) - m_syswrap/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syswrap-amd64-darwin.$(OBJEXT): \ -@@ -3181,6 +3244,9 @@ m_dispatch/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-dispatch-mips64-linux.$( - m_dispatch/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-dispatch-nanomips-linux.$(OBJEXT): \ - m_dispatch/$(am__dirstamp) \ - m_dispatch/$(DEPDIR)/$(am__dirstamp) -+m_dispatch/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-dispatch-loongarch64-linux.$(OBJEXT): \ -+ m_dispatch/$(am__dirstamp) \ -+ m_dispatch/$(DEPDIR)/$(am__dirstamp) - m_dispatch/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-dispatch-x86-freebsd.$(OBJEXT): \ - m_dispatch/$(am__dirstamp) \ - m_dispatch/$(DEPDIR)/$(am__dirstamp) -@@ -3250,6 +3316,9 @@ m_gdbserver/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-valgrind-low-mips64.$(O - m_gdbserver/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-valgrind-low-nanomips.$(OBJEXT): \ - m_gdbserver/$(am__dirstamp) \ - m_gdbserver/$(DEPDIR)/$(am__dirstamp) -+m_gdbserver/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-valgrind-low-loongarch64.$(OBJEXT): \ -+ m_gdbserver/$(am__dirstamp) \ -+ m_gdbserver/$(DEPDIR)/$(am__dirstamp) - m_gdbserver/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-version.$(OBJEXT): \ - m_gdbserver/$(am__dirstamp) \ - m_gdbserver/$(DEPDIR)/$(am__dirstamp) -@@ -3323,6 +3392,9 @@ m_sigframe/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-sigframe-mips64-linux.$( - m_sigframe/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-sigframe-nanomips-linux.$(OBJEXT): \ - m_sigframe/$(am__dirstamp) \ - m_sigframe/$(DEPDIR)/$(am__dirstamp) -+m_sigframe/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-sigframe-loongarch64-linux.$(OBJEXT): \ -+ m_sigframe/$(am__dirstamp) \ -+ m_sigframe/$(DEPDIR)/$(am__dirstamp) - m_sigframe/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-sigframe-x86-darwin.$(OBJEXT): \ - m_sigframe/$(am__dirstamp) \ - m_sigframe/$(DEPDIR)/$(am__dirstamp) -@@ -3354,6 +3426,8 @@ m_syswrap/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syscall-mips64-linux.$(OB - m_syswrap/$(am__dirstamp) m_syswrap/$(DEPDIR)/$(am__dirstamp) - m_syswrap/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syscall-nanomips-linux.$(OBJEXT): \ - m_syswrap/$(am__dirstamp) m_syswrap/$(DEPDIR)/$(am__dirstamp) -+m_syswrap/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syscall-loongarch64-linux.$(OBJEXT): \ -+ m_syswrap/$(am__dirstamp) m_syswrap/$(DEPDIR)/$(am__dirstamp) - m_syswrap/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syscall-x86-freebsd.$(OBJEXT): \ - m_syswrap/$(am__dirstamp) m_syswrap/$(DEPDIR)/$(am__dirstamp) - m_syswrap/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syscall-amd64-freebsd.$(OBJEXT): \ -@@ -3404,6 +3478,8 @@ m_syswrap/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syswrap-mips64-linux.$(OB - m_syswrap/$(am__dirstamp) m_syswrap/$(DEPDIR)/$(am__dirstamp) - m_syswrap/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syswrap-nanomips-linux.$(OBJEXT): \ - m_syswrap/$(am__dirstamp) m_syswrap/$(DEPDIR)/$(am__dirstamp) -+m_syswrap/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syswrap-loongarch64-linux.$(OBJEXT): \ -+ m_syswrap/$(am__dirstamp) m_syswrap/$(DEPDIR)/$(am__dirstamp) - m_syswrap/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syswrap-x86-darwin.$(OBJEXT): \ - m_syswrap/$(am__dirstamp) m_syswrap/$(DEPDIR)/$(am__dirstamp) - m_syswrap/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syswrap-amd64-darwin.$(OBJEXT): \ -@@ -3681,6 +3757,7 @@ distclean-compile: - @AMDEP_TRUE@@am__include@ @am__quote@m_dispatch/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-dispatch-amd64-solaris.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@m_dispatch/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-dispatch-arm-linux.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@m_dispatch/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-dispatch-arm64-linux.Po@am__quote@ # am--include-marker -+@AMDEP_TRUE@@am__include@ @am__quote@m_dispatch/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-dispatch-loongarch64-linux.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@m_dispatch/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-dispatch-mips32-linux.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@m_dispatch/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-dispatch-mips64-linux.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@m_dispatch/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-dispatch-nanomips-linux.Po@am__quote@ # am--include-marker -@@ -3698,6 +3775,7 @@ distclean-compile: - @AMDEP_TRUE@@am__include@ @am__quote@m_dispatch/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-dispatch-amd64-solaris.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@m_dispatch/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-dispatch-arm-linux.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@m_dispatch/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-dispatch-arm64-linux.Po@am__quote@ # am--include-marker -+@AMDEP_TRUE@@am__include@ @am__quote@m_dispatch/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-dispatch-loongarch64-linux.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@m_dispatch/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-dispatch-mips32-linux.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@m_dispatch/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-dispatch-mips64-linux.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@m_dispatch/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-dispatch-nanomips-linux.Po@am__quote@ # am--include-marker -@@ -3719,6 +3797,7 @@ distclean-compile: - @AMDEP_TRUE@@am__include@ @am__quote@m_gdbserver/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-valgrind-low-amd64.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@m_gdbserver/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-valgrind-low-arm.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@m_gdbserver/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-valgrind-low-arm64.Po@am__quote@ # am--include-marker -+@AMDEP_TRUE@@am__include@ @am__quote@m_gdbserver/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-valgrind-low-loongarch64.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@m_gdbserver/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-valgrind-low-mips32.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@m_gdbserver/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-valgrind-low-mips64.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@m_gdbserver/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-valgrind-low-nanomips.Po@am__quote@ # am--include-marker -@@ -3737,6 +3816,7 @@ distclean-compile: - @AMDEP_TRUE@@am__include@ @am__quote@m_gdbserver/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-valgrind-low-amd64.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@m_gdbserver/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-valgrind-low-arm.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@m_gdbserver/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-valgrind-low-arm64.Po@am__quote@ # am--include-marker -+@AMDEP_TRUE@@am__include@ @am__quote@m_gdbserver/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-valgrind-low-loongarch64.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@m_gdbserver/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-valgrind-low-mips32.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@m_gdbserver/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-valgrind-low-mips64.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@m_gdbserver/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-valgrind-low-nanomips.Po@am__quote@ # am--include-marker -@@ -3791,6 +3871,7 @@ distclean-compile: - @AMDEP_TRUE@@am__include@ @am__quote@m_sigframe/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-sigframe-arm-linux.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@m_sigframe/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-sigframe-arm64-linux.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@m_sigframe/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-sigframe-common.Po@am__quote@ # am--include-marker -+@AMDEP_TRUE@@am__include@ @am__quote@m_sigframe/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-sigframe-loongarch64-linux.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@m_sigframe/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-sigframe-mips32-linux.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@m_sigframe/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-sigframe-mips64-linux.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@m_sigframe/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-sigframe-nanomips-linux.Po@am__quote@ # am--include-marker -@@ -3807,6 +3888,7 @@ distclean-compile: - @AMDEP_TRUE@@am__include@ @am__quote@m_sigframe/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-sigframe-arm-linux.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@m_sigframe/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-sigframe-arm64-linux.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@m_sigframe/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-sigframe-common.Po@am__quote@ # am--include-marker -+@AMDEP_TRUE@@am__include@ @am__quote@m_sigframe/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-sigframe-loongarch64-linux.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@m_sigframe/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-sigframe-mips32-linux.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@m_sigframe/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-sigframe-mips64-linux.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@m_sigframe/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-sigframe-nanomips-linux.Po@am__quote@ # am--include-marker -@@ -3823,6 +3905,7 @@ distclean-compile: - @AMDEP_TRUE@@am__include@ @am__quote@m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syscall-amd64-solaris.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syscall-arm-linux.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syscall-arm64-linux.Po@am__quote@ # am--include-marker -+@AMDEP_TRUE@@am__include@ @am__quote@m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syscall-loongarch64-linux.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syscall-mips32-linux.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syscall-mips64-linux.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syscall-nanomips-linux.Po@am__quote@ # am--include-marker -@@ -3845,6 +3928,7 @@ distclean-compile: - @AMDEP_TRUE@@am__include@ @am__quote@m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syswrap-generic.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syswrap-linux-variants.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syswrap-linux.Po@am__quote@ # am--include-marker -+@AMDEP_TRUE@@am__include@ @am__quote@m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syswrap-loongarch64-linux.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syswrap-main.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syswrap-mips32-linux.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syswrap-mips64-linux.Po@am__quote@ # am--include-marker -@@ -3864,6 +3948,7 @@ distclean-compile: - @AMDEP_TRUE@@am__include@ @am__quote@m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syscall-amd64-solaris.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syscall-arm-linux.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syscall-arm64-linux.Po@am__quote@ # am--include-marker -+@AMDEP_TRUE@@am__include@ @am__quote@m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syscall-loongarch64-linux.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syscall-mips32-linux.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syscall-mips64-linux.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syscall-nanomips-linux.Po@am__quote@ # am--include-marker -@@ -3886,6 +3971,7 @@ distclean-compile: - @AMDEP_TRUE@@am__include@ @am__quote@m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syswrap-generic.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syswrap-linux-variants.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syswrap-linux.Po@am__quote@ # am--include-marker -+@AMDEP_TRUE@@am__include@ @am__quote@m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syswrap-loongarch64-linux.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syswrap-main.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syswrap-mips32-linux.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syswrap-mips64-linux.Po@am__quote@ # am--include-marker -@@ -4112,6 +4198,20 @@ m_dispatch/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-dispatch-nanomips-linux. - @AMDEP_TRUE@@am__fastdepCCAS_FALSE@ DEPDIR=$(DEPDIR) $(CCASDEPMODE) $(depcomp) @AMDEPBACKSLASH@ - @am__fastdepCCAS_FALSE@ $(AM_V_CPPAS@am__nodep@)$(CCAS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CCASFLAGS) $(CCASFLAGS) -c -o m_dispatch/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-dispatch-nanomips-linux.obj `if test -f 'm_dispatch/dispatch-nanomips-linux.S'; then $(CYGPATH_W) 'm_dispatch/dispatch-nanomips-linux.S'; else $(CYGPATH_W) '$(srcdir)/m_dispatch/dispatch-nanomips-linux.S'; fi` - -+m_dispatch/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-dispatch-loongarch64-linux.o: m_dispatch/dispatch-loongarch64-linux.S -+@am__fastdepCCAS_TRUE@ $(AM_V_CPPAS)$(CCAS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CCASFLAGS) $(CCASFLAGS) -MT m_dispatch/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-dispatch-loongarch64-linux.o -MD -MP -MF m_dispatch/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-dispatch-loongarch64-linux.Tpo -c -o m_dispatch/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-dispatch-loongarch64-linux.o `test -f 'm_dispatch/dispatch-loongarch64-linux.S' || echo '$(srcdir)/'`m_dispatch/dispatch-loongarch64-linux.S -+@am__fastdepCCAS_TRUE@ $(AM_V_at)$(am__mv) m_dispatch/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-dispatch-loongarch64-linux.Tpo m_dispatch/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-dispatch-loongarch64-linux.Po -+@AMDEP_TRUE@@am__fastdepCCAS_FALSE@ $(AM_V_CPPAS)source='m_dispatch/dispatch-loongarch64-linux.S' object='m_dispatch/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-dispatch-loongarch64-linux.o' libtool=no @AMDEPBACKSLASH@ -+@AMDEP_TRUE@@am__fastdepCCAS_FALSE@ DEPDIR=$(DEPDIR) $(CCASDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -+@am__fastdepCCAS_FALSE@ $(AM_V_CPPAS@am__nodep@)$(CCAS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CCASFLAGS) $(CCASFLAGS) -c -o m_dispatch/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-dispatch-loongarch64-linux.o `test -f 'm_dispatch/dispatch-loongarch64-linux.S' || echo '$(srcdir)/'`m_dispatch/dispatch-loongarch64-linux.S -+ -+m_dispatch/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-dispatch-loongarch64-linux.obj: m_dispatch/dispatch-loongarch64-linux.S -+@am__fastdepCCAS_TRUE@ $(AM_V_CPPAS)$(CCAS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CCASFLAGS) $(CCASFLAGS) -MT m_dispatch/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-dispatch-loongarch64-linux.obj -MD -MP -MF m_dispatch/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-dispatch-loongarch64-linux.Tpo -c -o m_dispatch/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-dispatch-loongarch64-linux.obj `if test -f 'm_dispatch/dispatch-loongarch64-linux.S'; then $(CYGPATH_W) 'm_dispatch/dispatch-loongarch64-linux.S'; else $(CYGPATH_W) '$(srcdir)/m_dispatch/dispatch-loongarch64-linux.S'; fi` -+@am__fastdepCCAS_TRUE@ $(AM_V_at)$(am__mv) m_dispatch/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-dispatch-loongarch64-linux.Tpo m_dispatch/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-dispatch-loongarch64-linux.Po -+@AMDEP_TRUE@@am__fastdepCCAS_FALSE@ $(AM_V_CPPAS)source='m_dispatch/dispatch-loongarch64-linux.S' object='m_dispatch/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-dispatch-loongarch64-linux.obj' libtool=no @AMDEPBACKSLASH@ -+@AMDEP_TRUE@@am__fastdepCCAS_FALSE@ DEPDIR=$(DEPDIR) $(CCASDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -+@am__fastdepCCAS_FALSE@ $(AM_V_CPPAS@am__nodep@)$(CCAS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CCASFLAGS) $(CCASFLAGS) -c -o m_dispatch/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-dispatch-loongarch64-linux.obj `if test -f 'm_dispatch/dispatch-loongarch64-linux.S'; then $(CYGPATH_W) 'm_dispatch/dispatch-loongarch64-linux.S'; else $(CYGPATH_W) '$(srcdir)/m_dispatch/dispatch-loongarch64-linux.S'; fi` -+ - m_dispatch/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-dispatch-x86-freebsd.o: m_dispatch/dispatch-x86-freebsd.S - @am__fastdepCCAS_TRUE@ $(AM_V_CPPAS)$(CCAS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CCASFLAGS) $(CCASFLAGS) -MT m_dispatch/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-dispatch-x86-freebsd.o -MD -MP -MF m_dispatch/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-dispatch-x86-freebsd.Tpo -c -o m_dispatch/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-dispatch-x86-freebsd.o `test -f 'm_dispatch/dispatch-x86-freebsd.S' || echo '$(srcdir)/'`m_dispatch/dispatch-x86-freebsd.S - @am__fastdepCCAS_TRUE@ $(AM_V_at)$(am__mv) m_dispatch/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-dispatch-x86-freebsd.Tpo m_dispatch/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-dispatch-x86-freebsd.Po -@@ -4378,6 +4478,20 @@ m_syswrap/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syscall-nanomips-linux.ob - @AMDEP_TRUE@@am__fastdepCCAS_FALSE@ DEPDIR=$(DEPDIR) $(CCASDEPMODE) $(depcomp) @AMDEPBACKSLASH@ - @am__fastdepCCAS_FALSE@ $(AM_V_CPPAS@am__nodep@)$(CCAS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CCASFLAGS) $(CCASFLAGS) -c -o m_syswrap/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syscall-nanomips-linux.obj `if test -f 'm_syswrap/syscall-nanomips-linux.S'; then $(CYGPATH_W) 'm_syswrap/syscall-nanomips-linux.S'; else $(CYGPATH_W) '$(srcdir)/m_syswrap/syscall-nanomips-linux.S'; fi` - -+m_syswrap/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syscall-loongarch64-linux.o: m_syswrap/syscall-loongarch64-linux.S -+@am__fastdepCCAS_TRUE@ $(AM_V_CPPAS)$(CCAS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CCASFLAGS) $(CCASFLAGS) -MT m_syswrap/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syscall-loongarch64-linux.o -MD -MP -MF m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syscall-loongarch64-linux.Tpo -c -o m_syswrap/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syscall-loongarch64-linux.o `test -f 'm_syswrap/syscall-loongarch64-linux.S' || echo '$(srcdir)/'`m_syswrap/syscall-loongarch64-linux.S -+@am__fastdepCCAS_TRUE@ $(AM_V_at)$(am__mv) m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syscall-loongarch64-linux.Tpo m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syscall-loongarch64-linux.Po -+@AMDEP_TRUE@@am__fastdepCCAS_FALSE@ $(AM_V_CPPAS)source='m_syswrap/syscall-loongarch64-linux.S' object='m_syswrap/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syscall-loongarch64-linux.o' libtool=no @AMDEPBACKSLASH@ -+@AMDEP_TRUE@@am__fastdepCCAS_FALSE@ DEPDIR=$(DEPDIR) $(CCASDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -+@am__fastdepCCAS_FALSE@ $(AM_V_CPPAS@am__nodep@)$(CCAS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CCASFLAGS) $(CCASFLAGS) -c -o m_syswrap/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syscall-loongarch64-linux.o `test -f 'm_syswrap/syscall-loongarch64-linux.S' || echo '$(srcdir)/'`m_syswrap/syscall-loongarch64-linux.S -+ -+m_syswrap/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syscall-loongarch64-linux.obj: m_syswrap/syscall-loongarch64-linux.S -+@am__fastdepCCAS_TRUE@ $(AM_V_CPPAS)$(CCAS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CCASFLAGS) $(CCASFLAGS) -MT m_syswrap/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syscall-loongarch64-linux.obj -MD -MP -MF m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syscall-loongarch64-linux.Tpo -c -o m_syswrap/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syscall-loongarch64-linux.obj `if test -f 'm_syswrap/syscall-loongarch64-linux.S'; then $(CYGPATH_W) 'm_syswrap/syscall-loongarch64-linux.S'; else $(CYGPATH_W) '$(srcdir)/m_syswrap/syscall-loongarch64-linux.S'; fi` -+@am__fastdepCCAS_TRUE@ $(AM_V_at)$(am__mv) m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syscall-loongarch64-linux.Tpo m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syscall-loongarch64-linux.Po -+@AMDEP_TRUE@@am__fastdepCCAS_FALSE@ $(AM_V_CPPAS)source='m_syswrap/syscall-loongarch64-linux.S' object='m_syswrap/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syscall-loongarch64-linux.obj' libtool=no @AMDEPBACKSLASH@ -+@AMDEP_TRUE@@am__fastdepCCAS_FALSE@ DEPDIR=$(DEPDIR) $(CCASDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -+@am__fastdepCCAS_FALSE@ $(AM_V_CPPAS@am__nodep@)$(CCAS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CCASFLAGS) $(CCASFLAGS) -c -o m_syswrap/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syscall-loongarch64-linux.obj `if test -f 'm_syswrap/syscall-loongarch64-linux.S'; then $(CYGPATH_W) 'm_syswrap/syscall-loongarch64-linux.S'; else $(CYGPATH_W) '$(srcdir)/m_syswrap/syscall-loongarch64-linux.S'; fi` -+ - m_syswrap/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syscall-x86-freebsd.o: m_syswrap/syscall-x86-freebsd.S - @am__fastdepCCAS_TRUE@ $(AM_V_CPPAS)$(CCAS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CCASFLAGS) $(CCASFLAGS) -MT m_syswrap/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syscall-x86-freebsd.o -MD -MP -MF m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syscall-x86-freebsd.Tpo -c -o m_syswrap/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syscall-x86-freebsd.o `test -f 'm_syswrap/syscall-x86-freebsd.S' || echo '$(srcdir)/'`m_syswrap/syscall-x86-freebsd.S - @am__fastdepCCAS_TRUE@ $(AM_V_at)$(am__mv) m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syscall-x86-freebsd.Tpo m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syscall-x86-freebsd.Po -@@ -4644,6 +4758,20 @@ m_dispatch/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-dispatch-nanomips-linux. - @AMDEP_TRUE@@am__fastdepCCAS_FALSE@ DEPDIR=$(DEPDIR) $(CCASDEPMODE) $(depcomp) @AMDEPBACKSLASH@ - @am__fastdepCCAS_FALSE@ $(AM_V_CPPAS@am__nodep@)$(CCAS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CCASFLAGS) $(CCASFLAGS) -c -o m_dispatch/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-dispatch-nanomips-linux.obj `if test -f 'm_dispatch/dispatch-nanomips-linux.S'; then $(CYGPATH_W) 'm_dispatch/dispatch-nanomips-linux.S'; else $(CYGPATH_W) '$(srcdir)/m_dispatch/dispatch-nanomips-linux.S'; fi` - -+m_dispatch/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-dispatch-loongarch64-linux.o: m_dispatch/dispatch-loongarch64-linux.S -+@am__fastdepCCAS_TRUE@ $(AM_V_CPPAS)$(CCAS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CCASFLAGS) $(CCASFLAGS) -MT m_dispatch/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-dispatch-loongarch64-linux.o -MD -MP -MF m_dispatch/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-dispatch-loongarch64-linux.Tpo -c -o m_dispatch/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-dispatch-loongarch64-linux.o `test -f 'm_dispatch/dispatch-loongarch64-linux.S' || echo '$(srcdir)/'`m_dispatch/dispatch-loongarch64-linux.S -+@am__fastdepCCAS_TRUE@ $(AM_V_at)$(am__mv) m_dispatch/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-dispatch-loongarch64-linux.Tpo m_dispatch/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-dispatch-loongarch64-linux.Po -+@AMDEP_TRUE@@am__fastdepCCAS_FALSE@ $(AM_V_CPPAS)source='m_dispatch/dispatch-loongarch64-linux.S' object='m_dispatch/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-dispatch-loongarch64-linux.o' libtool=no @AMDEPBACKSLASH@ -+@AMDEP_TRUE@@am__fastdepCCAS_FALSE@ DEPDIR=$(DEPDIR) $(CCASDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -+@am__fastdepCCAS_FALSE@ $(AM_V_CPPAS@am__nodep@)$(CCAS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CCASFLAGS) $(CCASFLAGS) -c -o m_dispatch/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-dispatch-loongarch64-linux.o `test -f 'm_dispatch/dispatch-loongarch64-linux.S' || echo '$(srcdir)/'`m_dispatch/dispatch-loongarch64-linux.S -+ -+m_dispatch/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-dispatch-loongarch64-linux.obj: m_dispatch/dispatch-loongarch64-linux.S -+@am__fastdepCCAS_TRUE@ $(AM_V_CPPAS)$(CCAS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CCASFLAGS) $(CCASFLAGS) -MT m_dispatch/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-dispatch-loongarch64-linux.obj -MD -MP -MF m_dispatch/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-dispatch-loongarch64-linux.Tpo -c -o m_dispatch/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-dispatch-loongarch64-linux.obj `if test -f 'm_dispatch/dispatch-loongarch64-linux.S'; then $(CYGPATH_W) 'm_dispatch/dispatch-loongarch64-linux.S'; else $(CYGPATH_W) '$(srcdir)/m_dispatch/dispatch-loongarch64-linux.S'; fi` -+@am__fastdepCCAS_TRUE@ $(AM_V_at)$(am__mv) m_dispatch/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-dispatch-loongarch64-linux.Tpo m_dispatch/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-dispatch-loongarch64-linux.Po -+@AMDEP_TRUE@@am__fastdepCCAS_FALSE@ $(AM_V_CPPAS)source='m_dispatch/dispatch-loongarch64-linux.S' object='m_dispatch/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-dispatch-loongarch64-linux.obj' libtool=no @AMDEPBACKSLASH@ -+@AMDEP_TRUE@@am__fastdepCCAS_FALSE@ DEPDIR=$(DEPDIR) $(CCASDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -+@am__fastdepCCAS_FALSE@ $(AM_V_CPPAS@am__nodep@)$(CCAS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CCASFLAGS) $(CCASFLAGS) -c -o m_dispatch/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-dispatch-loongarch64-linux.obj `if test -f 'm_dispatch/dispatch-loongarch64-linux.S'; then $(CYGPATH_W) 'm_dispatch/dispatch-loongarch64-linux.S'; else $(CYGPATH_W) '$(srcdir)/m_dispatch/dispatch-loongarch64-linux.S'; fi` -+ - m_dispatch/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-dispatch-x86-freebsd.o: m_dispatch/dispatch-x86-freebsd.S - @am__fastdepCCAS_TRUE@ $(AM_V_CPPAS)$(CCAS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CCASFLAGS) $(CCASFLAGS) -MT m_dispatch/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-dispatch-x86-freebsd.o -MD -MP -MF m_dispatch/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-dispatch-x86-freebsd.Tpo -c -o m_dispatch/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-dispatch-x86-freebsd.o `test -f 'm_dispatch/dispatch-x86-freebsd.S' || echo '$(srcdir)/'`m_dispatch/dispatch-x86-freebsd.S - @am__fastdepCCAS_TRUE@ $(AM_V_at)$(am__mv) m_dispatch/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-dispatch-x86-freebsd.Tpo m_dispatch/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-dispatch-x86-freebsd.Po -@@ -4910,6 +5038,20 @@ m_syswrap/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syscall-nanomips-linux.ob - @AMDEP_TRUE@@am__fastdepCCAS_FALSE@ DEPDIR=$(DEPDIR) $(CCASDEPMODE) $(depcomp) @AMDEPBACKSLASH@ - @am__fastdepCCAS_FALSE@ $(AM_V_CPPAS@am__nodep@)$(CCAS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CCASFLAGS) $(CCASFLAGS) -c -o m_syswrap/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syscall-nanomips-linux.obj `if test -f 'm_syswrap/syscall-nanomips-linux.S'; then $(CYGPATH_W) 'm_syswrap/syscall-nanomips-linux.S'; else $(CYGPATH_W) '$(srcdir)/m_syswrap/syscall-nanomips-linux.S'; fi` - -+m_syswrap/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syscall-loongarch64-linux.o: m_syswrap/syscall-loongarch64-linux.S -+@am__fastdepCCAS_TRUE@ $(AM_V_CPPAS)$(CCAS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CCASFLAGS) $(CCASFLAGS) -MT m_syswrap/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syscall-loongarch64-linux.o -MD -MP -MF m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syscall-loongarch64-linux.Tpo -c -o m_syswrap/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syscall-loongarch64-linux.o `test -f 'm_syswrap/syscall-loongarch64-linux.S' || echo '$(srcdir)/'`m_syswrap/syscall-loongarch64-linux.S -+@am__fastdepCCAS_TRUE@ $(AM_V_at)$(am__mv) m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syscall-loongarch64-linux.Tpo m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syscall-loongarch64-linux.Po -+@AMDEP_TRUE@@am__fastdepCCAS_FALSE@ $(AM_V_CPPAS)source='m_syswrap/syscall-loongarch64-linux.S' object='m_syswrap/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syscall-loongarch64-linux.o' libtool=no @AMDEPBACKSLASH@ -+@AMDEP_TRUE@@am__fastdepCCAS_FALSE@ DEPDIR=$(DEPDIR) $(CCASDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -+@am__fastdepCCAS_FALSE@ $(AM_V_CPPAS@am__nodep@)$(CCAS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CCASFLAGS) $(CCASFLAGS) -c -o m_syswrap/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syscall-loongarch64-linux.o `test -f 'm_syswrap/syscall-loongarch64-linux.S' || echo '$(srcdir)/'`m_syswrap/syscall-loongarch64-linux.S -+ -+m_syswrap/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syscall-loongarch64-linux.obj: m_syswrap/syscall-loongarch64-linux.S -+@am__fastdepCCAS_TRUE@ $(AM_V_CPPAS)$(CCAS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CCASFLAGS) $(CCASFLAGS) -MT m_syswrap/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syscall-loongarch64-linux.obj -MD -MP -MF m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syscall-loongarch64-linux.Tpo -c -o m_syswrap/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syscall-loongarch64-linux.obj `if test -f 'm_syswrap/syscall-loongarch64-linux.S'; then $(CYGPATH_W) 'm_syswrap/syscall-loongarch64-linux.S'; else $(CYGPATH_W) '$(srcdir)/m_syswrap/syscall-loongarch64-linux.S'; fi` -+@am__fastdepCCAS_TRUE@ $(AM_V_at)$(am__mv) m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syscall-loongarch64-linux.Tpo m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syscall-loongarch64-linux.Po -+@AMDEP_TRUE@@am__fastdepCCAS_FALSE@ $(AM_V_CPPAS)source='m_syswrap/syscall-loongarch64-linux.S' object='m_syswrap/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syscall-loongarch64-linux.obj' libtool=no @AMDEPBACKSLASH@ -+@AMDEP_TRUE@@am__fastdepCCAS_FALSE@ DEPDIR=$(DEPDIR) $(CCASDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -+@am__fastdepCCAS_FALSE@ $(AM_V_CPPAS@am__nodep@)$(CCAS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CCASFLAGS) $(CCASFLAGS) -c -o m_syswrap/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syscall-loongarch64-linux.obj `if test -f 'm_syswrap/syscall-loongarch64-linux.S'; then $(CYGPATH_W) 'm_syswrap/syscall-loongarch64-linux.S'; else $(CYGPATH_W) '$(srcdir)/m_syswrap/syscall-loongarch64-linux.S'; fi` -+ - m_syswrap/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syscall-x86-freebsd.o: m_syswrap/syscall-x86-freebsd.S - @am__fastdepCCAS_TRUE@ $(AM_V_CPPAS)$(CCAS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CCASFLAGS) $(CCASFLAGS) -MT m_syswrap/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syscall-x86-freebsd.o -MD -MP -MF m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syscall-x86-freebsd.Tpo -c -o m_syswrap/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syscall-x86-freebsd.o `test -f 'm_syswrap/syscall-x86-freebsd.S' || echo '$(srcdir)/'`m_syswrap/syscall-x86-freebsd.S - @am__fastdepCCAS_TRUE@ $(AM_V_at)$(am__mv) m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syscall-x86-freebsd.Tpo m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syscall-x86-freebsd.Po -@@ -6200,6 +6342,20 @@ m_gdbserver/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-valgrind-low-nanomips.o - @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ - @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -c -o m_gdbserver/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-valgrind-low-nanomips.obj `if test -f 'm_gdbserver/valgrind-low-nanomips.c'; then $(CYGPATH_W) 'm_gdbserver/valgrind-low-nanomips.c'; else $(CYGPATH_W) '$(srcdir)/m_gdbserver/valgrind-low-nanomips.c'; fi` - -+m_gdbserver/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-valgrind-low-loongarch64.o: m_gdbserver/valgrind-low-loongarch64.c -+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -MT m_gdbserver/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-valgrind-low-loongarch64.o -MD -MP -MF m_gdbserver/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-valgrind-low-loongarch64.Tpo -c -o m_gdbserver/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-valgrind-low-loongarch64.o `test -f 'm_gdbserver/valgrind-low-loongarch64.c' || echo '$(srcdir)/'`m_gdbserver/valgrind-low-loongarch64.c -+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) m_gdbserver/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-valgrind-low-loongarch64.Tpo m_gdbserver/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-valgrind-low-loongarch64.Po -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='m_gdbserver/valgrind-low-loongarch64.c' object='m_gdbserver/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-valgrind-low-loongarch64.o' libtool=no @AMDEPBACKSLASH@ -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -c -o m_gdbserver/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-valgrind-low-loongarch64.o `test -f 'm_gdbserver/valgrind-low-loongarch64.c' || echo '$(srcdir)/'`m_gdbserver/valgrind-low-loongarch64.c -+ -+m_gdbserver/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-valgrind-low-loongarch64.obj: m_gdbserver/valgrind-low-loongarch64.c -+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -MT m_gdbserver/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-valgrind-low-loongarch64.obj -MD -MP -MF m_gdbserver/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-valgrind-low-loongarch64.Tpo -c -o m_gdbserver/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-valgrind-low-loongarch64.obj `if test -f 'm_gdbserver/valgrind-low-loongarch64.c'; then $(CYGPATH_W) 'm_gdbserver/valgrind-low-loongarch64.c'; else $(CYGPATH_W) '$(srcdir)/m_gdbserver/valgrind-low-loongarch64.c'; fi` -+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) m_gdbserver/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-valgrind-low-loongarch64.Tpo m_gdbserver/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-valgrind-low-loongarch64.Po -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='m_gdbserver/valgrind-low-loongarch64.c' object='m_gdbserver/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-valgrind-low-loongarch64.obj' libtool=no @AMDEPBACKSLASH@ -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -c -o m_gdbserver/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-valgrind-low-loongarch64.obj `if test -f 'm_gdbserver/valgrind-low-loongarch64.c'; then $(CYGPATH_W) 'm_gdbserver/valgrind-low-loongarch64.c'; else $(CYGPATH_W) '$(srcdir)/m_gdbserver/valgrind-low-loongarch64.c'; fi` -+ - m_gdbserver/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-version.o: m_gdbserver/version.c - @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -MT m_gdbserver/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-version.o -MD -MP -MF m_gdbserver/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-version.Tpo -c -o m_gdbserver/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-version.o `test -f 'm_gdbserver/version.c' || echo '$(srcdir)/'`m_gdbserver/version.c - @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) m_gdbserver/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-version.Tpo m_gdbserver/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-version.Po -@@ -6550,6 +6706,20 @@ m_sigframe/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-sigframe-nanomips-linux. - @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ - @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -c -o m_sigframe/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-sigframe-nanomips-linux.obj `if test -f 'm_sigframe/sigframe-nanomips-linux.c'; then $(CYGPATH_W) 'm_sigframe/sigframe-nanomips-linux.c'; else $(CYGPATH_W) '$(srcdir)/m_sigframe/sigframe-nanomips-linux.c'; fi` - -+m_sigframe/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-sigframe-loongarch64-linux.o: m_sigframe/sigframe-loongarch64-linux.c -+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -MT m_sigframe/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-sigframe-loongarch64-linux.o -MD -MP -MF m_sigframe/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-sigframe-loongarch64-linux.Tpo -c -o m_sigframe/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-sigframe-loongarch64-linux.o `test -f 'm_sigframe/sigframe-loongarch64-linux.c' || echo '$(srcdir)/'`m_sigframe/sigframe-loongarch64-linux.c -+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) m_sigframe/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-sigframe-loongarch64-linux.Tpo m_sigframe/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-sigframe-loongarch64-linux.Po -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='m_sigframe/sigframe-loongarch64-linux.c' object='m_sigframe/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-sigframe-loongarch64-linux.o' libtool=no @AMDEPBACKSLASH@ -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -c -o m_sigframe/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-sigframe-loongarch64-linux.o `test -f 'm_sigframe/sigframe-loongarch64-linux.c' || echo '$(srcdir)/'`m_sigframe/sigframe-loongarch64-linux.c -+ -+m_sigframe/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-sigframe-loongarch64-linux.obj: m_sigframe/sigframe-loongarch64-linux.c -+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -MT m_sigframe/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-sigframe-loongarch64-linux.obj -MD -MP -MF m_sigframe/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-sigframe-loongarch64-linux.Tpo -c -o m_sigframe/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-sigframe-loongarch64-linux.obj `if test -f 'm_sigframe/sigframe-loongarch64-linux.c'; then $(CYGPATH_W) 'm_sigframe/sigframe-loongarch64-linux.c'; else $(CYGPATH_W) '$(srcdir)/m_sigframe/sigframe-loongarch64-linux.c'; fi` -+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) m_sigframe/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-sigframe-loongarch64-linux.Tpo m_sigframe/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-sigframe-loongarch64-linux.Po -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='m_sigframe/sigframe-loongarch64-linux.c' object='m_sigframe/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-sigframe-loongarch64-linux.obj' libtool=no @AMDEPBACKSLASH@ -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -c -o m_sigframe/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-sigframe-loongarch64-linux.obj `if test -f 'm_sigframe/sigframe-loongarch64-linux.c'; then $(CYGPATH_W) 'm_sigframe/sigframe-loongarch64-linux.c'; else $(CYGPATH_W) '$(srcdir)/m_sigframe/sigframe-loongarch64-linux.c'; fi` -+ - m_sigframe/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-sigframe-x86-darwin.o: m_sigframe/sigframe-x86-darwin.c - @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -MT m_sigframe/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-sigframe-x86-darwin.o -MD -MP -MF m_sigframe/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-sigframe-x86-darwin.Tpo -c -o m_sigframe/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-sigframe-x86-darwin.o `test -f 'm_sigframe/sigframe-x86-darwin.c' || echo '$(srcdir)/'`m_sigframe/sigframe-x86-darwin.c - @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) m_sigframe/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-sigframe-x86-darwin.Tpo m_sigframe/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-sigframe-x86-darwin.Po -@@ -6858,6 +7028,20 @@ m_syswrap/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syswrap-nanomips-linux.ob - @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ - @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -c -o m_syswrap/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syswrap-nanomips-linux.obj `if test -f 'm_syswrap/syswrap-nanomips-linux.c'; then $(CYGPATH_W) 'm_syswrap/syswrap-nanomips-linux.c'; else $(CYGPATH_W) '$(srcdir)/m_syswrap/syswrap-nanomips-linux.c'; fi` - -+m_syswrap/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syswrap-loongarch64-linux.o: m_syswrap/syswrap-loongarch64-linux.c -+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -MT m_syswrap/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syswrap-loongarch64-linux.o -MD -MP -MF m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syswrap-loongarch64-linux.Tpo -c -o m_syswrap/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syswrap-loongarch64-linux.o `test -f 'm_syswrap/syswrap-loongarch64-linux.c' || echo '$(srcdir)/'`m_syswrap/syswrap-loongarch64-linux.c -+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syswrap-loongarch64-linux.Tpo m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syswrap-loongarch64-linux.Po -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='m_syswrap/syswrap-loongarch64-linux.c' object='m_syswrap/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syswrap-loongarch64-linux.o' libtool=no @AMDEPBACKSLASH@ -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -c -o m_syswrap/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syswrap-loongarch64-linux.o `test -f 'm_syswrap/syswrap-loongarch64-linux.c' || echo '$(srcdir)/'`m_syswrap/syswrap-loongarch64-linux.c -+ -+m_syswrap/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syswrap-loongarch64-linux.obj: m_syswrap/syswrap-loongarch64-linux.c -+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -MT m_syswrap/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syswrap-loongarch64-linux.obj -MD -MP -MF m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syswrap-loongarch64-linux.Tpo -c -o m_syswrap/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syswrap-loongarch64-linux.obj `if test -f 'm_syswrap/syswrap-loongarch64-linux.c'; then $(CYGPATH_W) 'm_syswrap/syswrap-loongarch64-linux.c'; else $(CYGPATH_W) '$(srcdir)/m_syswrap/syswrap-loongarch64-linux.c'; fi` -+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syswrap-loongarch64-linux.Tpo m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syswrap-loongarch64-linux.Po -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='m_syswrap/syswrap-loongarch64-linux.c' object='m_syswrap/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syswrap-loongarch64-linux.obj' libtool=no @AMDEPBACKSLASH@ -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -c -o m_syswrap/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syswrap-loongarch64-linux.obj `if test -f 'm_syswrap/syswrap-loongarch64-linux.c'; then $(CYGPATH_W) 'm_syswrap/syswrap-loongarch64-linux.c'; else $(CYGPATH_W) '$(srcdir)/m_syswrap/syswrap-loongarch64-linux.c'; fi` -+ - m_syswrap/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syswrap-x86-darwin.o: m_syswrap/syswrap-x86-darwin.c - @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -MT m_syswrap/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syswrap-x86-darwin.o -MD -MP -MF m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syswrap-x86-darwin.Tpo -c -o m_syswrap/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syswrap-x86-darwin.o `test -f 'm_syswrap/syswrap-x86-darwin.c' || echo '$(srcdir)/'`m_syswrap/syswrap-x86-darwin.c - @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syswrap-x86-darwin.Tpo m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syswrap-x86-darwin.Po -@@ -8244,6 +8428,20 @@ m_gdbserver/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-valgrind-low-nanomips.o - @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ - @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -c -o m_gdbserver/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-valgrind-low-nanomips.obj `if test -f 'm_gdbserver/valgrind-low-nanomips.c'; then $(CYGPATH_W) 'm_gdbserver/valgrind-low-nanomips.c'; else $(CYGPATH_W) '$(srcdir)/m_gdbserver/valgrind-low-nanomips.c'; fi` - -+m_gdbserver/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-valgrind-low-loongarch64.o: m_gdbserver/valgrind-low-loongarch64.c -+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -MT m_gdbserver/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-valgrind-low-loongarch64.o -MD -MP -MF m_gdbserver/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-valgrind-low-loongarch64.Tpo -c -o m_gdbserver/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-valgrind-low-loongarch64.o `test -f 'm_gdbserver/valgrind-low-loongarch64.c' || echo '$(srcdir)/'`m_gdbserver/valgrind-low-loongarch64.c -+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) m_gdbserver/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-valgrind-low-loongarch64.Tpo m_gdbserver/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-valgrind-low-loongarch64.Po -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='m_gdbserver/valgrind-low-loongarch64.c' object='m_gdbserver/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-valgrind-low-loongarch64.o' libtool=no @AMDEPBACKSLASH@ -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -c -o m_gdbserver/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-valgrind-low-loongarch64.o `test -f 'm_gdbserver/valgrind-low-loongarch64.c' || echo '$(srcdir)/'`m_gdbserver/valgrind-low-loongarch64.c -+ -+m_gdbserver/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-valgrind-low-loongarch64.obj: m_gdbserver/valgrind-low-loongarch64.c -+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -MT m_gdbserver/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-valgrind-low-loongarch64.obj -MD -MP -MF m_gdbserver/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-valgrind-low-loongarch64.Tpo -c -o m_gdbserver/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-valgrind-low-loongarch64.obj `if test -f 'm_gdbserver/valgrind-low-loongarch64.c'; then $(CYGPATH_W) 'm_gdbserver/valgrind-low-loongarch64.c'; else $(CYGPATH_W) '$(srcdir)/m_gdbserver/valgrind-low-loongarch64.c'; fi` -+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) m_gdbserver/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-valgrind-low-loongarch64.Tpo m_gdbserver/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-valgrind-low-loongarch64.Po -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='m_gdbserver/valgrind-low-loongarch64.c' object='m_gdbserver/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-valgrind-low-loongarch64.obj' libtool=no @AMDEPBACKSLASH@ -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -c -o m_gdbserver/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-valgrind-low-loongarch64.obj `if test -f 'm_gdbserver/valgrind-low-loongarch64.c'; then $(CYGPATH_W) 'm_gdbserver/valgrind-low-loongarch64.c'; else $(CYGPATH_W) '$(srcdir)/m_gdbserver/valgrind-low-loongarch64.c'; fi` -+ - m_gdbserver/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-version.o: m_gdbserver/version.c - @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -MT m_gdbserver/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-version.o -MD -MP -MF m_gdbserver/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-version.Tpo -c -o m_gdbserver/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-version.o `test -f 'm_gdbserver/version.c' || echo '$(srcdir)/'`m_gdbserver/version.c - @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) m_gdbserver/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-version.Tpo m_gdbserver/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-version.Po -@@ -8594,6 +8792,20 @@ m_sigframe/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-sigframe-nanomips-linux. - @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ - @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -c -o m_sigframe/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-sigframe-nanomips-linux.obj `if test -f 'm_sigframe/sigframe-nanomips-linux.c'; then $(CYGPATH_W) 'm_sigframe/sigframe-nanomips-linux.c'; else $(CYGPATH_W) '$(srcdir)/m_sigframe/sigframe-nanomips-linux.c'; fi` - -+m_sigframe/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-sigframe-loongarch64-linux.o: m_sigframe/sigframe-loongarch64-linux.c -+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -MT m_sigframe/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-sigframe-loongarch64-linux.o -MD -MP -MF m_sigframe/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-sigframe-loongarch64-linux.Tpo -c -o m_sigframe/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-sigframe-loongarch64-linux.o `test -f 'm_sigframe/sigframe-loongarch64-linux.c' || echo '$(srcdir)/'`m_sigframe/sigframe-loongarch64-linux.c -+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) m_sigframe/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-sigframe-loongarch64-linux.Tpo m_sigframe/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-sigframe-loongarch64-linux.Po -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='m_sigframe/sigframe-loongarch64-linux.c' object='m_sigframe/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-sigframe-loongarch64-linux.o' libtool=no @AMDEPBACKSLASH@ -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -c -o m_sigframe/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-sigframe-loongarch64-linux.o `test -f 'm_sigframe/sigframe-loongarch64-linux.c' || echo '$(srcdir)/'`m_sigframe/sigframe-loongarch64-linux.c -+ -+m_sigframe/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-sigframe-loongarch64-linux.obj: m_sigframe/sigframe-loongarch64-linux.c -+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -MT m_sigframe/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-sigframe-loongarch64-linux.obj -MD -MP -MF m_sigframe/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-sigframe-loongarch64-linux.Tpo -c -o m_sigframe/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-sigframe-loongarch64-linux.obj `if test -f 'm_sigframe/sigframe-loongarch64-linux.c'; then $(CYGPATH_W) 'm_sigframe/sigframe-loongarch64-linux.c'; else $(CYGPATH_W) '$(srcdir)/m_sigframe/sigframe-loongarch64-linux.c'; fi` -+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) m_sigframe/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-sigframe-loongarch64-linux.Tpo m_sigframe/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-sigframe-loongarch64-linux.Po -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='m_sigframe/sigframe-loongarch64-linux.c' object='m_sigframe/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-sigframe-loongarch64-linux.obj' libtool=no @AMDEPBACKSLASH@ -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -c -o m_sigframe/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-sigframe-loongarch64-linux.obj `if test -f 'm_sigframe/sigframe-loongarch64-linux.c'; then $(CYGPATH_W) 'm_sigframe/sigframe-loongarch64-linux.c'; else $(CYGPATH_W) '$(srcdir)/m_sigframe/sigframe-loongarch64-linux.c'; fi` -+ - m_sigframe/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-sigframe-x86-darwin.o: m_sigframe/sigframe-x86-darwin.c - @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -MT m_sigframe/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-sigframe-x86-darwin.o -MD -MP -MF m_sigframe/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-sigframe-x86-darwin.Tpo -c -o m_sigframe/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-sigframe-x86-darwin.o `test -f 'm_sigframe/sigframe-x86-darwin.c' || echo '$(srcdir)/'`m_sigframe/sigframe-x86-darwin.c - @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) m_sigframe/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-sigframe-x86-darwin.Tpo m_sigframe/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-sigframe-x86-darwin.Po -@@ -8902,6 +9114,20 @@ m_syswrap/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syswrap-nanomips-linux.ob - @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ - @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -c -o m_syswrap/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syswrap-nanomips-linux.obj `if test -f 'm_syswrap/syswrap-nanomips-linux.c'; then $(CYGPATH_W) 'm_syswrap/syswrap-nanomips-linux.c'; else $(CYGPATH_W) '$(srcdir)/m_syswrap/syswrap-nanomips-linux.c'; fi` - -+m_syswrap/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syswrap-loongarch64-linux.o: m_syswrap/syswrap-loongarch64-linux.c -+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -MT m_syswrap/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syswrap-loongarch64-linux.o -MD -MP -MF m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syswrap-loongarch64-linux.Tpo -c -o m_syswrap/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syswrap-loongarch64-linux.o `test -f 'm_syswrap/syswrap-loongarch64-linux.c' || echo '$(srcdir)/'`m_syswrap/syswrap-loongarch64-linux.c -+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syswrap-loongarch64-linux.Tpo m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syswrap-loongarch64-linux.Po -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='m_syswrap/syswrap-loongarch64-linux.c' object='m_syswrap/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syswrap-loongarch64-linux.o' libtool=no @AMDEPBACKSLASH@ -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -c -o m_syswrap/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syswrap-loongarch64-linux.o `test -f 'm_syswrap/syswrap-loongarch64-linux.c' || echo '$(srcdir)/'`m_syswrap/syswrap-loongarch64-linux.c -+ -+m_syswrap/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syswrap-loongarch64-linux.obj: m_syswrap/syswrap-loongarch64-linux.c -+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -MT m_syswrap/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syswrap-loongarch64-linux.obj -MD -MP -MF m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syswrap-loongarch64-linux.Tpo -c -o m_syswrap/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syswrap-loongarch64-linux.obj `if test -f 'm_syswrap/syswrap-loongarch64-linux.c'; then $(CYGPATH_W) 'm_syswrap/syswrap-loongarch64-linux.c'; else $(CYGPATH_W) '$(srcdir)/m_syswrap/syswrap-loongarch64-linux.c'; fi` -+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syswrap-loongarch64-linux.Tpo m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syswrap-loongarch64-linux.Po -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='m_syswrap/syswrap-loongarch64-linux.c' object='m_syswrap/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syswrap-loongarch64-linux.obj' libtool=no @AMDEPBACKSLASH@ -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -c -o m_syswrap/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syswrap-loongarch64-linux.obj `if test -f 'm_syswrap/syswrap-loongarch64-linux.c'; then $(CYGPATH_W) 'm_syswrap/syswrap-loongarch64-linux.c'; else $(CYGPATH_W) '$(srcdir)/m_syswrap/syswrap-loongarch64-linux.c'; fi` -+ - m_syswrap/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syswrap-x86-darwin.o: m_syswrap/syswrap-x86-darwin.c - @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS) $(CPPFLAGS) $(libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CFLAGS) $(CFLAGS) -MT m_syswrap/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syswrap-x86-darwin.o -MD -MP -MF m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syswrap-x86-darwin.Tpo -c -o m_syswrap/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syswrap-x86-darwin.o `test -f 'm_syswrap/syswrap-x86-darwin.c' || echo '$(srcdir)/'`m_syswrap/syswrap-x86-darwin.c - @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syswrap-x86-darwin.Tpo m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syswrap-x86-darwin.Po -@@ -9786,6 +10012,7 @@ distclean: distclean-am - -rm -f m_dispatch/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-dispatch-amd64-solaris.Po - -rm -f m_dispatch/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-dispatch-arm-linux.Po - -rm -f m_dispatch/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-dispatch-arm64-linux.Po -+ -rm -f m_dispatch/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-dispatch-loongarch64-linux.Po - -rm -f m_dispatch/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-dispatch-mips32-linux.Po - -rm -f m_dispatch/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-dispatch-mips64-linux.Po - -rm -f m_dispatch/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-dispatch-nanomips-linux.Po -@@ -9803,6 +10030,7 @@ distclean: distclean-am - -rm -f m_dispatch/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-dispatch-amd64-solaris.Po - -rm -f m_dispatch/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-dispatch-arm-linux.Po - -rm -f m_dispatch/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-dispatch-arm64-linux.Po -+ -rm -f m_dispatch/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-dispatch-loongarch64-linux.Po - -rm -f m_dispatch/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-dispatch-mips32-linux.Po - -rm -f m_dispatch/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-dispatch-mips64-linux.Po - -rm -f m_dispatch/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-dispatch-nanomips-linux.Po -@@ -9824,6 +10052,7 @@ distclean: distclean-am - -rm -f m_gdbserver/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-valgrind-low-amd64.Po - -rm -f m_gdbserver/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-valgrind-low-arm.Po - -rm -f m_gdbserver/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-valgrind-low-arm64.Po -+ -rm -f m_gdbserver/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-valgrind-low-loongarch64.Po - -rm -f m_gdbserver/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-valgrind-low-mips32.Po - -rm -f m_gdbserver/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-valgrind-low-mips64.Po - -rm -f m_gdbserver/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-valgrind-low-nanomips.Po -@@ -9842,6 +10071,7 @@ distclean: distclean-am - -rm -f m_gdbserver/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-valgrind-low-amd64.Po - -rm -f m_gdbserver/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-valgrind-low-arm.Po - -rm -f m_gdbserver/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-valgrind-low-arm64.Po -+ -rm -f m_gdbserver/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-valgrind-low-loongarch64.Po - -rm -f m_gdbserver/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-valgrind-low-mips32.Po - -rm -f m_gdbserver/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-valgrind-low-mips64.Po - -rm -f m_gdbserver/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-valgrind-low-nanomips.Po -@@ -9896,6 +10126,7 @@ distclean: distclean-am - -rm -f m_sigframe/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-sigframe-arm-linux.Po - -rm -f m_sigframe/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-sigframe-arm64-linux.Po - -rm -f m_sigframe/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-sigframe-common.Po -+ -rm -f m_sigframe/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-sigframe-loongarch64-linux.Po - -rm -f m_sigframe/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-sigframe-mips32-linux.Po - -rm -f m_sigframe/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-sigframe-mips64-linux.Po - -rm -f m_sigframe/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-sigframe-nanomips-linux.Po -@@ -9912,6 +10143,7 @@ distclean: distclean-am - -rm -f m_sigframe/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-sigframe-arm-linux.Po - -rm -f m_sigframe/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-sigframe-arm64-linux.Po - -rm -f m_sigframe/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-sigframe-common.Po -+ -rm -f m_sigframe/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-sigframe-loongarch64-linux.Po - -rm -f m_sigframe/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-sigframe-mips32-linux.Po - -rm -f m_sigframe/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-sigframe-mips64-linux.Po - -rm -f m_sigframe/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-sigframe-nanomips-linux.Po -@@ -9928,6 +10160,7 @@ distclean: distclean-am - -rm -f m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syscall-amd64-solaris.Po - -rm -f m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syscall-arm-linux.Po - -rm -f m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syscall-arm64-linux.Po -+ -rm -f m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syscall-loongarch64-linux.Po - -rm -f m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syscall-mips32-linux.Po - -rm -f m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syscall-mips64-linux.Po - -rm -f m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syscall-nanomips-linux.Po -@@ -9950,6 +10183,7 @@ distclean: distclean-am - -rm -f m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syswrap-generic.Po - -rm -f m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syswrap-linux-variants.Po - -rm -f m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syswrap-linux.Po -+ -rm -f m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syswrap-loongarch64-linux.Po - -rm -f m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syswrap-main.Po - -rm -f m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syswrap-mips32-linux.Po - -rm -f m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syswrap-mips64-linux.Po -@@ -9969,6 +10203,7 @@ distclean: distclean-am - -rm -f m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syscall-amd64-solaris.Po - -rm -f m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syscall-arm-linux.Po - -rm -f m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syscall-arm64-linux.Po -+ -rm -f m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syscall-loongarch64-linux.Po - -rm -f m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syscall-mips32-linux.Po - -rm -f m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syscall-mips64-linux.Po - -rm -f m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syscall-nanomips-linux.Po -@@ -9991,6 +10226,7 @@ distclean: distclean-am - -rm -f m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syswrap-generic.Po - -rm -f m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syswrap-linux-variants.Po - -rm -f m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syswrap-linux.Po -+ -rm -f m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syswrap-loongarch64-linux.Po - -rm -f m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syswrap-main.Po - -rm -f m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syswrap-mips32-linux.Po - -rm -f m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syswrap-mips64-linux.Po -@@ -10223,6 +10459,7 @@ maintainer-clean: maintainer-clean-am - -rm -f m_dispatch/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-dispatch-amd64-solaris.Po - -rm -f m_dispatch/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-dispatch-arm-linux.Po - -rm -f m_dispatch/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-dispatch-arm64-linux.Po -+ -rm -f m_dispatch/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-dispatch-loongarch64-linux.Po - -rm -f m_dispatch/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-dispatch-mips32-linux.Po - -rm -f m_dispatch/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-dispatch-mips64-linux.Po - -rm -f m_dispatch/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-dispatch-nanomips-linux.Po -@@ -10240,6 +10477,7 @@ maintainer-clean: maintainer-clean-am - -rm -f m_dispatch/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-dispatch-amd64-solaris.Po - -rm -f m_dispatch/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-dispatch-arm-linux.Po - -rm -f m_dispatch/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-dispatch-arm64-linux.Po -+ -rm -f m_dispatch/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-dispatch-loongarch64-linux.Po - -rm -f m_dispatch/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-dispatch-mips32-linux.Po - -rm -f m_dispatch/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-dispatch-mips64-linux.Po - -rm -f m_dispatch/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-dispatch-nanomips-linux.Po -@@ -10261,6 +10499,7 @@ maintainer-clean: maintainer-clean-am - -rm -f m_gdbserver/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-valgrind-low-amd64.Po - -rm -f m_gdbserver/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-valgrind-low-arm.Po - -rm -f m_gdbserver/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-valgrind-low-arm64.Po -+ -rm -f m_gdbserver/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-valgrind-low-loongarch64.Po - -rm -f m_gdbserver/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-valgrind-low-mips32.Po - -rm -f m_gdbserver/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-valgrind-low-mips64.Po - -rm -f m_gdbserver/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-valgrind-low-nanomips.Po -@@ -10279,6 +10518,7 @@ maintainer-clean: maintainer-clean-am - -rm -f m_gdbserver/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-valgrind-low-amd64.Po - -rm -f m_gdbserver/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-valgrind-low-arm.Po - -rm -f m_gdbserver/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-valgrind-low-arm64.Po -+ -rm -f m_gdbserver/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-valgrind-low-loongarch64.Po - -rm -f m_gdbserver/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-valgrind-low-mips32.Po - -rm -f m_gdbserver/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-valgrind-low-mips64.Po - -rm -f m_gdbserver/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-valgrind-low-nanomips.Po -@@ -10333,6 +10573,7 @@ maintainer-clean: maintainer-clean-am - -rm -f m_sigframe/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-sigframe-arm-linux.Po - -rm -f m_sigframe/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-sigframe-arm64-linux.Po - -rm -f m_sigframe/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-sigframe-common.Po -+ -rm -f m_sigframe/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-sigframe-loongarch64-linux.Po - -rm -f m_sigframe/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-sigframe-mips32-linux.Po - -rm -f m_sigframe/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-sigframe-mips64-linux.Po - -rm -f m_sigframe/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-sigframe-nanomips-linux.Po -@@ -10349,6 +10590,7 @@ maintainer-clean: maintainer-clean-am - -rm -f m_sigframe/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-sigframe-arm-linux.Po - -rm -f m_sigframe/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-sigframe-arm64-linux.Po - -rm -f m_sigframe/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-sigframe-common.Po -+ -rm -f m_sigframe/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-sigframe-loongarch64-linux.Po - -rm -f m_sigframe/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-sigframe-mips32-linux.Po - -rm -f m_sigframe/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-sigframe-mips64-linux.Po - -rm -f m_sigframe/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-sigframe-nanomips-linux.Po -@@ -10365,6 +10607,7 @@ maintainer-clean: maintainer-clean-am - -rm -f m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syscall-amd64-solaris.Po - -rm -f m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syscall-arm-linux.Po - -rm -f m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syscall-arm64-linux.Po -+ -rm -f m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syscall-loongarch64-linux.Po - -rm -f m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syscall-mips32-linux.Po - -rm -f m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syscall-mips64-linux.Po - -rm -f m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syscall-nanomips-linux.Po -@@ -10387,6 +10630,7 @@ maintainer-clean: maintainer-clean-am - -rm -f m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syswrap-generic.Po - -rm -f m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syswrap-linux-variants.Po - -rm -f m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syswrap-linux.Po -+ -rm -f m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syswrap-loongarch64-linux.Po - -rm -f m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syswrap-main.Po - -rm -f m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syswrap-mips32-linux.Po - -rm -f m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a-syswrap-mips64-linux.Po -@@ -10406,6 +10650,7 @@ maintainer-clean: maintainer-clean-am - -rm -f m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syscall-amd64-solaris.Po - -rm -f m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syscall-arm-linux.Po - -rm -f m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syscall-arm64-linux.Po -+ -rm -f m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syscall-loongarch64-linux.Po - -rm -f m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syscall-mips32-linux.Po - -rm -f m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syscall-mips64-linux.Po - -rm -f m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syscall-nanomips-linux.Po -@@ -10428,6 +10673,7 @@ maintainer-clean: maintainer-clean-am - -rm -f m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syswrap-generic.Po - -rm -f m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syswrap-linux-variants.Po - -rm -f m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syswrap-linux.Po -+ -rm -f m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syswrap-loongarch64-linux.Po - -rm -f m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syswrap-main.Po - -rm -f m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syswrap-mips32-linux.Po - -rm -f m_syswrap/$(DEPDIR)/libcoregrind_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a-syswrap-mips64-linux.Po diff --git a/coregrind/launcher-linux.c b/coregrind/launcher-linux.c -index bc95e3c..5307fd1 100644 +index 20e624003aff..efcdc277eb2e 100644 --- a/coregrind/launcher-linux.c +++ b/coregrind/launcher-linux.c -@@ -67,6 +67,10 @@ +@@ -69,6 +69,10 @@ #define EM_NANOMIPS 249 #endif @@ -25118,10 +24421,10 @@ index bc95e3c..5307fd1 100644 #ifndef E_MIPS_ABI_O32 #define E_MIPS_ABI_O32 0x00001000 #endif -@@ -314,6 +318,10 @@ static const char *select_platform(const char *clientname) +@@ -326,6 +330,10 @@ static const char *select_platform(const char *clientname) (header.ehdr64.e_ident[EI_OSABI] == ELFOSABI_SYSV || header.ehdr64.e_ident[EI_OSABI] == ELFOSABI_LINUX)) { - platform = "ppc64le-linux"; + platform = "riscv64-linux"; + } else if (header.ehdr64.e_machine == EM_LOONGARCH && + (header.ehdr64.e_ident[EI_OSABI] == ELFOSABI_SYSV || + header.ehdr64.e_ident[EI_OSABI] == ELFOSABI_LINUX)) { @@ -25129,55 +24432,54 @@ index bc95e3c..5307fd1 100644 } } else if (header.c[EI_DATA] == ELFDATA2MSB) { # if !defined(VGPV_arm_linux_android) \ -@@ -415,7 +423,8 @@ int main(int argc, char** argv, char** envp) - (0==strcmp(VG_PLATFORM,"s390x-linux")) || +@@ -428,7 +436,8 @@ int main(int argc, char** argv, char** envp) (0==strcmp(VG_PLATFORM,"mips32-linux")) || (0==strcmp(VG_PLATFORM,"mips64-linux")) || -- (0==strcmp(VG_PLATFORM,"nanomips-linux"))) -+ (0==strcmp(VG_PLATFORM,"nanomips-linux")) || + (0==strcmp(VG_PLATFORM,"nanomips-linux")) || +- (0==strcmp(VG_PLATFORM,"riscv64-linux"))) ++ (0==strcmp(VG_PLATFORM,"riscv64-linux")) || + (0==strcmp(VG_PLATFORM,"loongarch64-linux"))) default_platform = VG_PLATFORM; # elif defined(VGO_solaris) if ((0==strcmp(VG_PLATFORM,"x86-solaris")) || diff --git a/coregrind/m_aspacemgr/aspacemgr-common.c b/coregrind/m_aspacemgr/aspacemgr-common.c -index 816d227..0e79d3f 100644 +index 14864d96c363..0a607b34729a 100644 --- a/coregrind/m_aspacemgr/aspacemgr-common.c +++ b/coregrind/m_aspacemgr/aspacemgr-common.c -@@ -157,7 +157,8 @@ SysRes VG_(am_do_mmap_NO_NOTIFY)( Addr start, SizeT length, UInt prot, - # elif defined(VGP_amd64_linux) \ +@@ -158,7 +158,7 @@ SysRes VG_(am_do_mmap_NO_NOTIFY)( Addr start, SizeT length, UInt prot, || defined(VGP_ppc64be_linux) || defined(VGP_ppc64le_linux) \ || defined(VGP_s390x_linux) || defined(VGP_mips32_linux) \ -- || defined(VGP_mips64_linux) || defined(VGP_arm64_linux) -+ || defined(VGP_mips64_linux) || defined(VGP_arm64_linux) \ -+ || defined(VGP_loongarch64_linux) + || defined(VGP_mips64_linux) || defined(VGP_arm64_linux) \ +- || defined(VGP_riscv64_linux) ++ || defined(VGP_riscv64_linux) || defined(VGP_loongarch64_linux) res = VG_(do_syscall6)(__NR_mmap, (UWord)start, length, prot, flags, fd, offset); # elif defined(VGP_x86_darwin) -@@ -262,7 +263,8 @@ SysRes ML_(am_do_relocate_nooverlap_mapping_NO_NOTIFY)( - +@@ -264,8 +264,9 @@ SysRes ML_(am_do_relocate_nooverlap_mapping_NO_NOTIFY)( SysRes ML_(am_open) ( const HChar* pathname, Int flags, Int mode ) { --# if defined(VGP_arm64_linux) || defined(VGP_nanomips_linux) -+# if defined(VGP_arm64_linux) || defined(VGP_nanomips_linux) \ -+ || defined(VGP_loongarch64_linux) - /* ARM64 wants to use __NR_openat rather than __NR_open. */ + # if defined(VGP_arm64_linux) || defined(VGP_nanomips_linux) \ +- || defined(VGP_riscv64_linux) ++ || defined(VGP_riscv64_linux) || defined(VGP_loongarch64_linux) \ + /* More recent Linux platforms have only __NR_openat and no __NR_open. */ ++ /* ARM64 wants to use __NR_openat rather than __NR_open. */ SysRes res = VG_(do_syscall4)(__NR_openat, VKI_AT_FDCWD, (UWord)pathname, flags, mode); -@@ -291,7 +293,8 @@ void ML_(am_close) ( Int fd ) - Int ML_(am_readlink)(const HChar* path, HChar* buf, UInt bufsiz) + # elif defined(VGO_linux) || defined(VGO_darwin) || defined(VGO_freebsd) +@@ -294,7 +295,7 @@ Int ML_(am_readlink)(const HChar* path, HChar* buf, UInt bufsiz) { SysRes res; --# if defined(VGP_arm64_linux) || defined(VGP_nanomips_linux) -+# if defined(VGP_arm64_linux) || defined(VGP_nanomips_linux) \ -+ || defined(VGP_loongarch64_linux) + # if defined(VGP_arm64_linux) || defined(VGP_nanomips_linux) \ +- || defined(VGP_riscv64_linux) ++ || defined(VGP_riscv64_linux) || defined(VGP_loongarch64_linux) res = VG_(do_syscall4)(__NR_readlinkat, VKI_AT_FDCWD, (UWord)path, (UWord)buf, bufsiz); # elif defined(VGO_linux) || defined(VGO_darwin) || defined(VGO_freebsd) diff --git a/coregrind/m_aspacemgr/aspacemgr-linux.c b/coregrind/m_aspacemgr/aspacemgr-linux.c -index 232401e..a88412d 100644 +index bae4f781a82a..0082dac3b0c4 100644 --- a/coregrind/m_aspacemgr/aspacemgr-linux.c +++ b/coregrind/m_aspacemgr/aspacemgr-linux.c -@@ -2777,7 +2777,8 @@ static SysRes VG_(am_mmap_file_float_valgrind_flags) ( SizeT length, UInt prot, +@@ -2799,7 +2799,8 @@ static SysRes VG_(am_mmap_file_float_valgrind_flags) ( SizeT length, UInt prot, req.rkind = MAny; req.start = 0; #if defined(VGA_arm) || defined(VGA_arm64) \ @@ -25188,10 +24490,10 @@ index 232401e..a88412d 100644 #else aspacem_assert(VKI_SHMLBA == VKI_PAGE_SIZE); diff --git a/coregrind/m_cache.c b/coregrind/m_cache.c -index 428a4df..38fa44e 100644 +index 4abd26f0b2ca..15eefea817ae 100644 --- a/coregrind/m_cache.c +++ b/coregrind/m_cache.c -@@ -660,6 +660,239 @@ get_cache_info(VexArchInfo *vai) +@@ -669,6 +669,239 @@ get_cache_info(VexArchInfo *vai) return True; } @@ -25432,13 +24734,13 @@ index 428a4df..38fa44e 100644 #error "Unknown arch" diff --git a/coregrind/m_coredump/coredump-elf.c b/coregrind/m_coredump/coredump-elf.c -index 4a8c29c..82b1b43 100644 +index b57d26275b1a..eea37a9f8527 100644 --- a/coregrind/m_coredump/coredump-elf.c +++ b/coregrind/m_coredump/coredump-elf.c -@@ -489,6 +489,40 @@ static void fill_prstatus(const ThreadState *tst, - regs[VKI_MIPS32_EF_CP0_STATUS] = arch->vex.guest_CP0_status; - regs[VKI_MIPS32_EF_CP0_EPC] = arch->vex.guest_PC; - # undef DO +@@ -522,6 +522,40 @@ static void fill_prstatus(const ThreadState *tst, + regs->t4 = arch->vex.guest_x29; + regs->t5 = arch->vex.guest_x30; + regs->t6 = arch->vex.guest_x31; +#elif defined(VGP_loongarch64_linux) + regs->regs[0] = arch->vex.guest_R0; + regs->regs[1] = arch->vex.guest_R1; @@ -25476,9 +24778,9 @@ index 4a8c29c..82b1b43 100644 #elif defined(VGP_amd64_freebsd) regs->rflags = LibVEX_GuestAMD64_get_rflags( &arch->vex ); regs->rsp = arch->vex.guest_RSP; -@@ -654,6 +688,14 @@ static void fill_fpu(const ThreadState *tst, vki_elf_fpregset_t *fpu) - # undef DO - #elif defined(VGP_nanomips_linux) +@@ -759,6 +793,14 @@ static void fill_fpu(const ThreadState *tst, vki_elf_fpregset_t *fpu) + fpu->d.f[31] = arch->vex.guest_f31; + fpu->d.fcsr = arch->vex.guest_fcsr; +#elif defined(VGP_loongarch64_linux) +# define DO(n) (*fpu)[n] = *(const double*)(&arch->vex.guest_X##n) @@ -25492,13 +24794,13 @@ index 4a8c29c..82b1b43 100644 #elif defined(VGP_amd64_freebsd) diff --git a/coregrind/m_debuginfo/d3basics.c b/coregrind/m_debuginfo/d3basics.c -index bcfd456..222496e 100644 +index 80dec21a6598..21e6c1f68396 100644 --- a/coregrind/m_debuginfo/d3basics.c +++ b/coregrind/m_debuginfo/d3basics.c -@@ -555,6 +555,9 @@ static Bool get_Dwarf_Reg( /*OUT*/Addr* a, Word regno, const RegSummary* regs ) - # elif defined(VGP_arm64_linux) - if (regno == 31) { *a = regs->sp; return True; } - if (regno == 29) { *a = regs->fp; return True; } +@@ -558,6 +558,9 @@ static Bool get_Dwarf_Reg( /*OUT*/Addr* a, Word regno, const RegSummary* regs ) + # elif defined(VGP_riscv64_linux) + if (regno == 2) { *a = regs->sp; return True; } + if (regno == 8) { *a = regs->fp; return True; } +# elif defined(VGP_loongarch64_linux) + if (regno == 3) { *a = regs->sp; return True; } + if (regno == 22) { *a = regs->fp; return True; } @@ -25506,10 +24808,10 @@ index bcfd456..222496e 100644 # error "Unknown platform" # endif diff --git a/coregrind/m_debuginfo/debuginfo.c b/coregrind/m_debuginfo/debuginfo.c -index eed134b..32ac008 100644 +index cd047209022c..a1292cb403fc 100644 --- a/coregrind/m_debuginfo/debuginfo.c +++ b/coregrind/m_debuginfo/debuginfo.c -@@ -1300,7 +1300,7 @@ ULong VG_(di_notify_mmap)( Addr a, Bool allow_SkFileV, Int use_fd ) +@@ -1271,7 +1271,7 @@ ULong VG_(di_notify_mmap)( Addr a, Bool allow_SkFileV, Int use_fd ) is_ro_map = False; # if defined(VGA_x86) || defined(VGA_ppc32) || defined(VGA_mips32) \ @@ -25518,10 +24820,10 @@ index eed134b..32ac008 100644 is_rx_map = seg->hasR && seg->hasX; is_rw_map = seg->hasR && seg->hasW; # elif defined(VGA_amd64) || defined(VGA_ppc64be) || defined(VGA_ppc64le) \ -@@ -3116,6 +3116,11 @@ UWord evalCfiExpr ( const XArray* exprs, Int ix, - case Creg_ARM64_SP: return eec->uregs->sp; - case Creg_ARM64_X30: return eec->uregs->x30; +@@ -3073,6 +3073,11 @@ UWord evalCfiExpr ( const XArray* exprs, Int ix, case Creg_ARM64_X29: return eec->uregs->x29; + # elif defined(VGA_ppc32) || defined(VGA_ppc64be) \ + || defined(VGA_ppc64le) || defined(VGP_riscv64_linux) +# elif defined(VGA_loongarch64) + case Creg_LOONGARCH64_PC: return eec->uregs->pc; + case Creg_LOONGARCH64_RA: return eec->uregs->ra; @@ -25530,11 +24832,11 @@ index eed134b..32ac008 100644 # else # error "Unsupported arch" # endif -@@ -3389,6 +3394,13 @@ static Addr compute_cfa ( const D3UnwindRegs* uregs, - case CFIC_ARM64_X29REL: - cfa = cfsi_m->cfa_off + uregs->x29; +@@ -3360,6 +3365,13 @@ static Addr compute_cfa ( const D3UnwindRegs* uregs, + case CFIC_IA_BPREL: + cfa = cfsi_m->cfa_off + uregs->fp; break; -+# elif defined(VGA_loongarch64) ++# elif defined(VGP_loongarch64_linux) + case CFIC_IA_SPREL: + cfa = cfsi_m->cfa_off + uregs->sp; + break; @@ -25544,43 +24846,44 @@ index eed134b..32ac008 100644 # else # error "Unsupported arch" # endif -@@ -3460,6 +3472,14 @@ Addr ML_(get_CFA) ( Addr ip, Addr sp, Addr fp, - return compute_cfa(&uregs, +@@ -3432,6 +3444,15 @@ Addr ML_(get_CFA) ( Addr ip, Addr sp, Addr fp, min_accessible, max_accessible, ce->di, ce->cfsi_m); } -+#elif defined(VGA_loongarch64) + #elif defined(VGA_riscv64) + { D3UnwindRegs uregs; -+ uregs.pc = ip; -+ uregs.sp = sp; -+ uregs.fp = fp; -+ return compute_cfa(&uregs, ++ uregs.pc = ip; ++ uregs.sp = sp; ++ uregs.fp = fp; ++ uregs.ra = 0; ++ return compute_cfa(&uregs, + min_accessible, max_accessible, ce->di, ce->cfsi_m); + } - - # else - return 0; /* indicates failure */ -@@ -3511,6 +3531,8 @@ void VG_(ppUnwindInfo) (Addr from, Addr to) - For arm64, the unwound registers are: X29(FP) X30(LR) SP PC. - ++#elif defined(VGA_loongarch64) + { D3UnwindRegs uregs; + uregs.pc = ip; + uregs.sp = sp; +@@ -3493,6 +3514,8 @@ void VG_(ppUnwindInfo) (Addr from, Addr to) For s390, the unwound registers are: R11(FP) R14(LR) R15(SP) F0..F7 PC. + + For riscv64, the unwound registers are: X2(SP) X8(FP) PC + + For loongarch64, the unwound registers are: FP SP PC */ Bool VG_(use_CF_info) ( /*MOD*/D3UnwindRegs* uregsHere, Addr min_accessible, -@@ -3534,6 +3556,8 @@ Bool VG_(use_CF_info) ( /*MOD*/D3UnwindRegs* uregsHere, - # elif defined(VGA_ppc32) || defined(VGA_ppc64be) || defined(VGA_ppc64le) - # elif defined(VGP_arm64_linux) +@@ -3520,6 +3543,8 @@ Bool VG_(use_CF_info) ( /*MOD*/D3UnwindRegs* uregsHere, + ipHere = uregsHere->pc; + # elif defined(VGP_riscv64_linux) ipHere = uregsHere->pc; +# elif defined(VGA_loongarch64) + ipHere = uregsHere->pc; # else # error "Unknown arch" # endif -@@ -3679,6 +3703,10 @@ Bool VG_(use_CF_info) ( /*MOD*/D3UnwindRegs* uregsHere, - COMPUTE(uregsPrev.sp, uregsHere->sp, cfsi_m->sp_how, cfsi_m->sp_off); - COMPUTE(uregsPrev.x30, uregsHere->x30, cfsi_m->x30_how, cfsi_m->x30_off); - COMPUTE(uregsPrev.x29, uregsHere->x29, cfsi_m->x29_how, cfsi_m->x29_off); +@@ -3674,6 +3699,10 @@ Bool VG_(use_CF_info) ( /*MOD*/D3UnwindRegs* uregsHere, + COMPUTE(uregsPrev.sp, uregsHere->sp, cfsi_m->sp_how, cfsi_m->sp_off); + COMPUTE(uregsPrev.fp, uregsHere->fp, cfsi_m->fp_how, cfsi_m->fp_off); + uregsPrev.ra = 0; +# elif defined(VGA_loongarch64) + COMPUTE(uregsPrev.pc, uregsHere->ra, cfsi_m->ra_how, cfsi_m->ra_off); + COMPUTE(uregsPrev.sp, uregsHere->sp, cfsi_m->sp_how, cfsi_m->sp_off); @@ -25589,10 +24892,10 @@ index eed134b..32ac008 100644 # error "Unknown arch" # endif diff --git a/coregrind/m_debuginfo/priv_storage.h b/coregrind/m_debuginfo/priv_storage.h -index 441b379..41224a8 100644 +index d8cba81c48ad..79e6ffbe49ea 100644 --- a/coregrind/m_debuginfo/priv_storage.h +++ b/coregrind/m_debuginfo/priv_storage.h -@@ -367,6 +367,19 @@ typedef +@@ -380,6 +380,19 @@ typedef Int fp_off; } DiCfSI_m; @@ -25612,7 +24915,7 @@ index 441b379..41224a8 100644 #else # error "Unknown arch" #endif -@@ -422,7 +435,11 @@ typedef +@@ -435,7 +448,11 @@ typedef Creg_S390_SP, Creg_S390_FP, Creg_S390_LR, @@ -25626,13 +24929,13 @@ index 441b379..41224a8 100644 CfiReg; diff --git a/coregrind/m_debuginfo/readdwarf.c b/coregrind/m_debuginfo/readdwarf.c -index 7b8187e..13363ae 100644 +index b08720182e59..1ccad4e7afd0 100644 --- a/coregrind/m_debuginfo/readdwarf.c +++ b/coregrind/m_debuginfo/readdwarf.c -@@ -2066,6 +2066,10 @@ void ML_(read_debuginfo_dwarf1) ( - # define FP_REG 30 - # define SP_REG 29 - # define RA_REG_DEFAULT 31 +@@ -2070,6 +2070,10 @@ void ML_(read_debuginfo_dwarf1) ( + # define FP_REG 8 + # define SP_REG 2 + # define RA_REG_DEFAULT 1 +#elif defined(VGP_loongarch64_linux) +# define FP_REG 22 +# define SP_REG 3 @@ -25640,19 +24943,19 @@ index 7b8187e..13363ae 100644 #else # error "Unknown platform" #endif -@@ -2084,6 +2088,8 @@ void ML_(read_debuginfo_dwarf1) ( - # define N_CFI_REGS 128 - #elif defined(VGP_s390x_linux) +@@ -2090,6 +2094,8 @@ void ML_(read_debuginfo_dwarf1) ( # define N_CFI_REGS 66 + #elif defined(VGP_riscv64_linux) + # define N_CFI_REGS 128 +#elif defined(VGP_loongarch64_linux) +# define N_CFI_REGS 32 #else # define N_CFI_REGS 20 #endif -@@ -2310,6 +2316,10 @@ static void initUnwindContext ( /*OUT*/UnwindContext* ctx ) - start out as RR_Same. */ - ctx->state[j].reg[29/*FP*/].tag = RR_Same; - ctx->state[j].reg[30/*LR*/].tag = RR_Same; +@@ -2320,6 +2326,10 @@ static void initUnwindContext ( /*OUT*/UnwindContext* ctx ) + /* Registers fp and ra start out implicitly as RR_Same. */ + ctx->state[j].reg[FP_REG].tag = RR_Same; + ctx->state[j].reg[RA_REG_DEFAULT].tag = RR_Same; +# elif defined(VGA_loongarch64) + /* Registers fp and ra start out implicitly as RR_Same. */ + ctx->state[j].reg[FP_REG].tag = RR_Same; @@ -25660,29 +24963,29 @@ index 7b8187e..13363ae 100644 # endif } } -@@ -2392,7 +2402,8 @@ static Bool summarise_context(/*OUT*/Addr* base, - if (ctxs->cfa_is_regoff && ctxs->cfa_reg == SP_REG) { +@@ -2403,7 +2413,8 @@ static Bool summarise_context(/*OUT*/Addr* base, si_m->cfa_off = ctxs->cfa_off; # if defined(VGA_x86) || defined(VGA_amd64) || defined(VGA_s390x) \ -- || defined(VGA_mips32) || defined(VGA_nanomips) || defined(VGA_mips64) -+ || defined(VGA_mips32) || defined(VGA_nanomips) || defined(VGA_mips64) \ + || defined(VGA_mips32) || defined(VGA_nanomips) \ +- || defined(VGA_mips64) || defined(VGA_riscv64) ++ || defined(VGA_mips64) || defined(VGA_riscv64) \ + || defined(VGA_loongarch64) si_m->cfa_how = CFIC_IA_SPREL; # elif defined(VGA_arm) si_m->cfa_how = CFIC_ARM_R13REL; -@@ -2406,7 +2417,8 @@ static Bool summarise_context(/*OUT*/Addr* base, - if (ctxs->cfa_is_regoff && ctxs->cfa_reg == FP_REG) { +@@ -2418,7 +2429,8 @@ static Bool summarise_context(/*OUT*/Addr* base, si_m->cfa_off = ctxs->cfa_off; # if defined(VGA_x86) || defined(VGA_amd64) || defined(VGA_s390x) \ -- || defined(VGA_mips32) || defined(VGA_nanomips) || defined(VGA_mips64) -+ || defined(VGA_mips32) || defined(VGA_nanomips) || defined(VGA_mips64) \ + || defined(VGA_mips32) || defined(VGA_nanomips) \ +- || defined(VGA_mips64) || defined(VGA_riscv64) ++ || defined(VGA_mips64) || defined(VGA_riscv64) \ + || defined(VGA_loongarch64) si_m->cfa_how = CFIC_IA_BPREL; # elif defined(VGA_arm) si_m->cfa_how = CFIC_ARM_R12REL; -@@ -2786,6 +2798,30 @@ static Bool summarise_context(/*OUT*/Addr* base, - # elif defined(VGA_ppc32) || defined(VGA_ppc64be) || defined(VGA_ppc64le) - /* These don't use CFI based unwinding (is that really true?) */ +@@ -2822,6 +2834,30 @@ static Bool summarise_context(/*OUT*/Addr* base, + + return True; +# elif defined(VGA_loongarch64) + @@ -25711,10 +25014,10 @@ index 7b8187e..13363ae 100644 # else # error "Unknown arch" # endif -@@ -2885,6 +2921,13 @@ static Int copy_convert_CfiExpr_tree ( XArray* dstxa, +@@ -2921,6 +2957,13 @@ static Int copy_convert_CfiExpr_tree ( XArray* dstxa, return ML_(CfiExpr_CfiReg)( dstxa, Creg_ARM64_X30 ); # elif defined(VGA_ppc32) || defined(VGA_ppc64be) \ - || defined(VGA_ppc64le) + || defined(VGA_ppc64le) || defined(VGA_riscv64) +# elif defined(VGA_loongarch64) + if (dwreg == SP_REG) + return ML_(CfiExpr_CfiReg)( dstxa, Creg_LOONGARCH64_SP ); @@ -25726,38 +25029,35 @@ index 7b8187e..13363ae 100644 # error "Unknown arch" # endif diff --git a/coregrind/m_debuginfo/readelf.c b/coregrind/m_debuginfo/readelf.c -index fb64ed9..5e77c79 100644 +index 61a39af2af4c..7eab2dffc85f 100644 --- a/coregrind/m_debuginfo/readelf.c +++ b/coregrind/m_debuginfo/readelf.c -@@ -1781,7 +1781,8 @@ static HChar* readlink_path (const HChar *path) - +@@ -1787,7 +1787,7 @@ static HChar* readlink_path (const HChar *path) while (tries > 0) { SysRes res; --#if defined(VGP_arm64_linux) || defined(VGP_nanomips_linux) -+#if defined(VGP_arm64_linux) || defined(VGP_nanomips_linux) \ -+ || defined(VGP_loongarch64_linux) + #if defined(VGP_arm64_linux) || defined(VGP_nanomips_linux) \ +- || defined(VGP_riscv64_linux) ++ || defined(VGP_riscv64_linux) || defined(VGP_loongarch64_linux) res = VG_(do_syscall4)(__NR_readlinkat, VKI_AT_FDCWD, (UWord)path, (UWord)buf, bufsiz); #elif defined(VGO_linux) || defined(VGO_darwin) || defined(VGO_freebsd) -@@ -2702,8 +2703,9 @@ Bool ML_(read_elf_object) ( struct _DebugInfo* di ) +@@ -2719,7 +2719,7 @@ Bool ML_(read_elf_object) ( struct _DebugInfo* di ) || defined(VGP_arm_linux) || defined (VGP_s390x_linux) \ || defined(VGP_mips32_linux) || defined(VGP_mips64_linux) \ || defined(VGP_arm64_linux) || defined(VGP_nanomips_linux) \ -+ || defined(VGP_loongarch64_linux) \ +- || defined(VGP_riscv64_linux) \ ++ || defined(VGP_riscv64_linux) || defined(VGP_loongarch64_linux) \ || defined(VGP_x86_solaris) || defined(VGP_amd64_solaris) \ -- || defined(VGP_x86_freebsd) || defined(VGP_amd64_freebsd) -+ || defined(VGP_x86_freebsd) || defined(VGP_amd64_freebsd) \ - /* Accept .plt where mapped as rx (code) */ - if (0 == VG_(strcmp)(name, ".plt")) { - if (inrx && !di->plt_present) { + || defined(VGP_x86_freebsd) || defined(VGP_amd64_freebsd) \ + || defined(VGP_arm64_freebsd) diff --git a/coregrind/m_debuginfo/storage.c b/coregrind/m_debuginfo/storage.c -index 961d767..fbfe027 100644 +index 12ad681304c0..3ba8e6627c27 100644 --- a/coregrind/m_debuginfo/storage.c +++ b/coregrind/m_debuginfo/storage.c -@@ -260,6 +260,11 @@ void ML_(ppDiCfSI) ( const XArray* /* of CfiExpr */ exprs, - SHOW_HOW(si_m->x30_how, si_m->x30_off); - VG_(printf)(" X29="); - SHOW_HOW(si_m->x29_how, si_m->x29_off); +@@ -265,6 +265,11 @@ void ML_(ppDiCfSI) ( const XArray* /* of CfiExpr */ exprs, + SHOW_HOW(si_m->sp_how, si_m->sp_off); + VG_(printf)(" FP="); + SHOW_HOW(si_m->fp_how, si_m->fp_off); +# elif defined(VGP_loongarch64_linux) + VG_(printf)(" SP="); + SHOW_HOW(si_m->sp_how, si_m->sp_off); @@ -25766,7 +25066,7 @@ index 961d767..fbfe027 100644 # else # error "Unknown arch" # endif -@@ -1010,6 +1015,10 @@ static void ppCfiReg ( CfiReg reg ) +@@ -1015,6 +1020,10 @@ static void ppCfiReg ( CfiReg reg ) case Creg_S390_SP: VG_(printf)("SP"); break; case Creg_S390_FP: VG_(printf)("FP"); break; case Creg_S390_LR: VG_(printf)("LR"); break; @@ -25778,11 +25078,11 @@ index 961d767..fbfe027 100644 } } diff --git a/coregrind/m_debuglog.c b/coregrind/m_debuglog.c -index fd6db4b..eacc73b 100644 +index 225e5a0854b4..3192b00463d5 100644 --- a/coregrind/m_debuglog.c +++ b/coregrind/m_debuglog.c -@@ -601,6 +601,41 @@ static UInt local_sys_getpid ( void ) - return a0; +@@ -665,6 +665,41 @@ static UInt local_sys_getpid ( void ) + return (UInt)a0; } +#elif defined(VGP_loongarch64_linux) @@ -25825,7 +25125,7 @@ index fd6db4b..eacc73b 100644 { diff --git a/coregrind/m_dispatch/dispatch-loongarch64-linux.S b/coregrind/m_dispatch/dispatch-loongarch64-linux.S new file mode 100644 -index 0000000..dec1652 +index 000000000000..dec165294345 --- /dev/null +++ b/coregrind/m_dispatch/dispatch-loongarch64-linux.S @@ -0,0 +1,314 @@ @@ -26143,14 +25443,14 @@ index 0000000..dec1652 +/*--------------------------------------------------------------------*/ +/*--- end dispatch-loongarch64-linux.S ---*/ +/*--------------------------------------------------------------------*/ -diff --git a/coregrind/m_gdbserver/loongarch-base64-valgrind-s1.xml b/coregrind/m_gdbserver/loongarch-base64-valgrind-s1.xml +diff --git a/coregrind/m_gdbserver/loongarch64-base64-valgrind-s1.xml b/coregrind/m_gdbserver/loongarch64-base64-valgrind-s1.xml new file mode 100644 -index 0000000..cab700c +index 000000000000..01df63fc8d91 --- /dev/null -+++ b/coregrind/m_gdbserver/loongarch-base64-valgrind-s1.xml ++++ b/coregrind/m_gdbserver/loongarch64-base64-valgrind-s1.xml @@ -0,0 +1,45 @@ + -+ + + -+ ++ + -+ ++ + + + + -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ + + + @@ -26359,59 +25659,59 @@ index 0000000..b5c7cab + + + -diff --git a/coregrind/m_gdbserver/loongarch-fpu64-valgrind-s2.xml b/coregrind/m_gdbserver/loongarch-fpu64-valgrind-s2.xml +diff --git a/coregrind/m_gdbserver/loongarch64-fpu-valgrind-s2.xml b/coregrind/m_gdbserver/loongarch64-fpu-valgrind-s2.xml new file mode 100644 -index 0000000..501660e +index 000000000000..956b6699a7d0 --- /dev/null -+++ b/coregrind/m_gdbserver/loongarch-fpu64-valgrind-s2.xml ++++ b/coregrind/m_gdbserver/loongarch64-fpu-valgrind-s2.xml @@ -0,0 +1,57 @@ + -+ + + -+ ++ + -+ ++ + + + + -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ + + + @@ -26422,14 +25722,14 @@ index 0000000..501660e + + + -diff --git a/coregrind/m_gdbserver/loongarch-fpu64.xml b/coregrind/m_gdbserver/loongarch-fpu64.xml +diff --git a/coregrind/m_gdbserver/loongarch64-fpu.xml b/coregrind/m_gdbserver/loongarch64-fpu.xml new file mode 100644 -index 0000000..74ab55a +index 000000000000..c68fc1b8876d --- /dev/null -+++ b/coregrind/m_gdbserver/loongarch-fpu64.xml ++++ b/coregrind/m_gdbserver/loongarch64-fpu.xml @@ -0,0 +1,57 @@ + -+ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ +diff --git a/coregrind/m_gdbserver/loongarch64-lasx-valgrind-s2.xml b/coregrind/m_gdbserver/loongarch64-lasx-valgrind-s2.xml +new file mode 100644 +index 000000000000..ced177d73817 +--- /dev/null ++++ b/coregrind/m_gdbserver/loongarch64-lasx-valgrind-s2.xml +@@ -0,0 +1,60 @@ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ +diff --git a/coregrind/m_gdbserver/loongarch64-lasx.xml b/coregrind/m_gdbserver/loongarch64-lasx.xml +new file mode 100644 +index 000000000000..753b982c651b +--- /dev/null ++++ b/coregrind/m_gdbserver/loongarch64-lasx.xml +@@ -0,0 +1,60 @@ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ +diff --git a/coregrind/m_gdbserver/loongarch64-lbt-valgrind-s1.xml b/coregrind/m_gdbserver/loongarch64-lbt-valgrind-s1.xml +new file mode 100644 +index 000000000000..28b26abeea02 +--- /dev/null ++++ b/coregrind/m_gdbserver/loongarch64-lbt-valgrind-s1.xml +@@ -0,0 +1,16 @@ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ +diff --git a/coregrind/m_gdbserver/loongarch64-lbt-valgrind-s2.xml b/coregrind/m_gdbserver/loongarch64-lbt-valgrind-s2.xml +new file mode 100644 +index 000000000000..eb792d700bf2 +--- /dev/null ++++ b/coregrind/m_gdbserver/loongarch64-lbt-valgrind-s2.xml +@@ -0,0 +1,16 @@ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ +diff --git a/coregrind/m_gdbserver/loongarch64-lbt.xml b/coregrind/m_gdbserver/loongarch64-lbt.xml +new file mode 100644 +index 000000000000..6526ee6068f7 +--- /dev/null ++++ b/coregrind/m_gdbserver/loongarch64-lbt.xml +@@ -0,0 +1,16 @@ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ diff --git a/coregrind/m_gdbserver/loongarch64-linux-valgrind.xml b/coregrind/m_gdbserver/loongarch64-linux-valgrind.xml new file mode 100644 -index 0000000..8915a72 +index 000000000000..ba5fc88421fe --- /dev/null +++ b/coregrind/m_gdbserver/loongarch64-linux-valgrind.xml -@@ -0,0 +1,18 @@ +@@ -0,0 +1,27 @@ + -+ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ +diff --git a/coregrind/m_gdbserver/loongarch64-lsx-valgrind-s2.xml b/coregrind/m_gdbserver/loongarch64-lsx-valgrind-s2.xml +new file mode 100644 +index 000000000000..362047206e20 +--- /dev/null ++++ b/coregrind/m_gdbserver/loongarch64-lsx-valgrind-s2.xml +@@ -0,0 +1,59 @@ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ +diff --git a/coregrind/m_gdbserver/loongarch64-lsx.xml b/coregrind/m_gdbserver/loongarch64-lsx.xml +new file mode 100644 +index 000000000000..e19a404dfd52 +--- /dev/null ++++ b/coregrind/m_gdbserver/loongarch64-lsx.xml +@@ -0,0 +1,59 @@ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ diff --git a/coregrind/m_gdbserver/target.c b/coregrind/m_gdbserver/target.c -index f9f32f4..e97bd64 100644 +index 4238c608cba7..63b61b0c1fc1 100644 --- a/coregrind/m_gdbserver/target.c +++ b/coregrind/m_gdbserver/target.c -@@ -867,6 +867,8 @@ void valgrind_initialize_target(void) - mips64_init_architecture(&the_low_target); - #elif defined(VGA_nanomips) +@@ -869,6 +869,8 @@ void valgrind_initialize_target(void) nanomips_init_architecture(&the_low_target); + #elif defined(VGA_riscv64) + riscv64_init_architecture(&the_low_target); +#elif defined(VGA_loongarch64) + loongarch64_init_architecture(&the_low_target); #else @@ -26544,17 +26315,17 @@ index f9f32f4..e97bd64 100644 #endif diff --git a/coregrind/m_gdbserver/valgrind-low-loongarch64.c b/coregrind/m_gdbserver/valgrind-low-loongarch64.c new file mode 100644 -index 0000000..6021c79 +index 000000000000..5117d53317c8 --- /dev/null +++ b/coregrind/m_gdbserver/valgrind-low-loongarch64.c -@@ -0,0 +1,272 @@ +@@ -0,0 +1,412 @@ +/* Low level interface to valgrind, for the remote server for GDB integrated + in valgrind. + Copyright (C) 2021 + Free Software Foundation, Inc. + + This file is part of VALGRIND. -+ It has been inspired from files from gdbserver in gdb 13. ++ It has been inspired from files from gdbserver in gdb 15. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by @@ -26662,7 +26433,77 @@ index 0000000..6021c79 + { "fcc5", 4328, 8 }, + { "fcc6", 4336, 8 }, + { "fcc7", 4344, 8 }, -+ { "fcsr", 4352, 32 } ++ { "fcsr", 4352, 32 }, ++ { "vr0", 4384, 128 }, ++ { "vr1", 4512, 128 }, ++ { "vr2", 4640, 128 }, ++ { "vr3", 4768, 128 }, ++ { "vr4", 4896, 128 }, ++ { "vr5", 5024, 128 }, ++ { "vr6", 5152, 128 }, ++ { "vr7", 5280, 128 }, ++ { "vr8", 5408, 128 }, ++ { "vr9", 5536, 128 }, ++ { "vr10", 5664, 128 }, ++ { "vr11", 5792, 128 }, ++ { "vr12", 5920, 128 }, ++ { "vr13", 6048, 128 }, ++ { "vr14", 6176, 128 }, ++ { "vr15", 6304, 128 }, ++ { "vr16", 6432, 128 }, ++ { "vr17", 6560, 128 }, ++ { "vr18", 6688, 128 }, ++ { "vr19", 6816, 128 }, ++ { "vr20", 6944, 128 }, ++ { "vr21", 7072, 128 }, ++ { "vr22", 7200, 128 }, ++ { "vr23", 7328, 128 }, ++ { "vr24", 7456, 128 }, ++ { "vr25", 7584, 128 }, ++ { "vr26", 7712, 128 }, ++ { "vr27", 7840, 128 }, ++ { "vr28", 7968, 128 }, ++ { "vr29", 8096, 128 }, ++ { "vr30", 8224, 128 }, ++ { "vr31", 8352, 128 }, ++ { "xr0", 8480, 256 }, ++ { "xr1", 8736, 256 }, ++ { "xr2", 8992, 256 }, ++ { "xr3", 9248, 256 }, ++ { "xr4", 9504, 256 }, ++ { "xr5", 9760, 256 }, ++ { "xr6", 10016, 256 }, ++ { "xr7", 10272, 256 }, ++ { "xr8", 10528, 256 }, ++ { "xr9", 10784, 256 }, ++ { "xr10", 11040, 256 }, ++ { "xr11", 11296, 256 }, ++ { "xr12", 11552, 256 }, ++ { "xr13", 11808, 256 }, ++ { "xr14", 12064, 256 }, ++ { "xr15", 12320, 256 }, ++ { "xr16", 12576, 256 }, ++ { "xr17", 12832, 256 }, ++ { "xr18", 13088, 256 }, ++ { "xr19", 13344, 256 }, ++ { "xr20", 13600, 256 }, ++ { "xr21", 13856, 256 }, ++ { "xr22", 14112, 256 }, ++ { "xr23", 14368, 256 }, ++ { "xr24", 14624, 256 }, ++ { "xr25", 14880, 256 }, ++ { "xr26", 15136, 256 }, ++ { "xr27", 15392, 256 }, ++ { "xr28", 15648, 256 }, ++ { "xr29", 15904, 256 }, ++ { "xr30", 16160, 256 }, ++ { "xr31", 16416, 256 }, ++ { "scr0", 16672, 64 }, ++ { "scr1", 16736, 64 }, ++ { "scr2", 16800, 64 }, ++ { "scr3", 16864, 64 }, ++ { "eflags", 16928, 32 }, ++ { "ftop", 16960, 32 }, +}; + +#define num_regs (sizeof (regs) / sizeof (regs[0])) @@ -26702,82 +26543,152 @@ index 0000000..6021c79 + switch (regno) { + // numbers here have to match the order of regs above + // Attention: gdb order does not match valgrind order. -+ case 0: VG_(transfer) (&loongarch64->guest_R0, buf, dir, size, mod); break; -+ case 1: VG_(transfer) (&loongarch64->guest_R1, buf, dir, size, mod); break; -+ case 2: VG_(transfer) (&loongarch64->guest_R2, buf, dir, size, mod); break; -+ case 3: VG_(transfer) (&loongarch64->guest_R3, buf, dir, size, mod); break; -+ case 4: VG_(transfer) (&loongarch64->guest_R4, buf, dir, size, mod); break; -+ case 5: VG_(transfer) (&loongarch64->guest_R5, buf, dir, size, mod); break; -+ case 6: VG_(transfer) (&loongarch64->guest_R6, buf, dir, size, mod); break; -+ case 7: VG_(transfer) (&loongarch64->guest_R7, buf, dir, size, mod); break; -+ case 8: VG_(transfer) (&loongarch64->guest_R8, buf, dir, size, mod); break; -+ case 9: VG_(transfer) (&loongarch64->guest_R9, buf, dir, size, mod); break; -+ case 10: VG_(transfer) (&loongarch64->guest_R10, buf, dir, size, mod); break; -+ case 11: VG_(transfer) (&loongarch64->guest_R11, buf, dir, size, mod); break; -+ case 12: VG_(transfer) (&loongarch64->guest_R12, buf, dir, size, mod); break; -+ case 13: VG_(transfer) (&loongarch64->guest_R13, buf, dir, size, mod); break; -+ case 14: VG_(transfer) (&loongarch64->guest_R14, buf, dir, size, mod); break; -+ case 15: VG_(transfer) (&loongarch64->guest_R15, buf, dir, size, mod); break; -+ case 16: VG_(transfer) (&loongarch64->guest_R16, buf, dir, size, mod); break; -+ case 17: VG_(transfer) (&loongarch64->guest_R17, buf, dir, size, mod); break; -+ case 18: VG_(transfer) (&loongarch64->guest_R18, buf, dir, size, mod); break; -+ case 19: VG_(transfer) (&loongarch64->guest_R19, buf, dir, size, mod); break; -+ case 20: VG_(transfer) (&loongarch64->guest_R20, buf, dir, size, mod); break; -+ case 21: VG_(transfer) (&loongarch64->guest_R21, buf, dir, size, mod); break; -+ case 22: VG_(transfer) (&loongarch64->guest_R22, buf, dir, size, mod); break; -+ case 23: VG_(transfer) (&loongarch64->guest_R23, buf, dir, size, mod); break; -+ case 24: VG_(transfer) (&loongarch64->guest_R24, buf, dir, size, mod); break; -+ case 25: VG_(transfer) (&loongarch64->guest_R25, buf, dir, size, mod); break; -+ case 26: VG_(transfer) (&loongarch64->guest_R26, buf, dir, size, mod); break; -+ case 27: VG_(transfer) (&loongarch64->guest_R27, buf, dir, size, mod); break; -+ case 28: VG_(transfer) (&loongarch64->guest_R28, buf, dir, size, mod); break; -+ case 29: VG_(transfer) (&loongarch64->guest_R29, buf, dir, size, mod); break; -+ case 30: VG_(transfer) (&loongarch64->guest_R30, buf, dir, size, mod); break; -+ case 31: VG_(transfer) (&loongarch64->guest_R31, buf, dir, size, mod); break; -+ case 32: *mod = False; break; // GDBTD?? arg0 -+ case 33: VG_(transfer) (&loongarch64->guest_PC, buf, dir, size, mod); break; -+ case 34: *mod = False; break; // GDBTD?? badvaddr -+ case 35: VG_(transfer) (&loongarch64->guest_X0, buf, dir, size, mod); break; -+ case 36: VG_(transfer) (&loongarch64->guest_X1, buf, dir, size, mod); break; -+ case 37: VG_(transfer) (&loongarch64->guest_X2, buf, dir, size, mod); break; -+ case 38: VG_(transfer) (&loongarch64->guest_X3, buf, dir, size, mod); break; -+ case 39: VG_(transfer) (&loongarch64->guest_X4, buf, dir, size, mod); break; -+ case 40: VG_(transfer) (&loongarch64->guest_X5, buf, dir, size, mod); break; -+ case 41: VG_(transfer) (&loongarch64->guest_X6, buf, dir, size, mod); break; -+ case 42: VG_(transfer) (&loongarch64->guest_X7, buf, dir, size, mod); break; -+ case 43: VG_(transfer) (&loongarch64->guest_X8, buf, dir, size, mod); break; -+ case 44: VG_(transfer) (&loongarch64->guest_X9, buf, dir, size, mod); break; -+ case 45: VG_(transfer) (&loongarch64->guest_X10, buf, dir, size, mod); break; -+ case 46: VG_(transfer) (&loongarch64->guest_X11, buf, dir, size, mod); break; -+ case 47: VG_(transfer) (&loongarch64->guest_X12, buf, dir, size, mod); break; -+ case 48: VG_(transfer) (&loongarch64->guest_X13, buf, dir, size, mod); break; -+ case 49: VG_(transfer) (&loongarch64->guest_X14, buf, dir, size, mod); break; -+ case 50: VG_(transfer) (&loongarch64->guest_X15, buf, dir, size, mod); break; -+ case 51: VG_(transfer) (&loongarch64->guest_X16, buf, dir, size, mod); break; -+ case 52: VG_(transfer) (&loongarch64->guest_X17, buf, dir, size, mod); break; -+ case 53: VG_(transfer) (&loongarch64->guest_X18, buf, dir, size, mod); break; -+ case 54: VG_(transfer) (&loongarch64->guest_X19, buf, dir, size, mod); break; -+ case 55: VG_(transfer) (&loongarch64->guest_X20, buf, dir, size, mod); break; -+ case 56: VG_(transfer) (&loongarch64->guest_X21, buf, dir, size, mod); break; -+ case 57: VG_(transfer) (&loongarch64->guest_X22, buf, dir, size, mod); break; -+ case 58: VG_(transfer) (&loongarch64->guest_X23, buf, dir, size, mod); break; -+ case 59: VG_(transfer) (&loongarch64->guest_X24, buf, dir, size, mod); break; -+ case 60: VG_(transfer) (&loongarch64->guest_X25, buf, dir, size, mod); break; -+ case 61: VG_(transfer) (&loongarch64->guest_X26, buf, dir, size, mod); break; -+ case 62: VG_(transfer) (&loongarch64->guest_X27, buf, dir, size, mod); break; -+ case 63: VG_(transfer) (&loongarch64->guest_X28, buf, dir, size, mod); break; -+ case 64: VG_(transfer) (&loongarch64->guest_X29, buf, dir, size, mod); break; -+ case 65: VG_(transfer) (&loongarch64->guest_X30, buf, dir, size, mod); break; -+ case 66: VG_(transfer) (&loongarch64->guest_X31, buf, dir, size, mod); break; -+ case 67: VG_(transfer) (&loongarch64->guest_FCC0, buf, dir, size, mod); break; -+ case 68: VG_(transfer) (&loongarch64->guest_FCC1, buf, dir, size, mod); break; -+ case 69: VG_(transfer) (&loongarch64->guest_FCC2, buf, dir, size, mod); break; -+ case 70: VG_(transfer) (&loongarch64->guest_FCC3, buf, dir, size, mod); break; -+ case 71: VG_(transfer) (&loongarch64->guest_FCC4, buf, dir, size, mod); break; -+ case 72: VG_(transfer) (&loongarch64->guest_FCC5, buf, dir, size, mod); break; -+ case 73: VG_(transfer) (&loongarch64->guest_FCC6, buf, dir, size, mod); break; -+ case 74: VG_(transfer) (&loongarch64->guest_FCC7, buf, dir, size, mod); break; -+ case 75: VG_(transfer) (&loongarch64->guest_FCSR, buf, dir, size, mod); break; ++ case 0: VG_(transfer) (&loongarch64->guest_R0, buf, dir, size, mod); break; ++ case 1: VG_(transfer) (&loongarch64->guest_R1, buf, dir, size, mod); break; ++ case 2: VG_(transfer) (&loongarch64->guest_R2, buf, dir, size, mod); break; ++ case 3: VG_(transfer) (&loongarch64->guest_R3, buf, dir, size, mod); break; ++ case 4: VG_(transfer) (&loongarch64->guest_R4, buf, dir, size, mod); break; ++ case 5: VG_(transfer) (&loongarch64->guest_R5, buf, dir, size, mod); break; ++ case 6: VG_(transfer) (&loongarch64->guest_R6, buf, dir, size, mod); break; ++ case 7: VG_(transfer) (&loongarch64->guest_R7, buf, dir, size, mod); break; ++ case 8: VG_(transfer) (&loongarch64->guest_R8, buf, dir, size, mod); break; ++ case 9: VG_(transfer) (&loongarch64->guest_R9, buf, dir, size, mod); break; ++ case 10: VG_(transfer) (&loongarch64->guest_R10, buf, dir, size, mod); break; ++ case 11: VG_(transfer) (&loongarch64->guest_R11, buf, dir, size, mod); break; ++ case 12: VG_(transfer) (&loongarch64->guest_R12, buf, dir, size, mod); break; ++ case 13: VG_(transfer) (&loongarch64->guest_R13, buf, dir, size, mod); break; ++ case 14: VG_(transfer) (&loongarch64->guest_R14, buf, dir, size, mod); break; ++ case 15: VG_(transfer) (&loongarch64->guest_R15, buf, dir, size, mod); break; ++ case 16: VG_(transfer) (&loongarch64->guest_R16, buf, dir, size, mod); break; ++ case 17: VG_(transfer) (&loongarch64->guest_R17, buf, dir, size, mod); break; ++ case 18: VG_(transfer) (&loongarch64->guest_R18, buf, dir, size, mod); break; ++ case 19: VG_(transfer) (&loongarch64->guest_R19, buf, dir, size, mod); break; ++ case 20: VG_(transfer) (&loongarch64->guest_R20, buf, dir, size, mod); break; ++ case 21: VG_(transfer) (&loongarch64->guest_R21, buf, dir, size, mod); break; ++ case 22: VG_(transfer) (&loongarch64->guest_R22, buf, dir, size, mod); break; ++ case 23: VG_(transfer) (&loongarch64->guest_R23, buf, dir, size, mod); break; ++ case 24: VG_(transfer) (&loongarch64->guest_R24, buf, dir, size, mod); break; ++ case 25: VG_(transfer) (&loongarch64->guest_R25, buf, dir, size, mod); break; ++ case 26: VG_(transfer) (&loongarch64->guest_R26, buf, dir, size, mod); break; ++ case 27: VG_(transfer) (&loongarch64->guest_R27, buf, dir, size, mod); break; ++ case 28: VG_(transfer) (&loongarch64->guest_R28, buf, dir, size, mod); break; ++ case 29: VG_(transfer) (&loongarch64->guest_R29, buf, dir, size, mod); break; ++ case 30: VG_(transfer) (&loongarch64->guest_R30, buf, dir, size, mod); break; ++ case 31: VG_(transfer) (&loongarch64->guest_R31, buf, dir, size, mod); break; ++ case 32: *mod = False; break; // GDBTD?? arg0 ++ case 33: VG_(transfer) (&loongarch64->guest_PC, buf, dir, size, mod); break; ++ case 34: *mod = False; break; // GDBTD?? badvaddr ++ case 35: VG_(transfer) (&loongarch64->guest_X0, buf, dir, size, mod); break; ++ case 36: VG_(transfer) (&loongarch64->guest_X1, buf, dir, size, mod); break; ++ case 37: VG_(transfer) (&loongarch64->guest_X2, buf, dir, size, mod); break; ++ case 38: VG_(transfer) (&loongarch64->guest_X3, buf, dir, size, mod); break; ++ case 39: VG_(transfer) (&loongarch64->guest_X4, buf, dir, size, mod); break; ++ case 40: VG_(transfer) (&loongarch64->guest_X5, buf, dir, size, mod); break; ++ case 41: VG_(transfer) (&loongarch64->guest_X6, buf, dir, size, mod); break; ++ case 42: VG_(transfer) (&loongarch64->guest_X7, buf, dir, size, mod); break; ++ case 43: VG_(transfer) (&loongarch64->guest_X8, buf, dir, size, mod); break; ++ case 44: VG_(transfer) (&loongarch64->guest_X9, buf, dir, size, mod); break; ++ case 45: VG_(transfer) (&loongarch64->guest_X10, buf, dir, size, mod); break; ++ case 46: VG_(transfer) (&loongarch64->guest_X11, buf, dir, size, mod); break; ++ case 47: VG_(transfer) (&loongarch64->guest_X12, buf, dir, size, mod); break; ++ case 48: VG_(transfer) (&loongarch64->guest_X13, buf, dir, size, mod); break; ++ case 49: VG_(transfer) (&loongarch64->guest_X14, buf, dir, size, mod); break; ++ case 50: VG_(transfer) (&loongarch64->guest_X15, buf, dir, size, mod); break; ++ case 51: VG_(transfer) (&loongarch64->guest_X16, buf, dir, size, mod); break; ++ case 52: VG_(transfer) (&loongarch64->guest_X17, buf, dir, size, mod); break; ++ case 53: VG_(transfer) (&loongarch64->guest_X18, buf, dir, size, mod); break; ++ case 54: VG_(transfer) (&loongarch64->guest_X19, buf, dir, size, mod); break; ++ case 55: VG_(transfer) (&loongarch64->guest_X20, buf, dir, size, mod); break; ++ case 56: VG_(transfer) (&loongarch64->guest_X21, buf, dir, size, mod); break; ++ case 57: VG_(transfer) (&loongarch64->guest_X22, buf, dir, size, mod); break; ++ case 58: VG_(transfer) (&loongarch64->guest_X23, buf, dir, size, mod); break; ++ case 59: VG_(transfer) (&loongarch64->guest_X24, buf, dir, size, mod); break; ++ case 60: VG_(transfer) (&loongarch64->guest_X25, buf, dir, size, mod); break; ++ case 61: VG_(transfer) (&loongarch64->guest_X26, buf, dir, size, mod); break; ++ case 62: VG_(transfer) (&loongarch64->guest_X27, buf, dir, size, mod); break; ++ case 63: VG_(transfer) (&loongarch64->guest_X28, buf, dir, size, mod); break; ++ case 64: VG_(transfer) (&loongarch64->guest_X29, buf, dir, size, mod); break; ++ case 65: VG_(transfer) (&loongarch64->guest_X30, buf, dir, size, mod); break; ++ case 66: VG_(transfer) (&loongarch64->guest_X31, buf, dir, size, mod); break; ++ case 67: VG_(transfer) (&loongarch64->guest_FCC0, buf, dir, size, mod); break; ++ case 68: VG_(transfer) (&loongarch64->guest_FCC1, buf, dir, size, mod); break; ++ case 69: VG_(transfer) (&loongarch64->guest_FCC2, buf, dir, size, mod); break; ++ case 70: VG_(transfer) (&loongarch64->guest_FCC3, buf, dir, size, mod); break; ++ case 71: VG_(transfer) (&loongarch64->guest_FCC4, buf, dir, size, mod); break; ++ case 72: VG_(transfer) (&loongarch64->guest_FCC5, buf, dir, size, mod); break; ++ case 73: VG_(transfer) (&loongarch64->guest_FCC6, buf, dir, size, mod); break; ++ case 74: VG_(transfer) (&loongarch64->guest_FCC7, buf, dir, size, mod); break; ++ case 75: VG_(transfer) (&loongarch64->guest_FCSR, buf, dir, size, mod); break; ++ case 76: VG_(transfer) (&loongarch64->guest_X0, buf, dir, size, mod); break; ++ case 77: VG_(transfer) (&loongarch64->guest_X1, buf, dir, size, mod); break; ++ case 78: VG_(transfer) (&loongarch64->guest_X2, buf, dir, size, mod); break; ++ case 79: VG_(transfer) (&loongarch64->guest_X3, buf, dir, size, mod); break; ++ case 80: VG_(transfer) (&loongarch64->guest_X4, buf, dir, size, mod); break; ++ case 81: VG_(transfer) (&loongarch64->guest_X5, buf, dir, size, mod); break; ++ case 82: VG_(transfer) (&loongarch64->guest_X6, buf, dir, size, mod); break; ++ case 83: VG_(transfer) (&loongarch64->guest_X7, buf, dir, size, mod); break; ++ case 84: VG_(transfer) (&loongarch64->guest_X8, buf, dir, size, mod); break; ++ case 85: VG_(transfer) (&loongarch64->guest_X9, buf, dir, size, mod); break; ++ case 86: VG_(transfer) (&loongarch64->guest_X10, buf, dir, size, mod); break; ++ case 87: VG_(transfer) (&loongarch64->guest_X11, buf, dir, size, mod); break; ++ case 88: VG_(transfer) (&loongarch64->guest_X12, buf, dir, size, mod); break; ++ case 89: VG_(transfer) (&loongarch64->guest_X13, buf, dir, size, mod); break; ++ case 90: VG_(transfer) (&loongarch64->guest_X14, buf, dir, size, mod); break; ++ case 91: VG_(transfer) (&loongarch64->guest_X15, buf, dir, size, mod); break; ++ case 92: VG_(transfer) (&loongarch64->guest_X16, buf, dir, size, mod); break; ++ case 93: VG_(transfer) (&loongarch64->guest_X17, buf, dir, size, mod); break; ++ case 94: VG_(transfer) (&loongarch64->guest_X18, buf, dir, size, mod); break; ++ case 95: VG_(transfer) (&loongarch64->guest_X19, buf, dir, size, mod); break; ++ case 96: VG_(transfer) (&loongarch64->guest_X20, buf, dir, size, mod); break; ++ case 97: VG_(transfer) (&loongarch64->guest_X21, buf, dir, size, mod); break; ++ case 98: VG_(transfer) (&loongarch64->guest_X22, buf, dir, size, mod); break; ++ case 99: VG_(transfer) (&loongarch64->guest_X23, buf, dir, size, mod); break; ++ case 100: VG_(transfer) (&loongarch64->guest_X24, buf, dir, size, mod); break; ++ case 101: VG_(transfer) (&loongarch64->guest_X25, buf, dir, size, mod); break; ++ case 102: VG_(transfer) (&loongarch64->guest_X26, buf, dir, size, mod); break; ++ case 103: VG_(transfer) (&loongarch64->guest_X27, buf, dir, size, mod); break; ++ case 104: VG_(transfer) (&loongarch64->guest_X28, buf, dir, size, mod); break; ++ case 105: VG_(transfer) (&loongarch64->guest_X29, buf, dir, size, mod); break; ++ case 106: VG_(transfer) (&loongarch64->guest_X30, buf, dir, size, mod); break; ++ case 107: VG_(transfer) (&loongarch64->guest_X31, buf, dir, size, mod); break; ++ case 108: VG_(transfer) (&loongarch64->guest_X0, buf, dir, size, mod); break; ++ case 109: VG_(transfer) (&loongarch64->guest_X1, buf, dir, size, mod); break; ++ case 110: VG_(transfer) (&loongarch64->guest_X2, buf, dir, size, mod); break; ++ case 111: VG_(transfer) (&loongarch64->guest_X3, buf, dir, size, mod); break; ++ case 112: VG_(transfer) (&loongarch64->guest_X4, buf, dir, size, mod); break; ++ case 113: VG_(transfer) (&loongarch64->guest_X5, buf, dir, size, mod); break; ++ case 114: VG_(transfer) (&loongarch64->guest_X6, buf, dir, size, mod); break; ++ case 115: VG_(transfer) (&loongarch64->guest_X7, buf, dir, size, mod); break; ++ case 116: VG_(transfer) (&loongarch64->guest_X8, buf, dir, size, mod); break; ++ case 117: VG_(transfer) (&loongarch64->guest_X9, buf, dir, size, mod); break; ++ case 118: VG_(transfer) (&loongarch64->guest_X10, buf, dir, size, mod); break; ++ case 119: VG_(transfer) (&loongarch64->guest_X11, buf, dir, size, mod); break; ++ case 120: VG_(transfer) (&loongarch64->guest_X12, buf, dir, size, mod); break; ++ case 121: VG_(transfer) (&loongarch64->guest_X13, buf, dir, size, mod); break; ++ case 122: VG_(transfer) (&loongarch64->guest_X14, buf, dir, size, mod); break; ++ case 123: VG_(transfer) (&loongarch64->guest_X15, buf, dir, size, mod); break; ++ case 124: VG_(transfer) (&loongarch64->guest_X16, buf, dir, size, mod); break; ++ case 125: VG_(transfer) (&loongarch64->guest_X17, buf, dir, size, mod); break; ++ case 126: VG_(transfer) (&loongarch64->guest_X18, buf, dir, size, mod); break; ++ case 127: VG_(transfer) (&loongarch64->guest_X19, buf, dir, size, mod); break; ++ case 128: VG_(transfer) (&loongarch64->guest_X20, buf, dir, size, mod); break; ++ case 129: VG_(transfer) (&loongarch64->guest_X21, buf, dir, size, mod); break; ++ case 130: VG_(transfer) (&loongarch64->guest_X22, buf, dir, size, mod); break; ++ case 131: VG_(transfer) (&loongarch64->guest_X23, buf, dir, size, mod); break; ++ case 132: VG_(transfer) (&loongarch64->guest_X24, buf, dir, size, mod); break; ++ case 133: VG_(transfer) (&loongarch64->guest_X25, buf, dir, size, mod); break; ++ case 134: VG_(transfer) (&loongarch64->guest_X26, buf, dir, size, mod); break; ++ case 135: VG_(transfer) (&loongarch64->guest_X27, buf, dir, size, mod); break; ++ case 136: VG_(transfer) (&loongarch64->guest_X28, buf, dir, size, mod); break; ++ case 137: VG_(transfer) (&loongarch64->guest_X29, buf, dir, size, mod); break; ++ case 138: VG_(transfer) (&loongarch64->guest_X30, buf, dir, size, mod); break; ++ case 139: VG_(transfer) (&loongarch64->guest_X31, buf, dir, size, mod); break; ++ case 140: *mod = False; break; // GDBTD?? src0 ++ case 141: *mod = False; break; // GDBTD?? src1 ++ case 142: *mod = False; break; // GDBTD?? src2 ++ case 143: *mod = False; break; // GDBTD?? src3 ++ case 144: *mod = False; break; // GDBTD?? eflags ++ case 145: *mod = False; break; // GDBTD?? ftop + default: vg_assert(0); + } +} @@ -26821,33 +26732,33 @@ index 0000000..6021c79 + gdbserver_expedite_regs = expedite_regs; +} diff --git a/coregrind/m_gdbserver/valgrind_low.h b/coregrind/m_gdbserver/valgrind_low.h -index d8ae3c9..3393c32 100644 +index ef4e19089746..03bc78e7e25f 100644 --- a/coregrind/m_gdbserver/valgrind_low.h +++ b/coregrind/m_gdbserver/valgrind_low.h -@@ -109,5 +109,6 @@ extern void s390x_init_architecture (struct valgrind_target_ops *target); - extern void mips32_init_architecture (struct valgrind_target_ops *target); +@@ -110,5 +110,6 @@ extern void mips32_init_architecture (struct valgrind_target_ops *target); extern void mips64_init_architecture (struct valgrind_target_ops *target); extern void nanomips_init_architecture (struct valgrind_target_ops *target); + extern void riscv64_init_architecture (struct valgrind_target_ops *target); +extern void loongarch64_init_architecture (struct valgrind_target_ops *target); #endif diff --git a/coregrind/m_initimg/initimg-linux.c b/coregrind/m_initimg/initimg-linux.c -index 7a7d453..237a11f 100644 +index 483b7a3ddd11..1421562593a7 100644 --- a/coregrind/m_initimg/initimg-linux.c +++ b/coregrind/m_initimg/initimg-linux.c -@@ -913,7 +913,8 @@ Addr setup_client_stack( void* init_sp, - && !defined(VGP_ppc64le_linux) \ +@@ -911,7 +911,8 @@ Addr setup_client_stack( void* init_sp, && !defined(VGP_mips32_linux) && !defined(VGP_mips64_linux) \ && !defined(VGP_nanomips_linux) \ -- && !defined(VGP_s390x_linux) -+ && !defined(VGP_s390x_linux) \ + && !defined(VGP_s390x_linux) \ +- && !defined(VGP_riscv64_linux) ++ && !defined(VGP_riscv64_linux) \ + && !defined(VGP_loongarch64_linux) case AT_SYSINFO_EHDR: { /* Trash this, because we don't reproduce it */ - const NSegment* ehdrseg = VG_(am_find_nsegment)((Addr)auxv->u.a_ptr); -@@ -1344,6 +1345,20 @@ void VG_(ii_finalise_image)( IIFinaliseImageInfo iifii ) - arch->vex.guest_PC = iifii.initial_client_IP; - arch->vex.guest_r31 = iifii.initial_client_SP; + /* riscv64-linux: Keep the VDSO mapping on this platform present. +@@ -1374,6 +1375,20 @@ void VG_(ii_finalise_image)( IIFinaliseImageInfo iifii ) + + #define PRECISE_GUEST_REG_DEFINEDNESS_AT_STARTUP 1 +# elif defined(VGP_loongarch64_linux) + vg_assert(0 == sizeof(VexGuestLOONGARCH64State) % LibVEX_GUEST_STATE_ALIGN); @@ -26867,12 +26778,12 @@ index 7a7d453..237a11f 100644 # error Unknown platform # endif diff --git a/coregrind/m_libcassert.c b/coregrind/m_libcassert.c -index 0b04bfc..c95253d 100644 +index c6380d4e0bab..7d7ea4b039aa 100644 --- a/coregrind/m_libcassert.c +++ b/coregrind/m_libcassert.c -@@ -264,6 +264,26 @@ - (srP)->misc.MIPS32.r31 = (UInt)ra; \ - (srP)->misc.MIPS32.r28 = (UInt)gp; \ +@@ -283,6 +283,26 @@ + (srP)->misc.RISCV64.r_fp = fp; \ + (srP)->misc.RISCV64.r_ra = ra; \ } +#elif defined(VGP_loongarch64_linux) +# define GET_STARTREGS(srP) \ @@ -26898,40 +26809,37 @@ index 0b04bfc..c95253d 100644 # error Unknown platform #endif diff --git a/coregrind/m_libcfile.c b/coregrind/m_libcfile.c -index 5d3a349..bbbd4e7 100644 +index 767f34522c9d..87ec3455b385 100644 --- a/coregrind/m_libcfile.c +++ b/coregrind/m_libcfile.c -@@ -264,7 +264,8 @@ Bool VG_(resolve_filemode) ( Int fd, Int * result ) - +@@ -265,7 +265,7 @@ Bool VG_(resolve_filemode) ( Int fd, Int * result ) SysRes VG_(mknod) ( const HChar* pathname, Int mode, UWord dev ) { --# if defined(VGP_arm64_linux) || defined(VGP_nanomips_linux) -+# if defined(VGP_arm64_linux) || defined(VGP_nanomips_linux) \ -+ || defined(VGP_loongarch64_linux) - /* ARM64 wants to use __NR_mknodat rather than __NR_mknod. */ + # if defined(VGP_arm64_linux) || defined(VGP_nanomips_linux) \ +- || defined(VGP_riscv64_linux) ++ || defined(VGP_riscv64_linux) || defined(VGP_loongarch64_linux) + /* More recent Linux platforms have only __NR_mknodat and no __NR_mknod. */ SysRes res = VG_(do_syscall4)(__NR_mknodat, VKI_AT_FDCWD, (UWord)pathname, mode, dev); -@@ -290,7 +291,8 @@ SysRes VG_(mknod) ( const HChar* pathname, Int mode, UWord dev ) - +@@ -292,7 +292,7 @@ SysRes VG_(mknod) ( const HChar* pathname, Int mode, UWord dev ) SysRes VG_(open) ( const HChar* pathname, Int flags, Int mode ) { --# if defined(VGP_arm64_linux) || defined(VGP_nanomips_linux) -+# if defined(VGP_arm64_linux) || defined(VGP_nanomips_linux) \ -+ || defined(VGP_loongarch64_linux) - /* ARM64 wants to use __NR_openat rather than __NR_open. */ + # if defined(VGP_arm64_linux) || defined(VGP_nanomips_linux) \ +- || defined(VGP_riscv64_linux) ++ || defined(VGP_riscv64_linux) || defined(VGP_loongarch64_linux) + /* More recent Linux platforms have only __NR_openat and no __NR_open. */ SysRes res = VG_(do_syscall4)(__NR_openat, VKI_AT_FDCWD, (UWord)pathname, flags, mode); -@@ -384,7 +386,8 @@ Int VG_(pipe) ( Int fd[2] ) - } else { +@@ -387,7 +387,7 @@ Int VG_(pipe) ( Int fd[2] ) return -1; } --# elif defined(VGP_arm64_linux) || defined(VGP_nanomips_linux) -+# elif defined(VGP_arm64_linux) || defined(VGP_nanomips_linux) \ -+ || defined(VGP_loongarch64_linux) + # elif defined(VGP_arm64_linux) || defined(VGP_nanomips_linux) \ +- || defined(VGP_riscv64_linux) ++ || defined(VGP_riscv64_linux) || defined(VGP_loongarch64_linux) SysRes res = VG_(do_syscall2)(__NR_pipe2, (UWord)fd, 0); return sr_isError(res) ? -1 : 0; # elif defined(VGO_linux) -@@ -517,12 +520,19 @@ SysRes VG_(stat) ( const HChar* file_name, struct vg_stat* vgbuf ) +@@ -520,12 +520,19 @@ SysRes VG_(stat) ( const HChar* file_name, struct vg_stat* vgbuf ) { struct vki_statx buf; res = VG_(do_syscall5)(__NR_statx, VKI_AT_FDCWD, (UWord)file_name, 0, VKI_STATX_ALL, (UWord)&buf); @@ -26951,7 +26859,7 @@ index 5d3a349..bbbd4e7 100644 } # endif # if defined(VGO_linux) || defined(VGO_darwin) -@@ -602,12 +612,19 @@ Int VG_(fstat) ( Int fd, struct vg_stat* vgbuf ) +@@ -609,12 +616,19 @@ Int VG_(fstat) ( Int fd, struct vg_stat* vgbuf ) const char* file_name = ""; res = VG_(do_syscall5)(__NR_statx, fd, (RegWord)file_name, VKI_AT_EMPTY_PATH, VKI_STATX_ALL, (RegWord)&buf); @@ -26971,194 +26879,185 @@ index 5d3a349..bbbd4e7 100644 } #endif # if defined(VGO_linux) || defined(VGO_darwin) -@@ -731,7 +748,8 @@ SysRes VG_(dup) ( Int oldfd ) - +@@ -739,7 +753,7 @@ SysRes VG_(dup) ( Int oldfd ) SysRes VG_(dup2) ( Int oldfd, Int newfd ) { --# if defined(VGP_arm64_linux) || defined(VGP_nanomips_linux) -+# if defined(VGP_arm64_linux) || defined(VGP_nanomips_linux) \ -+ || defined(VGP_loongarch64_linux) + # if defined(VGP_arm64_linux) || defined(VGP_nanomips_linux) \ +- || defined(VGP_riscv64_linux) ++ || defined(VGP_riscv64_linux) || defined(VGP_loongarch64_linux) /* We only have dup3, that means we have to mimic dup2. The only real difference is when oldfd == newfd. dup3 always returns an error, but dup2 returns only an -@@ -777,7 +795,7 @@ Int VG_(rename) ( const HChar* old_name, const HChar* new_name ) +@@ -785,7 +799,8 @@ Int VG_(rename) ( const HChar* old_name, const HChar* new_name ) # if defined(VGO_solaris) || defined(VGP_arm64_linux) SysRes res = VG_(do_syscall4)(__NR_renameat, VKI_AT_FDCWD, (UWord)old_name, VKI_AT_FDCWD, (UWord)new_name); --# elif defined(VGP_nanomips_linux) -+# elif defined(VGP_nanomips_linux) || defined(VGP_loongarch64_linux) +-# elif defined(VGP_nanomips_linux) || defined(VGP_riscv64_linux) ++# elif defined(VGP_nanomips_linux) || defined(VGP_riscv64_linux) \ ++ || defined(VGP_loongarch64_linux) SysRes res = VG_(do_syscall5)(__NR_renameat2, VKI_AT_FDCWD, (UWord)old_name, VKI_AT_FDCWD, (UWord)new_name, 0); -@@ -791,7 +809,8 @@ Int VG_(rename) ( const HChar* old_name, const HChar* new_name ) - +@@ -800,7 +815,7 @@ Int VG_(rename) ( const HChar* old_name, const HChar* new_name ) Int VG_(unlink) ( const HChar* file_name ) { --# if defined(VGP_arm64_linux) || defined(VGP_nanomips_linux) -+# if defined(VGP_arm64_linux) || defined(VGP_nanomips_linux) \ -+ || defined(VGP_loongarch64_linux) + # if defined(VGP_arm64_linux) || defined(VGP_nanomips_linux) \ +- || defined(VGP_riscv64_linux) ++ || defined(VGP_riscv64_linux) || defined(VGP_loongarch64_linux) SysRes res = VG_(do_syscall2)(__NR_unlinkat, VKI_AT_FDCWD, (UWord)file_name); # elif defined(VGO_linux) || defined(VGO_darwin) || defined(VGO_freebsd) -@@ -870,7 +889,8 @@ const HChar *VG_(get_startup_wd) ( void ) - SysRes VG_(poll) (struct vki_pollfd *fds, Int nfds, Int timeout) +@@ -880,7 +895,7 @@ SysRes VG_(poll) (struct vki_pollfd *fds, Int nfds, Int timeout) { SysRes res; --# if defined(VGP_arm64_linux) || defined(VGP_nanomips_linux) -+# if defined(VGP_arm64_linux) || defined(VGP_nanomips_linux) \ -+ || defined(VGP_loongarch64_linux) - /* ARM64 wants to use __NR_ppoll rather than __NR_poll. */ + # if defined(VGP_arm64_linux) || defined(VGP_nanomips_linux) \ +- || defined(VGP_riscv64_linux) ++ || defined(VGP_riscv64_linux) || defined(VGP_loongarch64_linux) + /* More recent Linux platforms have only __NR_ppoll and no __NR_poll. */ struct vki_timespec timeout_ts; if (timeout >= 0) { -@@ -915,7 +935,8 @@ SSizeT VG_(readlink) (const HChar* path, HChar* buf, SizeT bufsiz) - { +@@ -926,7 +941,7 @@ SSizeT VG_(readlink) (const HChar* path, HChar* buf, SizeT bufsiz) SysRes res; /* res = readlink( path, buf, bufsiz ); */ --# if defined(VGP_arm64_linux) || defined(VGP_nanomips_linux) -+# if defined(VGP_arm64_linux) || defined(VGP_nanomips_linux) \ -+ || defined(VGP_loongarch64_linux) + # if defined(VGP_arm64_linux) || defined(VGP_nanomips_linux) \ +- || defined(VGP_riscv64_linux) ++ || defined(VGP_riscv64_linux) || defined(VGP_loongarch64_linux) res = VG_(do_syscall4)(__NR_readlinkat, VKI_AT_FDCWD, (UWord)path, (UWord)buf, bufsiz); # elif defined(VGO_linux) || defined(VGO_darwin) || defined(VGO_freebsd) -@@ -994,7 +1015,8 @@ Int VG_(access) ( const HChar* path, Bool irusr, Bool iwusr, Bool ixusr ) - UWord w = (irusr ? VKI_R_OK : 0) +@@ -1006,7 +1021,7 @@ Int VG_(access) ( const HChar* path, Bool irusr, Bool iwusr, Bool ixusr ) | (iwusr ? VKI_W_OK : 0) | (ixusr ? VKI_X_OK : 0); --# if defined(VGP_arm64_linux) || defined(VGP_nanomips_linux) -+# if defined(VGP_arm64_linux) || defined(VGP_nanomips_linux) \ -+ || defined(VGP_loongarch64_linux) + # if defined(VGP_arm64_linux) || defined(VGP_nanomips_linux) \ +- || defined(VGP_riscv64_linux) ++ || defined(VGP_riscv64_linux) || defined(VGP_loongarch64_linux) SysRes res = VG_(do_syscall3)(__NR_faccessat, VKI_AT_FDCWD, (UWord)path, w); # elif defined(VGO_linux) || defined(VGO_darwin) || defined(VGO_freebsd) SysRes res = VG_(do_syscall2)(__NR_access, (UWord)path, w); -@@ -1140,7 +1162,8 @@ SysRes VG_(pread) ( Int fd, void* buf, Int count, OffT offset ) - return res; +@@ -1153,7 +1168,7 @@ SysRes VG_(pread) ( Int fd, void* buf, Int count, OffT offset ) # elif defined(VGP_amd64_linux) || defined(VGP_s390x_linux) \ || defined(VGP_ppc64be_linux) || defined(VGP_ppc64le_linux) \ -- || defined(VGP_mips64_linux) || defined(VGP_arm64_linux) -+ || defined(VGP_mips64_linux) || defined(VGP_arm64_linux) \ -+ || defined(VGP_loongarch64_linux) + || defined(VGP_mips64_linux) || defined(VGP_arm64_linux) \ +- || defined(VGP_riscv64_linux) ++ || defined(VGP_riscv64_linux) || defined(VGP_loongarch64_linux) res = VG_(do_syscall4)(__NR_pread64, fd, (UWord)buf, count, offset); return res; - # elif defined(VGP_amd64_freebsd) -@@ -1404,7 +1427,8 @@ Int VG_(socket) ( Int domain, Int type, Int protocol ) - + # elif defined(VGP_amd64_freebsd) || defined(VGP_arm64_freebsd) +@@ -1419,7 +1434,8 @@ Int VG_(socket) ( Int domain, Int type, Int protocol ) # elif defined(VGP_amd64_linux) || defined(VGP_arm_linux) \ || defined(VGP_mips32_linux) || defined(VGP_mips64_linux) \ -- || defined(VGP_arm64_linux) || defined(VGP_nanomips_linux) || defined(VGO_freebsd) -+ || defined(VGP_arm64_linux) || defined(VGP_nanomips_linux) \ -+ || defined(VGO_freebsd) || defined(VGP_loongarch64_linux) + || defined(VGP_arm64_linux) || defined(VGP_nanomips_linux) \ +- || defined(VGP_riscv64_linux) || defined(VGO_freebsd) ++ || defined(VGP_riscv64_linux) || defined(VGP_loongarch64_linux) \ ++ || defined(VGO_freebsd) SysRes res; res = VG_(do_syscall3)(__NR_socket, domain, type, protocol ); return sr_isError(res) ? -1 : sr_Res(res); -@@ -1459,7 +1483,8 @@ Int my_connect ( Int sockfd, struct vki_sockaddr_in* serv_addr, Int addrlen ) - +@@ -1475,7 +1491,8 @@ Int my_connect ( Int sockfd, struct vki_sockaddr_in* serv_addr, Int addrlen ) # elif defined(VGP_amd64_linux) || defined(VGP_arm_linux) \ || defined(VGP_mips32_linux) || defined(VGP_mips64_linux) \ -- || defined(VGP_arm64_linux) || defined(VGP_nanomips_linux) || defined(VGO_freebsd) -+ || defined(VGP_arm64_linux) || defined(VGP_nanomips_linux) \ -+ || defined(VGO_freebsd) || defined(VGP_loongarch64_linux) + || defined(VGP_arm64_linux) || defined(VGP_nanomips_linux) \ +- || defined(VGP_riscv64_linux) || defined(VGO_freebsd) ++ || defined(VGP_riscv64_linux) || defined(VGP_loongarch64_linux) \ ++ || defined(VGO_freebsd) SysRes res; res = VG_(do_syscall3)(__NR_connect, sockfd, (UWord)serv_addr, addrlen); return sr_isError(res) ? -1 : sr_Res(res); -@@ -1506,7 +1531,8 @@ Int VG_(write_socket)( Int sd, const void *msg, Int count ) - +@@ -1523,7 +1540,8 @@ Int VG_(write_socket)( Int sd, const void *msg, Int count ) # elif defined(VGP_amd64_linux) || defined(VGP_arm_linux) \ || defined(VGP_mips32_linux) || defined(VGP_mips64_linux) \ -- || defined(VGP_arm64_linux) || defined(VGP_nanomips_linux) || defined(VGO_freebsd) -+ || defined(VGP_arm64_linux) || defined(VGP_nanomips_linux) \ -+ || defined(VGO_freebsd) || defined(VGP_loongarch64_linux) + || defined(VGP_arm64_linux) || defined(VGP_nanomips_linux) \ +- || defined(VGP_riscv64_linux) || defined(VGO_freebsd) ++ || defined(VGP_riscv64_linux) || defined(VGP_loongarch64_linux) \ ++ || defined(VGO_freebsd) SysRes res; res = VG_(do_syscall6)(__NR_sendto, sd, (UWord)msg, count, VKI_MSG_NOSIGNAL, 0,0); -@@ -1544,7 +1570,8 @@ Int VG_(getsockname) ( Int sd, struct vki_sockaddr *name, Int *namelen) +@@ -1561,7 +1579,7 @@ Int VG_(getsockname) ( Int sd, struct vki_sockaddr *name, Int *namelen) # elif defined(VGP_amd64_linux) || defined(VGP_arm_linux) \ || defined(VGP_mips64_linux) || defined(VGP_arm64_linux) \ - || defined(VGP_nanomips_linux) || defined(VGO_freebsd) \ -- || defined(VGP_mips64_linux) || defined(VGP_arm64_linux) -+ || defined(VGP_mips64_linux) || defined(VGP_arm64_linux) \ -+ || defined(VGP_loongarch64_linux) + || defined(VGP_nanomips_linux) || defined(VGP_riscv64_linux) \ +- || defined(VGO_freebsd) ++ || defined(VGP_loongarch64_linux) || defined(VGO_freebsd) SysRes res; res = VG_(do_syscall3)( __NR_getsockname, (UWord)sd, (UWord)name, (UWord)namelen ); -@@ -1583,7 +1610,8 @@ Int VG_(getpeername) ( Int sd, struct vki_sockaddr *name, Int *namelen) - +@@ -1601,7 +1619,7 @@ Int VG_(getpeername) ( Int sd, struct vki_sockaddr *name, Int *namelen) # elif defined(VGP_amd64_linux) || defined(VGP_arm_linux) \ || defined(VGP_mips64_linux) || defined(VGP_arm64_linux) \ -- || defined(VGP_nanomips_linux) || defined(VGO_freebsd) -+ || defined(VGP_nanomips_linux) || defined(VGO_freebsd) \ -+ || defined(VGP_loongarch64_linux) + || defined(VGP_nanomips_linux) || defined(VGP_riscv64_linux) \ +- || defined(VGO_freebsd) ++ || defined(VGP_loongarch64_linux) || defined(VGO_freebsd) SysRes res; res = VG_(do_syscall3)( __NR_getpeername, (UWord)sd, (UWord)name, (UWord)namelen ); -@@ -1625,7 +1653,7 @@ Int VG_(getsockopt) ( Int sd, Int level, Int optname, void *optval, +@@ -1643,7 +1661,8 @@ Int VG_(getsockopt) ( Int sd, Int level, Int optname, void *optval, # elif defined(VGP_amd64_linux) || defined(VGP_arm_linux) \ || defined(VGP_mips32_linux) || defined(VGP_mips64_linux) \ || defined(VGP_arm64_linux) || defined(VGP_nanomips_linux) \ -- || defined(VGO_freebsd) -+ || defined(VGO_freebsd) || defined(VGP_loongarch64_linux) +- || defined(VGP_riscv64_linux) || defined(VGO_freebsd) ++ || defined(VGP_riscv64_linux) || defined(VGP_loongarch64_linux) \ ++ || defined(VGO_freebsd) SysRes res; res = VG_(do_syscall5)( __NR_getsockopt, (UWord)sd, (UWord)level, (UWord)optname, -@@ -1669,7 +1697,8 @@ Int VG_(setsockopt) ( Int sd, Int level, Int optname, void *optval, - +@@ -1688,7 +1707,7 @@ Int VG_(setsockopt) ( Int sd, Int level, Int optname, void *optval, # elif defined(VGP_amd64_linux) || defined(VGP_arm_linux) \ || defined(VGP_mips32_linux) || defined(VGP_mips64_linux) \ -- || defined(VGP_arm64_linux) || defined(VGP_nanomips_linux) -+ || defined(VGP_arm64_linux) || defined(VGP_nanomips_linux) \ -+ || defined(VGP_loongarch64_linux) + || defined(VGP_arm64_linux) || defined(VGP_nanomips_linux) \ +- || defined(VGP_riscv64_linux) ++ || defined(VGP_riscv64_linux) || defined(VGP_loongarch64_linux) SysRes res; res = VG_(do_syscall5)( __NR_setsockopt, (UWord)sd, (UWord)level, (UWord)optname, diff --git a/coregrind/m_libcproc.c b/coregrind/m_libcproc.c -index 592d69b..61827cb 100644 +index c70f229e5d0f..575a52a029a7 100644 --- a/coregrind/m_libcproc.c +++ b/coregrind/m_libcproc.c -@@ -698,7 +698,8 @@ Int VG_(gettid)(void) - * the /proc/self link is pointing... +@@ -699,7 +699,7 @@ Int VG_(gettid)(void) */ --# if defined(VGP_arm64_linux) || defined(VGP_nanomips_linux) -+# if defined(VGP_arm64_linux) || defined(VGP_nanomips_linux) \ -+ || defined(VGP_loongarch64_linux) + # if defined(VGP_arm64_linux) || defined(VGP_nanomips_linux) \ +- || defined(VGP_riscv64_linux) ++ || defined(VGP_riscv64_linux) || defined(VGP_loongarch64_linux) res = VG_(do_syscall4)(__NR_readlinkat, VKI_AT_FDCWD, (UWord)"/proc/self", (UWord)pid, sizeof(pid)); -@@ -753,7 +754,8 @@ Int VG_(getpid) ( void ) - Int VG_(getpgrp) ( void ) +@@ -755,7 +755,7 @@ Int VG_(getpgrp) ( void ) { /* ASSUMES SYSCALL ALWAYS SUCCEEDS */ --# if defined(VGP_arm64_linux) || defined(VGP_nanomips_linux) -+# if defined(VGP_arm64_linux) || defined(VGP_nanomips_linux) \ -+ || defined(VGP_loongarch64_linux) + # if defined(VGP_arm64_linux) || defined(VGP_nanomips_linux) \ +- || defined(VGP_riscv64_linux) ++ || defined(VGP_riscv64_linux) || defined(VGP_loongarch64_linux) return sr_Res( VG_(do_syscall1)(__NR_getpgid, 0) ); # elif defined(VGO_linux) || defined(VGO_darwin) || defined(VGO_freebsd) return sr_Res( VG_(do_syscall0)(__NR_getpgrp) ); -@@ -850,7 +852,7 @@ Int VG_(getgroups)( Int size, UInt* list ) +@@ -852,7 +852,8 @@ Int VG_(getgroups)( Int size, UInt* list ) || defined(VGO_darwin) || defined(VGP_s390x_linux) \ || defined(VGP_mips32_linux) || defined(VGP_arm64_linux) \ || defined(VGO_solaris) || defined(VGP_nanomips_linux) \ -- || defined(VGO_freebsd) -+ || defined(VGO_freebsd) || defined(VGP_loongarch64_linux) +- || defined(VGP_riscv64_linux) || defined(VGO_freebsd) ++ || defined(VGP_riscv64_linux) || defined(VGP_loongarch64_linux) \ ++ || defined(VGO_freebsd) SysRes sres; sres = VG_(do_syscall2)(__NR_getgroups, size, (Addr)list); if (sr_isError(sres)) -@@ -944,7 +946,8 @@ Int VG_(fork) ( void ) - fds[0] = fds[1] = -1; +@@ -954,7 +955,7 @@ Int VG_(fork) ( void ) } --# if defined(VGP_arm64_linux) || defined(VGP_nanomips_linux) -+# if defined(VGP_arm64_linux) || defined(VGP_nanomips_linux) \ -+ || defined(VGP_loongarch64_linux) + # if defined(VGP_arm64_linux) || defined(VGP_nanomips_linux) \ +- || defined(VGP_riscv64_linux) ++ || defined(VGP_riscv64_linux) || defined(VGP_loongarch64_linux) SysRes res; res = VG_(do_syscall5)(__NR_clone, VKI_SIGCHLD, (UWord)NULL, (UWord)NULL, (UWord)NULL, (UWord)NULL); diff --git a/coregrind/m_libcsetjmp.c b/coregrind/m_libcsetjmp.c -index f53a223..400f68a 100644 +index 02324daab757..cebe3fd733b1 100644 --- a/coregrind/m_libcsetjmp.c +++ b/coregrind/m_libcsetjmp.c -@@ -781,6 +781,72 @@ __asm__( - ); - #endif /* VGP_s390x_linux */ +@@ -887,6 +887,72 @@ void VG_MINIMAL_LONGJMP(VG_MINIMAL_JMP_BUF(_env)) + + #endif +#if defined(VGP_loongarch64_linux) + @@ -27226,17 +27125,17 @@ index f53a223..400f68a 100644 +); +#endif /* VGP_loongarch64_linux */ + - /*--------------------------------------------------------------------*/ - /*--- end ---*/ - /*--------------------------------------------------------------------*/ + #if defined(VGP_arm64_freebsd) + + __asm__( diff --git a/coregrind/m_machine.c b/coregrind/m_machine.c -index a4c2218..5cfca01 100644 +index eaa18b0b61f0..1e7f235b0cf6 100644 --- a/coregrind/m_machine.c +++ b/coregrind/m_machine.c -@@ -152,6 +152,13 @@ void VG_(get_UnwindStartRegs) ( /*OUT*/UnwindStartRegs* regs, - = VG_(threads)[tid].arch.vex.guest_r31; - regs->misc.MIPS64.r28 - = VG_(threads)[tid].arch.vex.guest_r28; +@@ -157,6 +157,13 @@ void VG_(get_UnwindStartRegs) ( /*OUT*/UnwindStartRegs* regs, + regs->r_sp = VG_(threads)[tid].arch.vex.guest_x2; + regs->misc.RISCV64.r_fp = VG_(threads)[tid].arch.vex.guest_x8; + regs->misc.RISCV64.r_ra = VG_(threads)[tid].arch.vex.guest_x1; +# elif defined(VGA_loongarch64) + regs->r_pc = VG_(threads)[tid].arch.vex.guest_PC; + regs->r_sp = VG_(threads)[tid].arch.vex.guest_R3; @@ -27247,10 +27146,10 @@ index a4c2218..5cfca01 100644 # else # error "Unknown arch" # endif -@@ -369,6 +376,39 @@ static void apply_to_GPs_of_tid(ThreadId tid, void (*f)(ThreadId, - (*f)(tid, "x28", vex->guest_X28); - (*f)(tid, "x29", vex->guest_X29); - (*f)(tid, "x30", vex->guest_X30); +@@ -407,6 +414,39 @@ static void apply_to_GPs_of_tid(ThreadId tid, void (*f)(ThreadId, + (*f)(tid, "x29", vex->guest_x29); + (*f)(tid, "x30", vex->guest_x30); + (*f)(tid, "x31", vex->guest_x31); +#elif defined(VGA_loongarch64) + (*f)(tid, "r0" , vex->guest_R0 ); + (*f)(tid, "r1" , vex->guest_R1 ); @@ -27287,7 +27186,7 @@ index a4c2218..5cfca01 100644 #else # error Unknown arch #endif -@@ -479,7 +519,7 @@ Int VG_(machine_arm_archlevel) = 4; +@@ -517,7 +557,7 @@ Int VG_(machine_arm_archlevel) = 4; testing, so we need a VG_MINIMAL_JMP_BUF. */ #if defined(VGA_ppc32) || defined(VGA_ppc64be) || defined(VGA_ppc64le) \ || defined(VGA_arm) || defined(VGA_s390x) || defined(VGA_mips32) \ @@ -27296,7 +27195,7 @@ index a4c2218..5cfca01 100644 #include "pub_core_libcsetjmp.h" static VG_MINIMAL_JMP_BUF(env_unsup_insn); static void handler_unsup_insn ( Int x ) { -@@ -861,6 +901,105 @@ static Bool VG_(parse_cpuinfo)(void) +@@ -899,6 +939,105 @@ static Bool VG_(parse_cpuinfo)(void) #endif /* defined(VGP_arm64_linux) */ @@ -27402,11 +27301,10 @@ index a4c2218..5cfca01 100644 Bool VG_(machine_get_hwcaps)( void ) { vg_assert(hwcaps_done == False); -@@ -2230,6 +2369,54 @@ Bool VG_(machine_get_hwcaps)( void ) - +@@ -2303,6 +2442,53 @@ Bool VG_(machine_get_hwcaps)( void ) return True; } -+ + +#elif defined(VGA_loongarch64) + { + va = VexArchLOONGARCH64; @@ -27457,8 +27355,8 @@ index a4c2218..5cfca01 100644 #else # error "Unknown arch" #endif -@@ -2370,6 +2557,9 @@ Int VG_(machine_get_size_of_largest_guest_register) ( void ) - # elif defined(VGA_mips64) +@@ -2447,6 +2633,9 @@ Int VG_(machine_get_size_of_largest_guest_register) ( void ) + /* 64-bit integer and floating-point registers, no vector set. */ return 8; +# elif defined(VGA_loongarch64) @@ -27467,20 +27365,21 @@ index a4c2218..5cfca01 100644 # else # error "Unknown arch" # endif -@@ -2386,7 +2576,7 @@ void* VG_(fnptr_to_fnentry)( void* f ) +@@ -2463,7 +2652,8 @@ void* VG_(fnptr_to_fnentry)( void* f ) || defined(VGP_s390x_linux) || defined(VGP_mips32_linux) \ || defined(VGP_mips64_linux) || defined(VGP_arm64_linux) \ || defined(VGP_x86_solaris) || defined(VGP_amd64_solaris) \ -- || defined(VGP_nanomips_linux) -+ || defined(VGP_nanomips_linux) || defined(VGP_loongarch64_linux) +- || defined(VGP_nanomips_linux) || defined(VGP_riscv64_linux) ++ || defined(VGP_nanomips_linux) || defined(VGP_riscv64_linux) \ ++ || defined(VGP_loongarch64_linux) return f; # elif defined(VGP_ppc64be_linux) /* ppc64-linux uses the AIX scheme, in which f is a pointer to a diff --git a/coregrind/m_main.c b/coregrind/m_main.c -index bb4a0ca..b2b7415 100644 +index 55ffd769b35c..4a7071383375 100644 --- a/coregrind/m_main.c +++ b/coregrind/m_main.c -@@ -1481,6 +1481,7 @@ Int valgrind_main ( Int argc, HChar **argv, HChar **envp ) +@@ -1513,6 +1513,7 @@ Int valgrind_main ( Int argc, HChar **argv, HChar **envp ) "AMD Athlon or above)\n"); VG_(printf)(" * AMD Athlon64/Opteron\n"); VG_(printf)(" * ARM (armv7)\n"); @@ -27488,7 +27387,7 @@ index bb4a0ca..b2b7415 100644 VG_(printf)(" * MIPS (mips32 and above; mips64 and above)\n"); VG_(printf)(" * PowerPC (most; ppc405 and above)\n"); VG_(printf)(" * System z (64bit only - s390x; z990 and above)\n"); -@@ -2536,6 +2537,11 @@ static void final_tidyup(ThreadId tid) +@@ -2574,6 +2575,11 @@ static void final_tidyup(ThreadId tid) VG_TRACK(post_reg_write, Vg_CoreClientReq, tid, offsetof(VexGuestS390XState, guest_r2), sizeof(VG_(threads)[tid].arch.vex.guest_r2)); @@ -27500,9 +27399,9 @@ index bb4a0ca..b2b7415 100644 #else I_die_here : architecture missing in m_main.c #endif -@@ -3064,6 +3070,29 @@ asm( - ".set pop \n\t" - ".previous \n\t" +@@ -3129,6 +3135,29 @@ asm("\n" + "\tunimp\n" + ".previous\n" ); +#elif defined(VGP_loongarch64_linux) +asm(" \n\t" @@ -27530,7 +27429,7 @@ index bb4a0ca..b2b7415 100644 #else # error "Unknown platform" #endif -@@ -3109,11 +3138,11 @@ void _start_in_C_linux ( UWord* pArgc ) +@@ -3174,11 +3203,11 @@ void _start_in_C_linux ( UWord* pArgc ) # if defined(VGP_ppc32_linux) || defined(VGP_ppc64be_linux) \ || defined(VGP_ppc64le_linux) || defined(VGP_arm64_linux) \ || defined(VGP_mips32_linux) || defined(VGP_mips64_linux) \ @@ -27547,36 +27446,35 @@ index bb4a0ca..b2b7415 100644 while (*sp++ != 0) ; diff --git a/coregrind/m_options.c b/coregrind/m_options.c -index 1483af2..640af71 100644 +index 6f5a4d04582d..1a10c8fec1c1 100644 --- a/coregrind/m_options.c +++ b/coregrind/m_options.c -@@ -203,7 +203,8 @@ UInt VG_(clo_unw_stack_scan_frames) = 5; - VgSmc VG_(clo_smc_check) = Vg_SmcAllNonFile; +@@ -205,7 +205,7 @@ VgSmc VG_(clo_smc_check) = Vg_SmcAllNonFile; #elif defined(VGA_ppc32) || defined(VGA_ppc64be) || defined(VGA_ppc64le) \ || defined(VGA_arm) || defined(VGA_arm64) \ -- || defined(VGA_mips32) || defined(VGA_mips64) || defined(VGA_nanomips) -+ || defined(VGA_mips32) || defined(VGA_mips64) || defined(VGA_nanomips) \ -+ || defined(VGA_loongarch64) + || defined(VGA_mips32) || defined(VGA_mips64) || defined(VGA_nanomips) \ +- || defined(VGA_riscv64) ++ || defined(VGA_riscv64) || defined(VGA_loongarch64) VgSmc VG_(clo_smc_check) = Vg_SmcStack; #else # error "Unknown arch" diff --git a/coregrind/m_redir.c b/coregrind/m_redir.c -index cef241b..fa513a0 100644 +index 63172b97178e..33dabd43cd82 100644 --- a/coregrind/m_redir.c +++ b/coregrind/m_redir.c -@@ -1240,6 +1240,7 @@ Bool VG_(is_soname_ld_so) (const HChar *soname) - if (VG_STREQ(soname, VG_U_LD_LINUX_AARCH64_SO_1)) return True; +@@ -1254,6 +1254,7 @@ Bool VG_(is_soname_ld_so) (const HChar *soname) if (VG_STREQ(soname, VG_U_LD_LINUX_ARMHF_SO_3)) return True; if (VG_STREQ(soname, VG_U_LD_LINUX_MIPSN8_S0_1)) return True; + if (VG_STREQ(soname, VG_U_LD_LINUX_RISCV64_SO_1)) return True; + if (VG_STREQ(soname, VG_U_LD_LINUX_LOONGARCH_LP64D_SO_1)) return True; # elif defined(VGO_freebsd) if (VG_STREQ(soname, VG_U_LD_ELF_SO_1)) return True; if (VG_STREQ(soname, VG_U_LD_ELF32_SO_1)) return True; -@@ -1679,6 +1680,22 @@ void VG_(redir_initialise) ( void ) +@@ -1730,6 +1731,27 @@ void VG_(redir_initialise) ( void ) ); } -+#elif defined(VGP_loongarch64_linux) ++# elif defined(VGP_loongarch64_linux) + /* If we're using memcheck, use these intercepts right from + the start, otherwise ld.so makes a lot of noise. */ + if (0==VG_(strcmp)("Memcheck", VG_(details).name)) { @@ -27590,16 +27488,21 @@ index cef241b..fa513a0 100644 + (Addr)&VG_(loongarch64_linux_REDIR_FOR_strchr), + complain_about_stripped_glibc_ldso + ); ++ add_hardwired_spec( ++ "ld-linux-loongarch-lp64d.so.1", "strcmp", ++ (Addr)&VG_(loongarch64_linux_REDIR_FOR_strcmp), ++ complain_about_stripped_glibc_ldso ++ ); + } + # elif defined(VGP_x86_solaris) /* If we're using memcheck, use these intercepts right from the start, otherwise ld.so makes a lot of noise. */ diff --git a/coregrind/m_scheduler/scheduler.c b/coregrind/m_scheduler/scheduler.c -index f8b3b46..e3b3b63 100644 +index 51ba34361645..ab17d9396cf6 100644 --- a/coregrind/m_scheduler/scheduler.c +++ b/coregrind/m_scheduler/scheduler.c -@@ -271,6 +271,7 @@ const HChar* name_of_sched_event ( UInt event ) +@@ -272,6 +272,7 @@ const HChar* name_of_sched_event ( UInt event ) case VEX_TRC_JMP_SIGBUS: return "SIGBUS"; case VEX_TRC_JMP_SIGFPE_INTOVF: case VEX_TRC_JMP_SIGFPE_INTDIV: return "SIGFPE"; @@ -27607,7 +27510,16 @@ index f8b3b46..e3b3b63 100644 case VEX_TRC_JMP_EMWARN: return "EMWARN"; case VEX_TRC_JMP_EMFAIL: return "EMFAIL"; case VEX_TRC_JMP_CLIENTREQ: return "CLIENTREQ"; -@@ -1657,6 +1658,10 @@ VgSchedReturnCode VG_(scheduler) ( ThreadId tid ) +@@ -1011,6 +1012,8 @@ void run_thread_for_a_while ( /*OUT*/HWord* two_words, + tst->arch.vex.guest_LLaddr = (RegWord)(-1); + # elif defined(VGP_arm64_linux) || defined(VGP_arm64_freebsd) + tst->arch.vex.guest_LLSC_SIZE = 0; ++# elif defined(VGP_loongarch64_linux) ++ tst->arch.vex.guest_LLSC_SIZE = 0; + # elif defined(VGP_riscv64_linux) + tst->arch.vex.guest_LLSC_SIZE = 0; + # endif +@@ -1693,6 +1696,10 @@ VgSchedReturnCode VG_(scheduler) ( ThreadId tid ) VG_(synth_sigfpe)(tid, VKI_FPE_INTOVF); break; @@ -27618,10 +27530,10 @@ index f8b3b46..e3b3b63 100644 case VEX_TRC_JMP_NODECODE: { Addr addr = VG_(get_IP)(tid); -@@ -1821,6 +1826,9 @@ void VG_(nuke_all_threads_except) ( ThreadId me, VgSchedReturnCode src ) - #elif defined(VGA_mips32) || defined(VGA_mips64) || defined(VGA_nanomips) - # define VG_CLREQ_ARGS guest_r12 - # define VG_CLREQ_RET guest_r11 +@@ -1860,6 +1867,9 @@ void VG_(nuke_all_threads_except) ( ThreadId me, VgSchedReturnCode src ) + #elif defined(VGA_riscv64) + # define VG_CLREQ_ARGS guest_x14 + # define VG_CLREQ_RET guest_x13 +#elif defined(VGA_loongarch64) +# define VG_CLREQ_ARGS guest_R12 +# define VG_CLREQ_RET guest_R11 @@ -27630,7 +27542,7 @@ index f8b3b46..e3b3b63 100644 #endif diff --git a/coregrind/m_sigframe/sigframe-loongarch64-linux.c b/coregrind/m_sigframe/sigframe-loongarch64-linux.c new file mode 100644 -index 0000000..eda6c88 +index 000000000000..eda6c885ca5e --- /dev/null +++ b/coregrind/m_sigframe/sigframe-loongarch64-linux.c @@ -0,0 +1,285 @@ @@ -27920,11 +27832,11 @@ index 0000000..eda6c88 +/*--- end sigframe-loongarch64-linux.c ---*/ +/*--------------------------------------------------------------------*/ diff --git a/coregrind/m_signals.c b/coregrind/m_signals.c -index b3c94fc..62c689b 100644 +index f0e6b8e7cf2e..32f7c4eb5bcc 100644 --- a/coregrind/m_signals.c +++ b/coregrind/m_signals.c -@@ -628,6 +628,22 @@ VgHashTable *ht_sigchld_ignore = NULL; - (srP)->misc.MIPS32.r28 = (uc)->uc_mcontext.sc_regs[28]; \ +@@ -656,6 +656,38 @@ VgHashTable *ht_sigchld_ignore = NULL; + (srP)->misc.RISCV64.r_ra = (uc)->uc_mcontext.sc_regs.ra; \ } +#elif defined(VGP_loongarch64_linux) @@ -27942,26 +27854,39 @@ index b3c94fc..62c689b 100644 + (srP)->misc.LOONGARCH64.r_fp = (uc)->uc_mcontext.sc_regs[22]; \ + (srP)->misc.LOONGARCH64.r_ra = (uc)->uc_mcontext.sc_regs[1]; \ + } ++ ++#elif defined(VGP_loongarch64_linux) ++# define VG_UCONTEXT_INSTR_PTR(uc) (((uc)->uc_mcontext.sc_pc)) ++# define VG_UCONTEXT_STACK_PTR(uc) ((uc)->uc_mcontext.sc_regs[3]) ++# define VG_UCONTEXT_FRAME_PTR(uc) ((uc)->uc_mcontext.sc_regs[22]) ++# define VG_UCONTEXT_SYSCALL_NUM(uc) ((uc)->uc_mcontext.sc_regs[11]) ++# define VG_UCONTEXT_SYSCALL_SYSRES(uc) \ ++ /* Convert the value in uc_mcontext.regs[4] into a SysRes. */ \ ++ VG_(mk_SysRes_loongarch64_linux)((uc)->uc_mcontext.sc_regs[4]) ++ ++# define VG_UCONTEXT_TO_UnwindStartRegs(srP, uc) \ ++ { (srP)->r_pc = (uc)->uc_mcontext.sc_pc; \ ++ (srP)->r_sp = (uc)->uc_mcontext.sc_regs[3]; \ ++ (srP)->misc.LOONGARCH64.r_fp = (uc)->uc_mcontext.sc_regs[22]; \ ++ (srP)->misc.LOONGARCH64.r_ra = (uc)->uc_mcontext.sc_regs[1]; \ ++ } + #elif defined(VGP_x86_solaris) # define VG_UCONTEXT_INSTR_PTR(uc) ((Addr)(uc)->uc_mcontext.gregs[VKI_EIP]) # define VG_UCONTEXT_STACK_PTR(uc) ((Addr)(uc)->uc_mcontext.gregs[VKI_UESP]) -@@ -899,8 +915,10 @@ void calculate_SKSS_from_SCSS ( SKSS* dst ) +@@ -928,7 +960,7 @@ void calculate_SKSS_from_SCSS ( SKSS* dst ) if (skss_handler != VKI_SIG_IGN && skss_handler != VKI_SIG_DFL) skss_flags |= VKI_SA_SIGINFO; -+# if !defined(VGP_loongarch64_linux) +-# if !defined(VGP_riscv64_linux) ++# if !defined(VGP_riscv64_linux) && !defined(VGP_loongarch64_linux) /* use our own restorer */ skss_flags |= VKI_SA_RESTORER; -+# endif - - /* Create SKSS entry for this signal. */ - if (sig != VKI_SIGKILL && sig != VKI_SIGSTOP) -@@ -1052,6 +1070,15 @@ extern void my_sigreturn(void); - " li $t4, " #name "\n" \ - " syscall[32]\n" \ + # endif +@@ -1093,6 +1125,14 @@ extern void my_sigreturn(void); + " unimp\n" \ ".previous\n" -+ + +#elif defined(VGP_loongarch64_linux) +# define _MY_SIGRETURN(name) \ + ".text\n" \ @@ -27973,53 +27898,61 @@ index b3c94fc..62c689b 100644 #elif defined(VGP_x86_solaris) || defined(VGP_amd64_solaris) /* Not used on Solaris. */ # define _MY_SIGRETURN(name) \ -@@ -1111,7 +1138,8 @@ static void handle_SCSS_change ( Bool force_update ) +@@ -1159,7 +1199,7 @@ static void handle_SCSS_change ( Bool force_update ) + ksa.ksa_handler = skss.skss_per_sig[sig].skss_handler; ksa.sa_flags = skss.skss_per_sig[sig].skss_flags; - # if !defined(VGP_ppc32_linux) && \ + # if !defined(VGP_ppc32_linux) && !defined(VGP_mips32_linux) && \ +- !defined(VGP_riscv64_linux) && \ ++ !defined(VGP_riscv64_linux) && !defined(VGP_loongarch64_linux) && \ !defined(VGP_x86_darwin) && !defined(VGP_amd64_darwin) && \ -- !defined(VGP_mips32_linux) && !defined(VGO_solaris) && !defined(VGO_freebsd) -+ !defined(VGP_mips32_linux) && !defined(VGO_solaris) && \ -+ !defined(VGO_freebsd) && !defined(VGP_loongarch64_linux) + !defined(VGO_solaris) && !defined(VGO_freebsd) ksa.sa_restorer = my_sigreturn; - # endif - /* Re above ifdef (also the assertion below), PaulM says: -@@ -1159,7 +1187,7 @@ static void handle_SCSS_change ( Bool force_update ) +@@ -1207,7 +1247,7 @@ static void handle_SCSS_change ( Bool force_update ) + == skss_old.skss_per_sig[sig].skss_flags); + # if !defined(VGP_ppc32_linux) && !defined(VGP_mips32_linux) && \ + !defined(VGP_mips64_linux) && !defined(VGP_nanomips_linux) && \ +- !defined(VGP_riscv64_linux) && \ ++ !defined(VGP_riscv64_linux) && !defined(VGP_loongarch64_linux) && \ !defined(VGP_x86_darwin) && !defined(VGP_amd64_darwin) && \ - !defined(VGP_mips32_linux) && !defined(VGP_mips64_linux) && \ - !defined(VGP_nanomips_linux) && !defined(VGO_solaris) && \ -- !defined(VGO_freebsd) -+ !defined(VGO_freebsd) && !defined(VGP_loongarch64_linux) + !defined(VGO_solaris) && !defined(VGO_freebsd) vg_assert(ksa_old.sa_restorer == my_sigreturn); - # endif - VG_(sigaddset)( &ksa_old.sa_mask, VKI_SIGKILL ); -@@ -1280,7 +1308,7 @@ SysRes VG_(do_sys_sigaction) ( Int signo, +@@ -1329,8 +1369,9 @@ SysRes VG_(do_sys_sigaction) ( Int signo, + old_act->ksa_handler = scss.scss_per_sig[signo].scss_handler; old_act->sa_flags = scss.scss_per_sig[signo].scss_flags; old_act->sa_mask = scss.scss_per_sig[signo].scss_mask; - # if !defined(VGO_darwin) && !defined(VGO_freebsd) && \ -- !defined(VGO_solaris) -+ !defined(VGO_solaris) && !defined(VGP_loongarch64_linux) +-# if !defined(VGP_riscv64_linux) && !defined(VGO_darwin) && \ +- !defined(VGO_freebsd) && !defined(VGO_solaris) ++# if !defined(VGP_riscv64_linux) && !defined(VGP_loongarch64_linux) && \ ++ !defined(VGO_darwin) && !defined(VGO_freebsd) && \ ++ !defined(VGO_solaris) old_act->sa_restorer = scss.scss_per_sig[signo].scss_restorer; # endif } -@@ -1293,7 +1321,7 @@ SysRes VG_(do_sys_sigaction) ( Int signo, +@@ -1342,8 +1383,9 @@ SysRes VG_(do_sys_sigaction) ( Int signo, + scss.scss_per_sig[signo].scss_mask = new_act->sa_mask; scss.scss_per_sig[signo].scss_restorer = NULL; - # if !defined(VGO_darwin) && !defined(VGO_freebsd) && \ -- !defined(VGO_solaris) -+ !defined(VGO_solaris) && !defined(VGP_loongarch64_linux) +-# if !defined(VGP_riscv64_linux) && !defined(VGO_darwin) && \ +- !defined(VGO_freebsd) && !defined(VGO_solaris) ++# if !defined(VGP_riscv64_linux) && !defined(VGP_loongarch64_linux) && \ ++ !defined(VGO_darwin) && !defined(VGO_freebsd) && \ ++ !defined(VGO_solaris) scss.scss_per_sig[signo].scss_restorer = new_act->sa_restorer; # endif -@@ -1653,7 +1681,7 @@ void VG_(kill_self)(Int sigNo) +@@ -1702,8 +1744,9 @@ void VG_(kill_self)(Int sigNo) + sa.ksa_handler = VKI_SIG_DFL; sa.sa_flags = 0; - # if !defined(VGO_darwin) && !defined(VGO_freebsd) && \ -- !defined(VGO_solaris) -+ !defined(VGO_solaris) && !defined(VGP_loongarch64_linux) +-# if !defined(VGP_riscv64_linux) && !defined(VGO_darwin) && \ +- !defined(VGO_freebsd) && !defined(VGO_solaris) ++# if !defined(VGP_riscv64_linux) && !defined(VGP_loongarch64_linux) && \ ++ !defined(VGO_darwin) && !defined(VGO_freebsd) && \ ++ !defined(VGO_solaris) sa.sa_restorer = 0; # endif VG_(sigemptyset)(&sa.sa_mask); -@@ -2296,8 +2324,9 @@ void VG_(synth_sigtrap)(ThreadId tid) +@@ -2346,8 +2389,9 @@ void VG_(synth_sigtrap)(ThreadId tid) // Synthesise a SIGFPE. void VG_(synth_sigfpe)(ThreadId tid, UInt code) { @@ -28031,7 +27964,7 @@ index b3c94fc..62c689b 100644 vg_assert(0); #else vki_siginfo_t info; -@@ -2319,6 +2348,30 @@ void VG_(synth_sigfpe)(ThreadId tid, UInt code) +@@ -2369,6 +2413,30 @@ void VG_(synth_sigfpe)(ThreadId tid, UInt code) #endif } @@ -28062,47 +27995,59 @@ index b3c94fc..62c689b 100644 /* Make a signal pending for a thread, for later delivery. VG_(poll_signals) will arrange for it to be delivered at the right time. -@@ -3043,7 +3096,7 @@ void pp_ksigaction ( vki_sigaction_toK_t* sa ) +@@ -3095,8 +3163,9 @@ void pp_ksigaction ( vki_sigaction_toK_t* sa ) + VG_(printf)("pp_ksigaction: handler %p, flags 0x%x, restorer %p\n", sa->ksa_handler, (UInt)sa->sa_flags, - # if !defined(VGO_darwin) && !defined(VGO_freebsd) && \ -- !defined(VGO_solaris) -+ !defined(VGO_solaris) && !defined(VGP_loongarch64_linux) +-# if !defined(VGP_riscv64_linux) && !defined(VGO_darwin) && \ +- !defined(VGO_freebsd) && !defined(VGO_solaris) ++# if !defined(VGP_riscv64_linux) && !defined(VGP_loongarch64_linux) && \ ++ !defined(VGO_darwin) && !defined(VGO_freebsd) && \ ++ !defined(VGO_solaris) sa->sa_restorer # else (void*)0 -@@ -3066,7 +3119,7 @@ void VG_(set_default_handler)(Int signo) +@@ -3118,8 +3187,9 @@ void VG_(set_default_handler)(Int signo) + sa.ksa_handler = VKI_SIG_DFL; sa.sa_flags = 0; - # if !defined(VGO_darwin) && !defined(VGO_freebsd) && \ -- !defined(VGO_solaris) -+ !defined(VGO_solaris) && !defined(VGP_loongarch64_linux) +-# if !defined(VGP_riscv64_linux) && !defined(VGO_darwin) && \ +- !defined(VGO_freebsd) && !defined(VGO_solaris) ++# if !defined(VGP_riscv64_linux) && !defined(VGP_loongarch64_linux) && \ ++ !defined(VGO_darwin) && !defined(VGO_freebsd) && \ ++ !defined(VGO_solaris) sa.sa_restorer = 0; # endif VG_(sigemptyset)(&sa.sa_mask); -@@ -3188,7 +3241,7 @@ void VG_(sigstartup_actions) ( void ) +@@ -3240,8 +3310,9 @@ void VG_(sigstartup_actions) ( void ) + tsa.ksa_handler = (void *)sync_signalhandler; tsa.sa_flags = VKI_SA_SIGINFO; - # if !defined(VGO_darwin) && !defined(VGO_freebsd) && \ -- !defined(VGO_solaris) -+ !defined(VGO_solaris) && !defined(VGP_loongarch64_linux) +-# if !defined(VGP_riscv64_linux) && !defined(VGO_darwin) && \ +- !defined(VGO_freebsd) && !defined(VGO_solaris) ++# if !defined(VGP_riscv64_linux) && !defined(VGP_loongarch64_linux) && \ ++ !defined(VGO_darwin) && !defined(VGO_freebsd) && \ ++ !defined(VGO_solaris) tsa.sa_restorer = 0; # endif VG_(sigfillset)(&tsa.sa_mask); -@@ -3216,7 +3269,7 @@ void VG_(sigstartup_actions) ( void ) +@@ -3268,8 +3339,9 @@ void VG_(sigstartup_actions) ( void ) + scss.scss_per_sig[i].scss_mask = sa.sa_mask; scss.scss_per_sig[i].scss_restorer = NULL; - # if !defined(VGO_darwin) && !defined(VGO_freebsd) && \ -- !defined(VGO_solaris) -+ !defined(VGO_solaris) && !defined(VGP_loongarch64_linux) +-# if !defined(VGP_riscv64_linux) && !defined(VGO_darwin) && \ +- !defined(VGO_freebsd) && !defined(VGO_solaris) ++# if !defined(VGP_riscv64_linux) && !defined(VGP_loongarch64_linux) && \ ++ !defined(VGO_darwin) && !defined(VGO_freebsd) && \ ++ !defined(VGO_solaris) scss.scss_per_sig[i].scss_restorer = sa.sa_restorer; # endif diff --git a/coregrind/m_stacktrace.c b/coregrind/m_stacktrace.c -index 0ec6f59..0f89b63 100644 +index 21c0f4794207..f1ae974e36ee 100644 --- a/coregrind/m_stacktrace.c +++ b/coregrind/m_stacktrace.c -@@ -1505,6 +1505,100 @@ UInt VG_(get_StackTrace_wrk) ( ThreadId tid_if_known, +@@ -1626,6 +1626,100 @@ UInt VG_(get_StackTrace_wrk) ( ThreadId tid_if_known, #endif @@ -28204,10 +28149,10 @@ index 0ec6f59..0f89b63 100644 /*--- ---*/ /*--- END platform-dependent unwinder worker functions ---*/ diff --git a/coregrind/m_syscall.c b/coregrind/m_syscall.c -index 1e49ed4..84d30b9 100644 +index c76f1df81bcd..e09b40eec5ac 100644 --- a/coregrind/m_syscall.c +++ b/coregrind/m_syscall.c -@@ -204,6 +204,17 @@ SysRes VG_(mk_SysRes_arm64_linux) ( Long val ) { +@@ -215,6 +215,17 @@ SysRes VG_(mk_SysRes_riscv64_linux) ( Long val ) { return res; } @@ -28225,8 +28170,8 @@ index 1e49ed4..84d30b9 100644 /* Generic constructors. */ SysRes VG_(mk_SysRes_Success) ( UWord res ) { SysRes r; -@@ -1034,6 +1045,22 @@ asm ( - ".previous \n\t" +@@ -1112,6 +1123,22 @@ asm( + ".previous\n" ); +#elif defined(VGP_loongarch64_linux) @@ -28248,11 +28193,11 @@ index 1e49ed4..84d30b9 100644 #elif defined(VGP_x86_solaris) extern ULong -@@ -1274,6 +1301,11 @@ SysRes VG_(do_syscall) ( UWord sysno, RegWord a1, RegWord a2, RegWord a3, - do_syscall_WRK(a1, a2, a3, a4, a5, a6, sysno, ®_a0); - return VG_(mk_SysRes_nanomips_linux)(reg_a0); +@@ -1364,6 +1391,11 @@ SysRes VG_(do_syscall) ( UWord sysno, RegWord a1, RegWord a2, RegWord a3, + UWord val = do_syscall_WRK(a1, a2, a3, a4, a5, a6, sysno); + return VG_(mk_SysRes_riscv64_linux)(val); -+#elif defined(VGP_loongarch64_linux) ++# elif defined(VGP_loongarch64_linux) + UWord val = 0; + val = do_syscall_WRK(a1, a2, a3, a4, a5, a6, sysno); + return VG_(mk_SysRes_loongarch64_linux)(val); @@ -28261,13 +28206,13 @@ index 1e49ed4..84d30b9 100644 UInt val, val2, err = False; Bool restart; diff --git a/coregrind/m_syswrap/priv_syswrap-linux.h b/coregrind/m_syswrap/priv_syswrap-linux.h -index 7c9decf..a247334 100644 +index 4dad82dfbb26..f26427c684e9 100644 --- a/coregrind/m_syswrap/priv_syswrap-linux.h +++ b/coregrind/m_syswrap/priv_syswrap-linux.h -@@ -509,6 +509,13 @@ extern UInt do_syscall_clone_nanomips_linux ( Word (*fn) (void *), /* a0 - 4 */ - Int* child_tid, /* a4 - 8 */ - Int* parent_tid, /* a5 - 9 */ - void* tls_ptr); /* a6 - 10 */ +@@ -539,6 +539,13 @@ extern UInt do_syscall_clone_riscv64_linux ( Word (*fn) (void *), + Int* child_tid, + Int* parent_tid, + void* tls_ptr); +extern UInt do_syscall_clone_loongarch64_linux ( Word (*fn) (void *), /* a0 */ + void* stack, /* a1 */ + Int flags, /* a2 */ @@ -28279,22 +28224,22 @@ index 7c9decf..a247334 100644 /*--------------------------------------------------------------------*/ diff --git a/coregrind/m_syswrap/priv_types_n_macros.h b/coregrind/m_syswrap/priv_types_n_macros.h -index dd24183..11a9d5e 100644 +index cc00592ef294..9f9eab1ca6b4 100644 --- a/coregrind/m_syswrap/priv_types_n_macros.h +++ b/coregrind/m_syswrap/priv_types_n_macros.h @@ -94,7 +94,8 @@ typedef || defined(VGP_ppc32_linux) \ || defined(VGP_arm_linux) || defined(VGP_s390x_linux) \ || defined(VGP_arm64_linux) \ -- || defined(VGP_nanomips_linux) -+ || defined(VGP_nanomips_linux) \ +- || defined(VGP_nanomips_linux) || defined(VGP_riscv64_linux) ++ || defined(VGP_nanomips_linux) || defined(VGP_riscv64_linux) \ + || defined(VGP_loongarch64_linux) Int o_arg1; Int o_arg2; Int o_arg3; diff --git a/coregrind/m_syswrap/syscall-loongarch64-linux.S b/coregrind/m_syswrap/syscall-loongarch64-linux.S new file mode 100644 -index 0000000..5c18041 +index 000000000000..5c18041acde9 --- /dev/null +++ b/coregrind/m_syswrap/syscall-loongarch64-linux.S @@ -0,0 +1,143 @@ @@ -28442,25 +28387,26 @@ index 0000000..5c18041 +/*--- end syscall-loongarch64-linux.S ---*/ +/*--------------------------------------------------------------------*/ diff --git a/coregrind/m_syswrap/syswrap-generic.c b/coregrind/m_syswrap/syswrap-generic.c -index d2ff8c0..f3c2317 100644 +index 82a682a5ce55..1c70d226a89e 100644 --- a/coregrind/m_syswrap/syswrap-generic.c +++ b/coregrind/m_syswrap/syswrap-generic.c -@@ -3440,7 +3440,7 @@ POST(sys_newfstat) +@@ -3801,7 +3801,8 @@ POST(sys_newfstat) #endif #if !defined(VGO_solaris) && !defined(VGP_arm64_linux) && \ -- !defined(VGP_nanomips_linux) -+ !defined(VGP_nanomips_linux) && !defined(VGP_loongarch64_linux) +- !defined(VGP_nanomips_linux) && !defined(VGP_riscv64_linux) ++ !defined(VGP_nanomips_linux) && !defined(VGP_riscv64_linux) && \ ++ !defined(VGP_loongarch64_linux) static vki_sigset_t fork_saved_mask; // In Linux, the sys_fork() function varies across architectures, but we diff --git a/coregrind/m_syswrap/syswrap-linux.c b/coregrind/m_syswrap/syswrap-linux.c -index d571fc3..02a62e4 100644 +index de710c97e435..e07354f24f08 100644 --- a/coregrind/m_syswrap/syswrap-linux.c +++ b/coregrind/m_syswrap/syswrap-linux.c -@@ -310,6 +310,16 @@ static void run_a_thread_NORETURN ( Word tidW ) +@@ -320,6 +320,16 @@ static void run_a_thread_NORETURN ( Word tidW ) : "r" (VgTs_Empty), "n" (__NR_exit), "m" (tst->os_state.exitcode) - : "memory" , "$t4", "$a0" + : "a7", "a0" ); +#elif defined(VGP_loongarch64_linux) + asm volatile ( @@ -28475,10 +28421,10 @@ index d571fc3..02a62e4 100644 #else # error Unknown platform #endif -@@ -535,6 +545,13 @@ static SysRes clone_new_thread ( Word (*fn)(void *), +@@ -552,6 +562,13 @@ static SysRes clone_new_thread ( Word (*fn)(void *), (ML_(start_thread_NORETURN), stack, flags, ctst, child_tidptr, parent_tidptr, NULL); - res = VG_ (mk_SysRes_nanomips_linux) (ret); + res = VG_(mk_SysRes_riscv64_linux)( a0 ); +#elif defined(VGP_loongarch64_linux) + UInt ret = 0; + ctst->arch.vex.guest_R4 = 0; @@ -28489,25 +28435,26 @@ index d571fc3..02a62e4 100644 #else # error Unknown platform #endif -@@ -597,6 +614,8 @@ static SysRes setup_child_tls (ThreadId ctid, Addr tlsaddr) - #elif defined(VGP_mips32_linux) || defined(VGP_nanomips_linux) - ctst->arch.vex.guest_ULR = tlsaddr; +@@ -616,6 +633,8 @@ static SysRes setup_child_tls (ThreadId ctid, Addr tlsaddr) ctst->arch.vex.guest_r27 = tlsaddr; + #elif defined(VGP_riscv64_linux) + ctst->arch.vex.guest_x4 = tlsaddr; +#elif defined(VGP_loongarch64_linux) + ctst->arch.vex.guest_R2 = tlsaddr; #else # error Unknown platform #endif -@@ -755,7 +774,7 @@ static SysRes ML_(do_fork_clone) ( ThreadId tid, UInt flags, +@@ -774,7 +793,8 @@ static SysRes ML_(do_fork_clone) ( ThreadId tid, UInt flags, || defined(VGP_ppc64be_linux) || defined(VGP_ppc64le_linux) \ || defined(VGP_arm_linux) || defined(VGP_mips32_linux) \ || defined(VGP_mips64_linux) || defined(VGP_arm64_linux) \ -- || defined(VGP_nanomips_linux) -+ || defined(VGP_nanomips_linux) || defined(VGP_loongarch64_linux) +- || defined(VGP_nanomips_linux) || defined(VGP_riscv64_linux) ++ || defined(VGP_nanomips_linux) || defined(VGP_riscv64_linux) \ ++ || defined(VGP_loongarch64_linux) res = VG_(do_syscall5)( __NR_clone, flags, (UWord)NULL, (UWord)parent_tidptr, (UWord)NULL, (UWord)child_tidptr ); -@@ -828,7 +847,8 @@ PRE(sys_clone) +@@ -847,7 +867,8 @@ PRE(sys_clone) #define PRA_CHILD_TIDPTR PRA5 #define ARG_TLS ARG4 #define PRA_TLS PRA4 @@ -28517,19 +28464,16 @@ index d571fc3..02a62e4 100644 #define ARG_CHILD_TIDPTR ARG4 #define PRA_CHILD_TIDPTR PRA4 #define ARG_TLS ARG5 -@@ -4342,9 +4362,11 @@ PRE(sys_sigaction) +@@ -4461,7 +4482,7 @@ PRE(sys_sigaction) PRE_MEM_READ( "sigaction(act->sa_handler)", (Addr)&sa->ksa_handler, sizeof(sa->ksa_handler)); PRE_MEM_READ( "sigaction(act->sa_mask)", (Addr)&sa->sa_mask, sizeof(sa->sa_mask)); PRE_MEM_READ( "sigaction(act->sa_flags)", (Addr)&sa->sa_flags, sizeof(sa->sa_flags)); -+#if !defined(VGP_loongarch64_linux) +-# if !defined(VGP_riscv64_linux) ++# if !defined(VGP_riscv64_linux) && !defined(VGP_loongarch64_linux) + /* Check the sa_restorer field. More recent Linux platforms completely + drop this member. */ if (ML_(safe_to_deref)(sa,sizeof(struct vki_old_sigaction)) - && (sa->sa_flags & VKI_SA_RESTORER)) - PRE_MEM_READ( "sigaction(act->sa_restorer)", (Addr)&sa->sa_restorer, sizeof(sa->sa_restorer)); -+#endif - } - - if (ARG3 != 0) { -@@ -4374,7 +4396,9 @@ PRE(sys_sigaction) +@@ -4497,7 +4518,9 @@ PRE(sys_sigaction) new.ksa_handler = oldnew->ksa_handler; new.sa_flags = oldnew->sa_flags; @@ -28539,7 +28483,7 @@ index d571fc3..02a62e4 100644 convert_sigset_to_rt(&oldnew->sa_mask, &new.sa_mask); newp = &new; } -@@ -4387,7 +4411,9 @@ PRE(sys_sigaction) +@@ -4510,7 +4533,9 @@ PRE(sys_sigaction) oldold->ksa_handler = oldp->ksa_handler; oldold->sa_flags = oldp->sa_flags; @@ -28549,33 +28493,33 @@ index d571fc3..02a62e4 100644 oldold->sa_mask = oldp->sa_mask.sig[0]; } } -@@ -4460,10 +4486,13 @@ PRE(sys_rt_sigaction) +@@ -4583,12 +4608,13 @@ PRE(sys_rt_sigaction) PRE_MEM_READ( "rt_sigaction(act->sa_handler)", (Addr)&sa->ksa_handler, sizeof(sa->ksa_handler)); PRE_MEM_READ( "rt_sigaction(act->sa_mask)", (Addr)&sa->sa_mask, sizeof(sa->sa_mask)); PRE_MEM_READ( "rt_sigaction(act->sa_flags)", (Addr)&sa->sa_flags, sizeof(sa->sa_flags)); -+#if !defined(VGP_loongarch64_linux) +-# if !defined(VGP_riscv64_linux) ++# if !defined(VGP_riscv64_linux) && !defined(VGP_loongarch64_linux) if (ML_(safe_to_deref)(sa,sizeof(vki_sigaction_toK_t)) && (sa->sa_flags & VKI_SA_RESTORER)) PRE_MEM_READ( "rt_sigaction(act->sa_restorer)", (Addr)&sa->sa_restorer, sizeof(sa->sa_restorer)); -+#endif + # endif } + if (ARG3 != 0) PRE_MEM_WRITE( "rt_sigaction(oldact)", ARG3, sizeof(vki_sigaction_fromK_t)); -@@ -6815,7 +6844,8 @@ POST(sys_lookup_dcookie) - #endif +@@ -6965,7 +6991,7 @@ POST(sys_lookup_dcookie) #if defined(VGP_amd64_linux) || defined(VGP_s390x_linux) \ -- || defined(VGP_arm64_linux) || defined(VGP_nanomips_linux) -+ || defined(VGP_arm64_linux) || defined(VGP_nanomips_linux) \ -+ || defined(VGP_loongarch64_linux) + || defined(VGP_arm64_linux) || defined(VGP_nanomips_linux) \ +- || defined(VGP_riscv64_linux) ++ || defined(VGP_riscv64_linux) || defined(VGP_loongarch64_linux) PRE(sys_lookup_dcookie) { *flags |= SfMayBlock; diff --git a/coregrind/m_syswrap/syswrap-loongarch64-linux.c b/coregrind/m_syswrap/syswrap-loongarch64-linux.c new file mode 100644 -index 0000000..c684112 +index 000000000000..8a0b84d8e1f4 --- /dev/null +++ b/coregrind/m_syswrap/syswrap-loongarch64-linux.c @@ -0,0 +1,644 @@ @@ -28930,11 +28874,11 @@ index 0000000..c684112 + LINX_(__NR_unlinkat, sys_unlinkat), // 35 + LINX_(__NR_symlinkat, sys_symlinkat), // 36 + LINX_(__NR_linkat, sys_linkat), // 37 -+ // (__NR_renameat, sys_renameat), // 38 ++ LINX_(__NR_renameat, sys_renameat), // 38 + LINX_(__NR_umount2, sys_umount), // 39 + LINX_(__NR_mount, sys_mount), // 40 + LINX_(__NR_pivot_root, sys_pivot_root), // 41 -+ // (__NR_nfsservctl, sys_ni_syscall), // 42 ++ // (__NR_nfsservctl, sys_nfsservctl), // 42 + GENXY(__NR3264_statfs, sys_statfs), // 43 + GENXY(__NR3264_fstatfs, sys_fstatfs), // 44 + GENX_(__NR3264_truncate, sys_truncate), // 45 @@ -28949,7 +28893,7 @@ index 0000000..c684112 + LINX_(__NR_fchownat, sys_fchownat), // 54 + GENX_(__NR_fchown, sys_fchown), // 55 + LINXY(__NR_openat, sys_openat), // 56 -+ GENXY(__NR_close, sys_close), // 57 ++ GENX_(__NR_close, sys_close), // 57 + LINX_(__NR_vhangup, sys_vhangup), // 58 + LINXY(__NR_pipe2, sys_pipe2), // 59 + LINX_(__NR_quotactl, sys_quotactl), // 60 @@ -28970,7 +28914,7 @@ index 0000000..c684112 + LINX_(__NR_vmsplice, sys_vmsplice), // 75 + LINX_(__NR_splice, sys_splice), // 76 + LINX_(__NR_tee, sys_tee), // 77 -+ LINX_(__NR_readlinkat, sys_readlinkat), // 78 ++ LINXY(__NR_readlinkat, sys_readlinkat), // 78 + LINXY(__NR3264_fstatat, sys_newfstatat), // 79 + GENXY(__NR3264_fstat, sys_newfstat), // 80 + GENX_(__NR_sync, sys_sync), // 81 @@ -28996,7 +28940,7 @@ index 0000000..c684112 + GENXY(__NR_nanosleep, sys_nanosleep), // 101 + GENXY(__NR_getitimer, sys_getitimer), // 102 + GENXY(__NR_setitimer, sys_setitimer), // 103 -+ // (__NR_kexec_load, sys_kexec_load), // 104 ++ GENX_(__NR_kexec_load, sys_ni_syscall), // 104 + LINX_(__NR_init_module, sys_init_module), // 105 + LINX_(__NR_delete_module, sys_delete_module), // 106 + LINXY(__NR_timer_create, sys_timer_create), // 107 @@ -29023,7 +28967,7 @@ index 0000000..c684112 + // (__NR_restart_syscall, sys_restart_syscall), // 128 + GENX_(__NR_kill, sys_kill), // 129 + LINXY(__NR_tkill, sys_tkill), // 130 -+ LINX_(__NR_tgkill, sys_tgkill), // 131 ++ LINXY(__NR_tgkill, sys_tgkill), // 131 + GENXY(__NR_sigaltstack, sys_sigaltstack), // 132 + LINX_(__NR_rt_sigsuspend, sys_rt_sigsuspend), // 133 + LINXY(__NR_rt_sigaction, sys_rt_sigaction), // 134 @@ -29055,8 +28999,8 @@ index 0000000..c684112 + GENXY(__NR_uname, sys_newuname), // 160 + GENX_(__NR_sethostname, sys_sethostname), // 161 + // (__NR_setdomainname, sys_setdomainname), // 162 -+ // (__NR_getrlimit, sys_old_getrlimit), // 163 -+ // (__NR_setrlimit, sys_setrlimit), // 164 ++ GENXY(__NR_getrlimit, sys_old_getrlimit), // 163 ++ GENX_(__NR_setrlimit, sys_setrlimit), // 164 + GENXY(__NR_getrusage, sys_getrusage), // 165 + GENX_(__NR_umask, sys_umask), // 166 + LINXY(__NR_prctl, sys_prctl), // 167 @@ -29151,17 +29095,17 @@ index 0000000..c684112 + LINX_(__NR_process_vm_writev, sys_process_vm_writev), // 271 + LINX_(__NR_kcmp, sys_kcmp), // 272 + LINX_(__NR_finit_module, sys_finit_module), // 273 -+ // (__NR_sched_setattr, sys_sched_setattr), // 274 -+ // (__NR_sched_getattr, sys_sched_getattr), // 275 ++ LINX_(__NR_sched_setattr, sys_sched_setattr), // 274 ++ LINXY(__NR_sched_getattr, sys_sched_getattr), // 275 + LINX_(__NR_renameat2, sys_renameat2), // 276 + // (__NR_seccomp, sys_seccomp), // 277 + LINXY(__NR_getrandom, sys_getrandom), // 278 + LINXY(__NR_memfd_create, sys_memfd_create), // 279 + LINXY(__NR_bpf, sys_bpf), // 280 -+ // (__NR_execveat, sys_execveat), // 281 ++ LINX_(__NR_execveat, sys_execveat), // 281 + // (__NR_userfaultfd, sys_userfaultfd), // 282 + LINX_(__NR_membarrier, sys_membarrier), // 283 -+ // (__NR_mlock2, sys_mlock2), // 284 ++ GENX_(__NR_mlock2, sys_mlock2), // 284 + LINX_(__NR_copy_file_range, sys_copy_file_range), // 285 + LINXY(__NR_preadv2, sys_preadv2), // 286 + LINX_(__NR_pwritev2, sys_pwritev2), // 287 @@ -29170,34 +29114,34 @@ index 0000000..c684112 + // (__NR_pkey_free, sys_pkey_free), // 290 + LINXY(__NR_statx, sys_statx), // 291 + // (__NR_io_pgetevents, sys_io_pgetevents), // 292 -+ // (__NR_rseq, sys_rseq), // 293 ++ GENX_(__NR_rseq, sys_ni_syscall), // 293 + // (__NR_kexec_file_load, sys_kexec_file_load), // 294 + + // (__NR_pidfd_send_signal, sys_pidfd_send_signal), // 424 + LINXY(__NR_io_uring_setup, sys_io_uring_setup), // 425 + LINXY(__NR_io_uring_enter, sys_io_uring_enter), // 426 + LINXY(__NR_io_uring_register, sys_io_uring_register), // 427 -+ // (__NR_open_tree, sys_open_tree), // 428 -+ // (__NR_move_mount, sys_move_mount), // 429 -+ // (__NR_fsopen, sys_fsopen), // 430 -+ // (__NR_fsconfig, sys_fsconfig), // 431 -+ // (__NR_fsmount, sys_fsmount), // 432 -+ // (__NR_fspick, sys_fspick), // 433 -+ // (__NR_pidfd_open, sys_pidfd_open), // 434 ++ LINXY(__NR_open_tree, sys_open_tree), // 428 ++ LINX_(__NR_move_mount, sys_move_mount), // 429 ++ LINXY(__NR_fsopen, sys_fsopen), // 430 ++ LINX_(__NR_fsconfig, sys_fsconfig), // 431 ++ LINXY(__NR_fsmount, sys_fsmount), // 432 ++ LINXY(__NR_fspick, sys_fspick), // 433 ++ LINXY(__NR_pidfd_open, sys_pidfd_open), // 434 + GENX_(__NR_clone3, sys_ni_syscall), // 435 -+ // (__NR_close_range, sys_close_range), // 436 -+ // (__NR_openat2, sys_openat2), // 437 -+ // (__NR_pidfd_getfd, sys_pidfd_getfd), // 438 -+ // (__NR_faccessat2, sys_faccessat2), // 439 -+ // (__NR_process_madvise, sys_process_madvise), // 440 -+ // (__NR_epoll_pwait2, sys_epoll_pwait2), // 441 -+ // (__NR_mount_setattr, sys_mount_setattr), // 442 -+ // (__NR_quotactl_fd, sys_quotactl_fd), // 443 -+ // (__NR_landlock_create_ruleset, sys_landlock_create_ruleset), // 444 -+ // (__NR_landlock_add_rule, sys_landlock_add_rule), // 445 -+ // (__NR_landlock_restrict_self, sys_landlock_restrict_self), // 446 -+ // (__NR_memfd_secret, sys_memfd_secret), // 447 -+ // (__NR_process_mrelease, sys_process_mrelease), // 448 ++ LINXY(__NR_close_range, sys_close_range), // 436 ++ LINXY(__NR_openat2, sys_openat2), // 437 ++ LINXY(__NR_pidfd_getfd, sys_pidfd_getfd), // 438 ++ LINX_(__NR_faccessat2, sys_faccessat2), // 439 ++ ++ LINXY(__NR_epoll_pwait2, sys_epoll_pwait2), // 441 ++ ++ LINXY(__NR_landlock_create_ruleset, sys_landlock_create_ruleset), // 444 ++ LINX_(__NR_landlock_add_rule, sys_landlock_add_rule), // 445 ++ LINX_(__NR_landlock_restrict_self, sys_landlock_restrict_self), // 446 ++ LINXY(__NR_memfd_secret, sys_memfd_secret), // 447 ++ ++ LINX_(__NR_fchmodat2, sys_fchmodat2) // 452 +}; + +SyscallTableEntry* ML_(get_linux_syscall_entry) ( UInt sysno ) @@ -29224,7 +29168,7 @@ index 0000000..c684112 +/*--- end syswrap-loongarch64-linux.c ---*/ +/*--------------------------------------------------------------------*/ diff --git a/coregrind/m_syswrap/syswrap-main.c b/coregrind/m_syswrap/syswrap-main.c -index 91a1f7e..cd32e39 100644 +index 1a7f038d483d..9d501beae4c4 100644 --- a/coregrind/m_syswrap/syswrap-main.c +++ b/coregrind/m_syswrap/syswrap-main.c @@ -60,20 +60,21 @@ @@ -29260,27 +29204,36 @@ index 91a1f7e..cd32e39 100644 On s390x the svc instruction is used for system calls. The system call number is encoded in the instruction (8 bit immediate field). Since Linux -@@ -703,6 +704,17 @@ void getSyscallArgsFromGuestState ( /*OUT*/SyscallArgs* canonical, +@@ -737,6 +738,7 @@ void getSyscallArgsFromGuestState ( /*OUT*/SyscallArgs* canonical, canonical->arg6 = gst->guest_r9; // a5 canonical->arg7 = gst->guest_r10; // a6 canonical->arg8 = gst->guest_r11; // a7 + + #elif defined(VGP_x86_darwin) + VexGuestX86State* gst = (VexGuestX86State*)gst_vanilla; + UWord *stack = (UWord *)gst->guest_ESP; +@@ -880,6 +882,18 @@ void getSyscallArgsFromGuestState ( /*OUT*/SyscallArgs* canonical, + canonical->arg7 = 0; + canonical->arg8 = 0; + +#elif defined(VGP_loongarch64_linux) + VexGuestLOONGARCH64State* gst = (VexGuestLOONGARCH64State*)gst_vanilla; -+ canonical->sysno = gst->guest_R11; // a7 -+ canonical->arg1 = gst->guest_R4; // a0 -+ canonical->arg2 = gst->guest_R5; // a1 -+ canonical->arg3 = gst->guest_R6; // a2 -+ canonical->arg4 = gst->guest_R7; // a3 -+ canonical->arg5 = gst->guest_R8; // a4 -+ canonical->arg6 = gst->guest_R9; // a5 ++ canonical->sysno = gst->guest_R11; /* a7 */ ++ canonical->arg1 = gst->guest_R4; /* a0 */ ++ canonical->arg2 = gst->guest_R5; /* a1 */ ++ canonical->arg3 = gst->guest_R6; /* a2 */ ++ canonical->arg4 = gst->guest_R7; /* a3 */ ++ canonical->arg5 = gst->guest_R8; /* a4 */ ++ canonical->arg6 = gst->guest_R9; /* a5 */ ++ canonical->arg7 = 0; ++ canonical->arg8 = 0; + - #elif defined(VGP_x86_darwin) + #elif defined(VGP_x86_solaris) VexGuestX86State* gst = (VexGuestX86State*)gst_vanilla; UWord *stack = (UWord *)gst->guest_ESP; -@@ -1126,6 +1138,16 @@ void putSyscallArgsIntoGuestState ( /*IN*/ SyscallArgs* canonical, - gst->guest_r10 = canonical->arg7; - gst->guest_r11 = canonical->arg8; +@@ -1214,6 +1228,16 @@ void putSyscallArgsIntoGuestState ( /*IN*/ SyscallArgs* canonical, + gst->guest_x14 = canonical->arg5; /* a4 */ + gst->guest_x15 = canonical->arg6; /* a5 */ +#elif defined(VGP_loongarch64_linux) + VexGuestLOONGARCH64State* gst = (VexGuestLOONGARCH64State*)gst_vanilla; @@ -29295,11 +29248,10 @@ index 91a1f7e..cd32e39 100644 #elif defined(VGP_x86_solaris) VexGuestX86State* gst = (VexGuestX86State*)gst_vanilla; UWord *stack = (UWord *)gst->guest_ESP; -@@ -1240,6 +1262,13 @@ void getSyscallStatusFromGuestState ( /*OUT*/SyscallStatus* canonical, - RegWord a0 = gst->guest_r4; // a0 +@@ -1329,6 +1353,12 @@ void getSyscallStatusFromGuestState ( /*OUT*/SyscallStatus* canonical, canonical->sres = VG_(mk_SysRes_nanomips_linux)(a0); canonical->what = SsComplete; -+ + +# elif defined(VGP_loongarch64_linux) + VexGuestLOONGARCH64State* gst = (VexGuestLOONGARCH64State*)gst_vanilla; + ULong a0 = gst->guest_R4; // a0 @@ -29309,31 +29261,33 @@ index 91a1f7e..cd32e39 100644 # elif defined(VGP_amd64_freebsd) /* duplicates logic in m_signals.VG_UCONTEXT_SYSCALL_SYSRES */ VexGuestAMD64State* gst = (VexGuestAMD64State*)gst_vanilla; -@@ -1606,6 +1635,20 @@ void putSyscallStatusIntoGuestState ( /*IN*/ ThreadId tid, +@@ -1743,6 +1773,20 @@ void putSyscallStatusIntoGuestState ( /*IN*/ ThreadId tid, VG_TRACK( post_reg_write, Vg_CoreSysCall, tid, - OFFSET_mips32_r4, sizeof(UWord) ); + OFFSET_riscv64_x10, sizeof(UWord) ); +# elif defined(VGP_loongarch64_linux) -+ VexGuestLOONGARCH64State* gst = (VexGuestLOONGARCH64State*)gst_vanilla; -+ vg_assert(canonical->what == SsComplete); -+ if (sr_isError(canonical->sres)) { -+ /* This isn't exactly right, in that really a Failure with res -+ not in the range 1 .. 4095 is unrepresentable in the -+ Linux-loongarch64 scheme. Oh well. */ -+ gst->guest_R4 = - (Long)sr_Err(canonical->sres); -+ } else { -+ gst->guest_R4 = sr_Res(canonical->sres); -+ } -+ VG_TRACK( post_reg_write, Vg_CoreSysCall, tid, -+ OFFSET_loongarch64_R4, sizeof(UWord) ); ++VexGuestLOONGARCH64State* gst = (VexGuestLOONGARCH64State*)gst_vanilla; ++vg_assert(canonical->what == SsComplete); ++if (sr_isError(canonical->sres)) { ++ /* This isn't exactly right, in that really a Failure with res ++ not in the range 1 .. 4095 is unrepresentable in the ++ Linux-loongarch64 scheme. Oh well. */ ++ gst->guest_R4 = - (Long)sr_Err(canonical->sres); ++} else { ++ gst->guest_R4 = sr_Res(canonical->sres); ++} ++VG_TRACK( post_reg_write, Vg_CoreSysCall, tid, ++ OFFSET_loongarch64_R4, sizeof(UWord) ); + # elif defined(VGP_x86_solaris) VexGuestX86State* gst = (VexGuestX86State*)gst_vanilla; SysRes sres = canonical->sres; -@@ -1855,6 +1898,15 @@ void getSyscallArgLayout ( /*OUT*/SyscallArgLayout* layout ) - layout->s_arg7 = sizeof(UWord) * 1; - layout->s_arg8 = sizeof(UWord) * 2; - +@@ -1957,7 +2001,16 @@ void getSyscallArgLayout ( /*OUT*/SyscallArgLayout* layout ) + layout->s_arg6 = sizeof(UWord) * 6; + layout->s_arg7 = sizeof(UWord) * 7; + layout->s_arg8 = sizeof(UWord) * 8; +- ++ +#elif defined(VGP_loongarch64_linux) + layout->o_sysno = OFFSET_loongarch64_R11; + layout->o_arg1 = OFFSET_loongarch64_R4; @@ -29343,14 +29297,13 @@ index 91a1f7e..cd32e39 100644 + layout->o_arg5 = OFFSET_loongarch64_R8; + layout->o_arg6 = OFFSET_loongarch64_R9; + - #else - # error "getSyscallLayout: unknown arch" - #endif -@@ -2899,6 +2951,25 @@ void ML_(fixup_guest_state_to_restart_syscall) ( ThreadArchState* arch ) - arch->vex.guest_PC -= 2; - } + #elif defined(VGP_amd64_darwin) + layout->o_sysno = OFFSET_amd64_RAX; + layout->o_arg1 = OFFSET_amd64_RDI; +@@ -3112,6 +3165,24 @@ void ML_(fixup_guest_state_to_restart_syscall) ( ThreadArchState* arch ) + vg_assert(p[0] == 0x73 && p[1] == 0x00 && p[2] == 0x00 && p[3] == 0x00); } -+ + +#elif defined(VGP_loongarch64_linux) + arch->vex.guest_PC -= 4; // sizeof(loongarch instr) + @@ -29363,8 +29316,8 @@ index 91a1f7e..cd32e39 100644 + UChar *p = (UChar *)(Addr)(arch->vex.guest_PC); + if (p[0] != 0x00 || p[1] != 0x00 || p[2] != 0x2B || p[3] != 0x00) + VG_(message)(Vg_DebugMsg, -+ "?! restarting over syscall at %#llx %02x %02x %02x %02x\n", -+ (ULong)arch->vex.guest_PC, p[0], p[1], p[2], p[3]); ++ "?! restarting over syscall at %#llx %02x %02x %02x %02x\n", ++ (ULong)arch->vex.guest_PC, p[0], p[1], p[2], p[3]); + + vg_assert(p[0] == 0x00 && p[1] == 0x00 && p[2] == 0x2B && p[3] == 0x00); + } @@ -29373,10 +29326,10 @@ index 91a1f7e..cd32e39 100644 arch->vex.guest_EIP -= 2; // sizeof(int $0x91) or sizeof(syscall) diff --git a/coregrind/m_trampoline.S b/coregrind/m_trampoline.S -index da96972..f02d53f 100644 +index 2c2cc0dc2a3d..09a311262cfa 100644 --- a/coregrind/m_trampoline.S +++ b/coregrind/m_trampoline.S -@@ -1520,6 +1520,53 @@ VG_(trampoline_stuff_end): +@@ -1696,6 +1696,65 @@ VG_(trampoline_stuff_end): # undef UD2_1024 # undef UD2_PAGE @@ -29393,11 +29346,6 @@ index da96972..f02d53f 100644 + syscall 0 + .long 0 /*illegal insn*/ + -+/* There's no particular reason that this needs to be handwritten -+ assembly, but since that's what this file contains, here's a -+ simple strlen() and strchr() implementations. -+*/ -+ +.global VG_(loongarch64_linux_REDIR_FOR_strlen) +.type VG_(loongarch64_linux_REDIR_FOR_strlen), @function +VG_(loongarch64_linux_REDIR_FOR_strlen): @@ -29424,13 +29372,30 @@ index da96972..f02d53f 100644 + jr $ra +.size VG_(loongarch64_linux_REDIR_FOR_strchr), .-VG_(loongarch64_linux_REDIR_FOR_strchr) + ++.global VG_(loongarch64_linux_REDIR_FOR_strcmp) ++.type VG_(loongarch64_linux_REDIR_FOR_strcmp), @function ++VG_(loongarch64_linux_REDIR_FOR_strcmp): ++ strcmp_begin: ++ ld.bu $t0, $a0, 0 ++ ld.bu $t1, $a1, 0 ++ beqz $t0, strcmp_end ++ beq $t0, $t1, strcmp_loop ++ strcmp_end: ++ sub.d $a0, $t0, $t1 ++ jr $ra ++ strcmp_loop: ++ addi.d $a0, $a0, 1 ++ addi.d $a1, $a1, 1 ++ b strcmp_begin ++.size VG_(loongarch64_linux_REDIR_FOR_strcmp), .-VG_(loongarch64_linux_REDIR_FOR_strcmp) ++ +.global VG_(trampoline_stuff_end) +VG_(trampoline_stuff_end): + /*---------------- x86-solaris ----------------*/ #else #if defined(VGP_x86_solaris) -@@ -1719,6 +1766,7 @@ VG_(trampoline_stuff_end): +@@ -1897,6 +1956,7 @@ VG_(trampoline_stuff_end): #endif #endif #endif @@ -29439,23 +29404,20 @@ index da96972..f02d53f 100644 /* Let the linker know we don't need an executable stack */ MARK_STACK_NO_EXEC diff --git a/coregrind/m_translate.c b/coregrind/m_translate.c -index 0dd3608..1ae200b 100644 +index 5da88cac7c09..6827a4159231 100644 --- a/coregrind/m_translate.c +++ b/coregrind/m_translate.c -@@ -1750,6 +1750,11 @@ Bool VG_(translate) ( ThreadId tid, +@@ -1750,7 +1750,7 @@ Bool VG_(translate) ( ThreadId tid, vex_archinfo.arm64_requires_fallback_LLSC; # endif -+# if defined(VGP_loongarch64_linux) -+ /* For now, we only use fallback LLSC */ -+ vex_abiinfo.guest__use_fallback_LLSC = True; -+# endif -+ - /* Set up closure args. */ - closure.tid = tid; - closure.nraddr = nraddr; +-# if defined(VGP_riscv64_linux) ++# if defined(VGP_riscv64_linux) || defined(VGP_loongarch64_linux) + vex_abiinfo.guest__use_fallback_LLSC = True; + # endif + diff --git a/coregrind/m_vki.c b/coregrind/m_vki.c -index 0cc1882..11c5fe3 100644 +index 0cc1882a1d50..11c5fe316389 100644 --- a/coregrind/m_vki.c +++ b/coregrind/m_vki.c @@ -37,13 +37,13 @@ @@ -29476,7 +29438,7 @@ index 0cc1882..11c5fe3 100644 unsigned long VKI_PAGE_SIZE = 1UL << 12; #endif diff --git a/coregrind/pub_core_aspacemgr.h b/coregrind/pub_core_aspacemgr.h -index b867108..a2b41f3 100644 +index b867108a2264..a2b41f374a3c 100644 --- a/coregrind/pub_core_aspacemgr.h +++ b/coregrind/pub_core_aspacemgr.h @@ -335,7 +335,8 @@ extern Bool VG_(am_relocate_nooverlap_client)( /*OUT*/Bool* need_discard, @@ -29490,24 +29452,25 @@ index b867108..a2b41f3 100644 #else # define VG_STACK_GUARD_SZB 8192 // 2 pages diff --git a/coregrind/pub_core_basics.h b/coregrind/pub_core_basics.h -index abc5a06..1325451 100644 +index 353e69ce8461..003d7f56a5e7 100644 --- a/coregrind/pub_core_basics.h +++ b/coregrind/pub_core_basics.h -@@ -55,8 +55,8 @@ - +@@ -56,9 +56,9 @@ typedef struct { -- ULong r_pc; /* x86:EIP, amd64:RIP, ppc:CIA, arm:R15, mips:pc */ -- ULong r_sp; /* x86:ESP, amd64:RSP, ppc:R1, arm:R13, mips:sp */ -+ ULong r_pc; /* x86:EIP, amd64:RIP, ppc:CIA, arm:R15, mips:pc, loongarch64:pc */ -+ ULong r_sp; /* x86:ESP, amd64:RSP, ppc:R1, arm:R13, mips:sp, loongarch64:sp */ + ULong r_pc; /* x86:EIP, amd64:RIP, ppc:CIA, arm:R15, mips:pc, +- riscv64: pc */ ++ riscv64: pc, loongarch64: pc */ + ULong r_sp; /* x86:ESP, amd64:RSP, ppc:R1, arm:R13, mips:sp, +- riscv64: x2 */ ++ riscv64: x2, loongarch64: sp */ union { struct { UInt r_ebp; -@@ -102,6 +102,10 @@ typedef - ULong r31; /* Return address of the last subroutine call */ - ULong r28; - } MIPS64; +@@ -108,6 +108,10 @@ typedef + ULong r_fp; /* x8 */ + ULong r_ra; /* x1 */ + } RISCV64; + struct { + ULong r_fp; /* Stack frame pointer or static variable */ + ULong r_ra; /* Return address of the last subroutine call */ @@ -29516,27 +29479,27 @@ index abc5a06..1325451 100644 } UnwindStartRegs; diff --git a/coregrind/pub_core_debuginfo.h b/coregrind/pub_core_debuginfo.h -index 4d6ebda..115afff 100644 +index 08579e6f066c..9c6510105637 100644 --- a/coregrind/pub_core_debuginfo.h +++ b/coregrind/pub_core_debuginfo.h -@@ -137,6 +137,10 @@ typedef +@@ -141,6 +141,10 @@ typedef typedef struct { Addr pc; Addr sp; Addr fp; Addr ra; } D3UnwindRegs; +#elif defined(VGA_loongarch64) -+typedef -+ struct { Addr pc; Addr ra; Addr sp; Addr fp; } -+ D3UnwindRegs; ++ typedef ++ struct { Addr pc; Addr ra; Addr sp; Addr fp; } ++ D3UnwindRegs; #else # error "Unsupported arch" #endif diff --git a/coregrind/pub_core_machine.h b/coregrind/pub_core_machine.h -index a9b7dd8..4793d59 100644 +index 555506a03b93..75215f658ecc 100644 --- a/coregrind/pub_core_machine.h +++ b/coregrind/pub_core_machine.h -@@ -126,6 +126,11 @@ - # define VG_ELF_MACHINE EM_NANOMIPS - # define VG_ELF_CLASS ELFCLASS32 +@@ -131,6 +131,11 @@ + # define VG_ELF_MACHINE EM_RISCV + # define VG_ELF_CLASS ELFCLASS64 # undef VG_PLAT_USES_PPCTOC +#elif defined(VGP_loongarch64_linux) +# define VG_ELF_DATA2XXX ELFDATA2LSB @@ -29546,10 +29509,10 @@ index a9b7dd8..4793d59 100644 #else # error Unknown platform #endif -@@ -163,6 +168,10 @@ - # define VG_INSTR_PTR guest_PC - # define VG_STACK_PTR guest_r29 - # define VG_FRAME_PTR guest_r30 +@@ -172,6 +177,10 @@ + # define VG_INSTR_PTR guest_pc + # define VG_STACK_PTR guest_x2 + # define VG_FRAME_PTR guest_x8 +#elif defined(VGA_loongarch64) +# define VG_INSTR_PTR guest_PC +# define VG_STACK_PTR guest_R3 @@ -29557,7 +29520,7 @@ index a9b7dd8..4793d59 100644 #else # error Unknown arch #endif -@@ -234,6 +243,10 @@ void VG_(get_UnwindStartRegs) ( /*OUT*/UnwindStartRegs* regs, +@@ -243,6 +252,10 @@ void VG_(get_UnwindStartRegs) ( /*OUT*/UnwindStartRegs* regs, s390x: initially: call VG_(machine_get_hwcaps) then safe to use VG_(machine_get_VexArchInfo) @@ -29569,7 +29532,7 @@ index a9b7dd8..4793d59 100644 VG_(machine_get_hwcaps) may use signals (although it attempts to leave signal state unchanged) and therefore should only be diff --git a/coregrind/pub_core_mallocfree.h b/coregrind/pub_core_mallocfree.h -index b5922ca..d285caa 100644 +index df9648cea47b..71b747f28b3b 100644 --- a/coregrind/pub_core_mallocfree.h +++ b/coregrind/pub_core_mallocfree.h @@ -78,6 +78,7 @@ typedef Int ArenaId; @@ -29579,9 +29542,9 @@ index b5922ca..d285caa 100644 + defined(VGP_loongarch64_linux) || \ defined(VGP_x86_freebsd) || \ defined(VGP_amd64_freebsd) || \ - defined(VGP_x86_darwin) || \ + defined(VGP_arm64_freebsd) || \ diff --git a/coregrind/pub_core_signals.h b/coregrind/pub_core_signals.h -index ae8555b..c53323f 100644 +index ae8555ba8062..c53323fbe7d0 100644 --- a/coregrind/pub_core_signals.h +++ b/coregrind/pub_core_signals.h @@ -77,6 +77,7 @@ extern void VG_(synth_sigill) (ThreadId tid, Addr addr); @@ -29593,39 +29556,40 @@ index ae8555b..c53323f 100644 /* Extend the stack to cover addr, if possible */ extern Bool VG_(extend_stack)(ThreadId tid, Addr addr); diff --git a/coregrind/pub_core_syscall.h b/coregrind/pub_core_syscall.h -index 6c4f825..5d7ff44 100644 +index e1e066fccfe3..2976a65e4a0d 100644 --- a/coregrind/pub_core_syscall.h +++ b/coregrind/pub_core_syscall.h -@@ -105,6 +105,7 @@ extern SysRes VG_(mk_SysRes_mips32_linux)( UWord v0, UWord v1, - extern SysRes VG_(mk_SysRes_mips64_linux)( ULong v0, ULong v1, +@@ -107,6 +107,7 @@ extern SysRes VG_(mk_SysRes_mips64_linux)( ULong v0, ULong v1, ULong a3 ); extern SysRes VG_(mk_SysRes_nanomips_linux)( UWord a0); + extern SysRes VG_(mk_SysRes_riscv64_linux) ( Long a0 ); +extern SysRes VG_(mk_SysRes_loongarch64_linux)( UWord a0 ); extern SysRes VG_(mk_SysRes_x86_solaris) ( Bool isErr, UInt val, UInt val2 ); extern SysRes VG_(mk_SysRes_amd64_solaris) ( Bool isErr, ULong val, ULong val2 ); extern SysRes VG_(mk_SysRes_Error) ( UWord val ); diff --git a/coregrind/pub_core_trampoline.h b/coregrind/pub_core_trampoline.h -index 54c575a..3700acb 100644 +index 11d791df7c89..c5f9f0ec9c49 100644 --- a/coregrind/pub_core_trampoline.h +++ b/coregrind/pub_core_trampoline.h -@@ -171,6 +171,12 @@ extern Char* VG_(nanomips_linux_REDIR_FOR_index)( const Char*, Int ); - extern UInt VG_(nanomips_linux_REDIR_FOR_strlen)( void* ); +@@ -184,6 +184,13 @@ extern SizeT VG_(riscv64_linux_REDIR_FOR_strlen)( const HChar* ); + extern Int VG_(riscv64_linux_REDIR_FOR_strcmp)( const HChar*, const HChar* ); #endif +#if defined(VGP_loongarch64_linux) -+extern Addr VG_(loongarch64_linux_SUBST_FOR_rt_sigreturn); -+extern UInt VG_(loongarch64_linux_REDIR_FOR_strlen)( void* ); -+extern Char* VG_(loongarch64_linux_REDIR_FOR_strchr)( const Char*, Int ); ++extern Addr VG_(loongarch64_linux_SUBST_FOR_rt_sigreturn); ++extern UInt VG_(loongarch64_linux_REDIR_FOR_strlen)( void* ); ++extern HChar* VG_(loongarch64_linux_REDIR_FOR_strchr)( const HChar*, Int ); ++extern Int VG_(loongarch64_linux_REDIR_FOR_strcmp)( const HChar*, const HChar* ); +#endif + #if defined(VGP_x86_solaris) extern SizeT VG_(x86_solaris_REDIR_FOR_strcmp)(const HChar *, const HChar *); extern SizeT VG_(x86_solaris_REDIR_FOR_strlen)(const HChar *); diff --git a/coregrind/pub_core_transtab.h b/coregrind/pub_core_transtab.h -index 6cc11f6..fe93926 100644 +index cc70a2944901..cad717f90fbd 100644 --- a/coregrind/pub_core_transtab.h +++ b/coregrind/pub_core_transtab.h -@@ -81,7 +81,8 @@ static inline UWord VG_TT_FAST_HASH ( Addr guest ) { +@@ -82,7 +82,8 @@ static inline UWord VG_TT_FAST_HASH ( Addr guest ) { } #elif defined(VGA_ppc32) || defined(VGA_ppc64be) || defined(VGA_ppc64le) \ @@ -29636,35 +29600,34 @@ index 6cc11f6..fe93926 100644 // Instructions are 4-byte aligned. UWord merged = ((UWord)guest) >> 2; diff --git a/coregrind/pub_core_transtab_asm.h b/coregrind/pub_core_transtab_asm.h -index 8b585f1..e73c89a 100644 +index c14e24ebf030..b1ae0070104b 100644 --- a/coregrind/pub_core_transtab_asm.h +++ b/coregrind/pub_core_transtab_asm.h -@@ -83,7 +83,7 @@ +@@ -80,7 +80,8 @@ #if defined(VGA_amd64) || defined(VGA_arm64) \ || defined(VGA_ppc64be) || defined(VGA_ppc64le) \ || (defined(VGA_mips64) && defined(VGABI_64)) \ -- || defined(VGA_s390x) -+ || defined(VGA_s390x) || defined(VGA_loongarch64) +- || defined(VGA_s390x) || defined(VGA_riscv64) ++ || defined(VGA_s390x) || defined(VGA_riscv64) \ ++ || defined(VGA_loongarch64) // And all other 64-bit hosts # define VG_FAST_CACHE_SET_BITS 6 // These FCS_{g,h}{0,1,2,3} are the values of diff --git a/coregrind/vgdb-invoker-ptrace.c b/coregrind/vgdb-invoker-ptrace.c -index 78a6a16..798fe5f 100644 +index 3a6a455d0359..21609a27eb45 100644 --- a/coregrind/vgdb-invoker-ptrace.c +++ b/coregrind/vgdb-invoker-ptrace.c -@@ -50,9 +50,10 @@ - // Rather we use PTRACE_GETREGS or PTRACE_PEEKUSER. - - // The only platform on which we must use PTRACE_GETREGSET is arm64. -+// We use PTRACE_GETREGSET on loongarch64 as well. +@@ -63,7 +63,8 @@ struct user { + // The only platform on which we must use PTRACE_GETREGSET is here. // The resulting vgdb cannot work in a bi-arch setup. // -1 means we will check that PTRACE_GETREGSET works. --# if defined(VGA_arm64) -+# if defined(VGA_arm64) || defined(VGA_loongarch64) +-# if defined(VGA_arm64) || defined(VGA_riscv64) ++# if defined(VGA_arm64) || defined(VGA_riscv64) \ ++ || defined(VGA_loongarch64) #define USE_PTRACE_GETREGSET # endif #endif -@@ -529,6 +530,9 @@ static struct user_regs_struct user_save; +@@ -540,6 +541,9 @@ static struct user_regs_struct user_save; # else static struct user_pt_regs user_save; # endif @@ -29674,7 +29637,7 @@ index 78a6a16..798fe5f 100644 # else static struct user user_save; # endif -@@ -805,6 +809,9 @@ Bool invoker_invoke_gdbserver (pid_t pid) +@@ -816,6 +820,9 @@ Bool invoker_invoke_gdbserver (pid_t pid) # else struct user_pt_regs user_mod; # endif @@ -29684,28 +29647,29 @@ index 78a6a16..798fe5f 100644 # else struct user user_mod; # endif -@@ -874,6 +881,8 @@ Bool invoker_invoke_gdbserver (pid_t pid) - sp = p[29]; - #elif defined(VGA_mips64) +@@ -887,6 +894,8 @@ Bool invoker_invoke_gdbserver (pid_t pid) sp = user_mod.regs[29]; + #elif defined(VGA_riscv64) + sp = user_mod.regs.sp; +#elif defined(VGA_loongarch64) + sp = user_mod.regs[3]; #else I_die_here : (sp) architecture missing in vgdb-invoker-ptrace.c #endif -@@ -961,6 +970,8 @@ Bool invoker_invoke_gdbserver (pid_t pid) +@@ -978,6 +987,9 @@ Bool invoker_invoke_gdbserver (pid_t pid) + #elif defined(VGA_riscv64) + assert(0); - #elif defined(VGA_mips64) - assert(0); // cannot vgdb a 32 bits executable with a 64 bits exe +#elif defined(VGA_loongarch64) + assert(0); // cannot vgdb a 32 bits executable with a 64 bits exe ++ #else I_die_here : architecture missing in vgdb-invoker-ptrace.c #endif -@@ -1068,6 +1079,12 @@ Bool invoker_invoke_gdbserver (pid_t pid) - user_mod.regs[31] = bad_return; - user_mod.regs[34] = shared64->invoke_gdbserver; - user_mod.regs[25] = shared64->invoke_gdbserver; +@@ -1089,6 +1101,12 @@ Bool invoker_invoke_gdbserver (pid_t pid) + user_mod.regs.a0 = check; + user_mod.regs.ra = bad_return; + user_mod.regs.pc = shared64->invoke_gdbserver; +#elif defined(VGA_loongarch64) + /* put check arg in register a0 */ + user_mod.regs[4] = check; @@ -29715,174 +29679,33 @@ index 78a6a16..798fe5f 100644 #else I_die_here: architecture missing in vgdb-invoker-ptrace.c #endif -diff --git a/dhat/Makefile.in b/dhat/Makefile.in -index 9b9f943..ee93cc5 100644 ---- a/dhat/Makefile.in -+++ b/dhat/Makefile.in -@@ -686,6 +686,12 @@ AM_CFLAGS_PSO_MIPS64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ - $(AM_CFLAGS_PSO_BASE) - - AM_CCASFLAGS_MIPS64_LINUX = @FLAG_M64@ -g -+AM_FLAG_M3264_LOONGARCH64_LINUX = @FLAG_M64@ -+AM_CFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) -+AM_CFLAGS_PSO_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ -+ $(AM_CFLAGS_PSO_BASE) -+ -+AM_CCASFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ -g - AM_FLAG_M3264_X86_SOLARIS = @FLAG_M32@ - AM_CFLAGS_X86_SOLARIS = @FLAG_M32@ @PREFERRED_STACK_BOUNDARY_2@ \ - $(AM_CFLAGS_BASE) -fomit-frame-pointer @SOLARIS_UNDEF_LARGESOURCE@ -@@ -733,6 +739,7 @@ PRELOAD_LDFLAGS_S390X_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ - PRELOAD_LDFLAGS_MIPS32_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ - PRELOAD_LDFLAGS_NANOMIPS_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ - PRELOAD_LDFLAGS_MIPS64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ -+PRELOAD_LDFLAGS_LOONGARCH64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ - PRELOAD_LDFLAGS_X86_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M32@ - PRELOAD_LDFLAGS_AMD64_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M64@ - -@@ -823,6 +830,10 @@ TOOL_LDFLAGS_MIPS64_LINUX = \ - -static -nodefaultlibs -nostartfiles -u __start @FLAG_NO_BUILD_ID@ \ - @FLAG_M64@ - -+TOOL_LDFLAGS_LOONGARCH64_LINUX = \ -+ -static -nodefaultlibs -nostartfiles -u __start @FLAG_NO_BUILD_ID@ \ -+ @FLAG_M64@ -+ - TOOL_LDFLAGS_X86_SOLARIS = \ - $(TOOL_LDFLAGS_COMMON_SOLARIS) @FLAG_M32@ - -@@ -883,6 +894,9 @@ LIBREPLACEMALLOC_MIPS32_LINUX = \ - LIBREPLACEMALLOC_MIPS64_LINUX = \ - $(top_builddir)/coregrind/libreplacemalloc_toolpreload-mips64-linux.a - -+LIBREPLACEMALLOC_LOONGARCH64_LINUX = \ -+ $(top_builddir)/coregrind/libreplacemalloc_toolpreload-loongarch64-linux.a -+ - LIBREPLACEMALLOC_X86_SOLARIS = \ - $(top_builddir)/coregrind/libreplacemalloc_toolpreload-x86-solaris.a - -@@ -955,6 +969,11 @@ LIBREPLACEMALLOC_LDFLAGS_MIPS64_LINUX = \ - $(LIBREPLACEMALLOC_MIPS64_LINUX) \ - -Wl,--no-whole-archive - -+LIBREPLACEMALLOC_LDFLAGS_LOONGARCH64_LINUX = \ -+ -Wl,--whole-archive \ -+ $(LIBREPLACEMALLOC_LOONGARCH64_LINUX) \ -+ -Wl,--no-whole-archive -+ - LIBREPLACEMALLOC_LDFLAGS_X86_SOLARIS = \ - -Wl,--whole-archive \ - $(LIBREPLACEMALLOC_X86_SOLARIS) \ -diff --git a/dhat/tests/Makefile.in b/dhat/tests/Makefile.in -index 433a72b..58ee764 100644 ---- a/dhat/tests/Makefile.in -+++ b/dhat/tests/Makefile.in -@@ -623,6 +623,12 @@ AM_CFLAGS_PSO_MIPS64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ - $(AM_CFLAGS_PSO_BASE) - - AM_CCASFLAGS_MIPS64_LINUX = @FLAG_M64@ -g -+AM_FLAG_M3264_LOONGARCH64_LINUX = @FLAG_M64@ -+AM_CFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) -+AM_CFLAGS_PSO_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ -+ $(AM_CFLAGS_PSO_BASE) -+ -+AM_CCASFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ -g - AM_FLAG_M3264_X86_SOLARIS = @FLAG_M32@ - AM_CFLAGS_X86_SOLARIS = @FLAG_M32@ @PREFERRED_STACK_BOUNDARY_2@ \ - $(AM_CFLAGS_BASE) -fomit-frame-pointer @SOLARIS_UNDEF_LARGESOURCE@ -@@ -670,6 +676,7 @@ PRELOAD_LDFLAGS_S390X_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ - PRELOAD_LDFLAGS_MIPS32_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ - PRELOAD_LDFLAGS_NANOMIPS_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ - PRELOAD_LDFLAGS_MIPS64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ -+PRELOAD_LDFLAGS_LOONGARCH64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ - PRELOAD_LDFLAGS_X86_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M32@ - PRELOAD_LDFLAGS_AMD64_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M64@ - AM_CPPFLAGS = -I$(top_srcdir) -I$(top_srcdir)/include \ -diff --git a/drd/Makefile.in b/drd/Makefile.in -index 989dcae..cb7f41a 100644 ---- a/drd/Makefile.in -+++ b/drd/Makefile.in -@@ -767,6 +767,12 @@ AM_CFLAGS_PSO_MIPS64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ - $(AM_CFLAGS_PSO_BASE) - - AM_CCASFLAGS_MIPS64_LINUX = @FLAG_M64@ -g -+AM_FLAG_M3264_LOONGARCH64_LINUX = @FLAG_M64@ -+AM_CFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) -+AM_CFLAGS_PSO_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ -+ $(AM_CFLAGS_PSO_BASE) -+ -+AM_CCASFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ -g - AM_FLAG_M3264_X86_SOLARIS = @FLAG_M32@ - AM_CFLAGS_X86_SOLARIS = @FLAG_M32@ @PREFERRED_STACK_BOUNDARY_2@ \ - $(AM_CFLAGS_BASE) -fomit-frame-pointer @SOLARIS_UNDEF_LARGESOURCE@ -@@ -814,6 +820,7 @@ PRELOAD_LDFLAGS_S390X_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ - PRELOAD_LDFLAGS_MIPS32_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ - PRELOAD_LDFLAGS_NANOMIPS_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ - PRELOAD_LDFLAGS_MIPS64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ -+PRELOAD_LDFLAGS_LOONGARCH64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ - PRELOAD_LDFLAGS_X86_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M32@ - PRELOAD_LDFLAGS_AMD64_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M64@ - -@@ -904,6 +911,10 @@ TOOL_LDFLAGS_MIPS64_LINUX = \ - -static -nodefaultlibs -nostartfiles -u __start @FLAG_NO_BUILD_ID@ \ - @FLAG_M64@ - -+TOOL_LDFLAGS_LOONGARCH64_LINUX = \ -+ -static -nodefaultlibs -nostartfiles -u __start @FLAG_NO_BUILD_ID@ \ -+ @FLAG_M64@ -+ - TOOL_LDFLAGS_X86_SOLARIS = \ - $(TOOL_LDFLAGS_COMMON_SOLARIS) @FLAG_M32@ - -@@ -964,6 +975,9 @@ LIBREPLACEMALLOC_MIPS32_LINUX = \ - LIBREPLACEMALLOC_MIPS64_LINUX = \ - $(top_builddir)/coregrind/libreplacemalloc_toolpreload-mips64-linux.a - -+LIBREPLACEMALLOC_LOONGARCH64_LINUX = \ -+ $(top_builddir)/coregrind/libreplacemalloc_toolpreload-loongarch64-linux.a -+ - LIBREPLACEMALLOC_X86_SOLARIS = \ - $(top_builddir)/coregrind/libreplacemalloc_toolpreload-x86-solaris.a - -@@ -1036,6 +1050,11 @@ LIBREPLACEMALLOC_LDFLAGS_MIPS64_LINUX = \ - $(LIBREPLACEMALLOC_MIPS64_LINUX) \ - -Wl,--no-whole-archive - -+LIBREPLACEMALLOC_LDFLAGS_LOONGARCH64_LINUX = \ -+ -Wl,--whole-archive \ -+ $(LIBREPLACEMALLOC_LOONGARCH64_LINUX) \ -+ -Wl,--no-whole-archive -+ - LIBREPLACEMALLOC_LDFLAGS_X86_SOLARIS = \ - -Wl,--whole-archive \ - $(LIBREPLACEMALLOC_X86_SOLARIS) \ diff --git a/drd/drd_bitmap.h b/drd/drd_bitmap.h -index 3b71d74..1f11f23 100644 +index fa1506ed4fa9..1fd4a37b0bad 100644 --- a/drd/drd_bitmap.h +++ b/drd/drd_bitmap.h @@ -140,7 +140,7 @@ Addr make_address(const UWord a1, const UWord a0) #define BITS_PER_BITS_PER_UWORD 5 #elif defined(VGA_amd64) || defined(VGA_ppc64be) || defined(VGA_ppc64le) \ || defined(VGA_s390x) || (defined(VGA_mips64) && !defined(VGABI_N32)) \ -- || defined(VGA_arm64) -+ || defined(VGA_arm64) || defined(VGA_loongarch64) +- || defined(VGA_arm64) || defined(VGA_riscv64) ++ || defined(VGA_arm64) || defined(VGA_riscv64) || defined(VGA_loongarch64) #define BITS_PER_BITS_PER_UWORD 6 #else #error Unknown platform. diff --git a/drd/drd_load_store.c b/drd/drd_load_store.c -index 80d326a..da6283b 100644 +index a6fb874bfc49..692cfbee222c 100644 --- a/drd/drd_load_store.c +++ b/drd/drd_load_store.c -@@ -53,6 +53,8 @@ - #define STACK_POINTER_OFFSET OFFSET_mips32_r29 - #elif defined(VGA_mips64) +@@ -55,6 +55,8 @@ #define STACK_POINTER_OFFSET OFFSET_mips64_r29 + #elif defined(VGA_riscv64) + #define STACK_POINTER_OFFSET OFFSET_riscv64_x2 +#elif defined(VGA_loongarch64) +#define STACK_POINTER_OFFSET OFFSET_loongarch64_R3 #else #error Unknown architecture. #endif -@@ -634,6 +636,8 @@ IRSB* DRD_(instrument)(VgCallbackClosure* const closure, +@@ -636,6 +638,8 @@ IRSB* DRD_(instrument)(VgCallbackClosure* const closure, break; /* not interesting to DRD */ case Imbe_CancelReservation: break; /* not interesting to DRD */ @@ -29891,33 +29714,8 @@ index 80d326a..da6283b 100644 default: tl_assert(0); } -diff --git a/drd/tests/Makefile.in b/drd/tests/Makefile.in -index 80833e7..320e589 100644 ---- a/drd/tests/Makefile.in -+++ b/drd/tests/Makefile.in -@@ -1195,6 +1195,12 @@ AM_CFLAGS_PSO_MIPS64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ - $(AM_CFLAGS_PSO_BASE) - - AM_CCASFLAGS_MIPS64_LINUX = @FLAG_M64@ -g -+AM_FLAG_M3264_LOONGARCH64_LINUX = @FLAG_M64@ -+AM_CFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) -+AM_CFLAGS_PSO_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ -+ $(AM_CFLAGS_PSO_BASE) -+ -+AM_CCASFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ -g - AM_FLAG_M3264_X86_SOLARIS = @FLAG_M32@ - AM_CFLAGS_X86_SOLARIS = @FLAG_M32@ @PREFERRED_STACK_BOUNDARY_2@ \ - $(AM_CFLAGS_BASE) -fomit-frame-pointer @SOLARIS_UNDEF_LARGESOURCE@ -@@ -1242,6 +1248,7 @@ PRELOAD_LDFLAGS_S390X_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ - PRELOAD_LDFLAGS_MIPS32_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ - PRELOAD_LDFLAGS_NANOMIPS_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ - PRELOAD_LDFLAGS_MIPS64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ -+PRELOAD_LDFLAGS_LOONGARCH64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ - PRELOAD_LDFLAGS_X86_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M32@ - PRELOAD_LDFLAGS_AMD64_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M64@ - AM_CPPFLAGS = -I$(top_srcdir) -I$(top_srcdir)/include \ diff --git a/drd/tests/pth_barrier_thr_cr.supp b/drd/tests/pth_barrier_thr_cr.supp -index 653b2d2..34482cc 100644 +index 653b2d293832..34482ccb9d00 100644 --- a/drd/tests/pth_barrier_thr_cr.supp +++ b/drd/tests/pth_barrier_thr_cr.supp @@ -9,3 +9,14 @@ @@ -29935,261 +29733,20 @@ index 653b2d2..34482cc 100644 + fun:pthread_barrier_wait_intercept + fun:pthread_barrier_wait@* +} -diff --git a/exp-bbv/Makefile.in b/exp-bbv/Makefile.in -index 39f9cf9..d79f54f 100644 ---- a/exp-bbv/Makefile.in -+++ b/exp-bbv/Makefile.in -@@ -621,6 +621,12 @@ AM_CFLAGS_PSO_MIPS64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ - $(AM_CFLAGS_PSO_BASE) - - AM_CCASFLAGS_MIPS64_LINUX = @FLAG_M64@ -g -+AM_FLAG_M3264_LOONGARCH64_LINUX = @FLAG_M64@ -+AM_CFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) -+AM_CFLAGS_PSO_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ -+ $(AM_CFLAGS_PSO_BASE) -+ -+AM_CCASFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ -g - AM_FLAG_M3264_X86_SOLARIS = @FLAG_M32@ - AM_CFLAGS_X86_SOLARIS = @FLAG_M32@ @PREFERRED_STACK_BOUNDARY_2@ \ - $(AM_CFLAGS_BASE) -fomit-frame-pointer @SOLARIS_UNDEF_LARGESOURCE@ -@@ -668,6 +674,7 @@ PRELOAD_LDFLAGS_S390X_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ - PRELOAD_LDFLAGS_MIPS32_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ - PRELOAD_LDFLAGS_NANOMIPS_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ - PRELOAD_LDFLAGS_MIPS64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ -+PRELOAD_LDFLAGS_LOONGARCH64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ - PRELOAD_LDFLAGS_X86_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M32@ - PRELOAD_LDFLAGS_AMD64_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M64@ - -@@ -758,6 +765,10 @@ TOOL_LDFLAGS_MIPS64_LINUX = \ - -static -nodefaultlibs -nostartfiles -u __start @FLAG_NO_BUILD_ID@ \ - @FLAG_M64@ - -+TOOL_LDFLAGS_LOONGARCH64_LINUX = \ -+ -static -nodefaultlibs -nostartfiles -u __start @FLAG_NO_BUILD_ID@ \ -+ @FLAG_M64@ -+ - TOOL_LDFLAGS_X86_SOLARIS = \ - $(TOOL_LDFLAGS_COMMON_SOLARIS) @FLAG_M32@ - -@@ -818,6 +829,9 @@ LIBREPLACEMALLOC_MIPS32_LINUX = \ - LIBREPLACEMALLOC_MIPS64_LINUX = \ - $(top_builddir)/coregrind/libreplacemalloc_toolpreload-mips64-linux.a - -+LIBREPLACEMALLOC_LOONGARCH64_LINUX = \ -+ $(top_builddir)/coregrind/libreplacemalloc_toolpreload-loongarch64-linux.a -+ - LIBREPLACEMALLOC_X86_SOLARIS = \ - $(top_builddir)/coregrind/libreplacemalloc_toolpreload-x86-solaris.a - -@@ -890,6 +904,11 @@ LIBREPLACEMALLOC_LDFLAGS_MIPS64_LINUX = \ - $(LIBREPLACEMALLOC_MIPS64_LINUX) \ - -Wl,--no-whole-archive - -+LIBREPLACEMALLOC_LDFLAGS_LOONGARCH64_LINUX = \ -+ -Wl,--whole-archive \ -+ $(LIBREPLACEMALLOC_LOONGARCH64_LINUX) \ -+ -Wl,--no-whole-archive -+ - LIBREPLACEMALLOC_LDFLAGS_X86_SOLARIS = \ - -Wl,--whole-archive \ - $(LIBREPLACEMALLOC_X86_SOLARIS) \ -diff --git a/exp-bbv/tests/Makefile.in b/exp-bbv/tests/Makefile.in -index 686a369..d36f4ee 100644 ---- a/exp-bbv/tests/Makefile.in -+++ b/exp-bbv/tests/Makefile.in -@@ -594,6 +594,12 @@ AM_CFLAGS_PSO_MIPS64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ - $(AM_CFLAGS_PSO_BASE) - - AM_CCASFLAGS_MIPS64_LINUX = @FLAG_M64@ -g -+AM_FLAG_M3264_LOONGARCH64_LINUX = @FLAG_M64@ -+AM_CFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) -+AM_CFLAGS_PSO_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ -+ $(AM_CFLAGS_PSO_BASE) -+ -+AM_CCASFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ -g - AM_FLAG_M3264_X86_SOLARIS = @FLAG_M32@ - AM_CFLAGS_X86_SOLARIS = @FLAG_M32@ @PREFERRED_STACK_BOUNDARY_2@ \ - $(AM_CFLAGS_BASE) -fomit-frame-pointer @SOLARIS_UNDEF_LARGESOURCE@ -@@ -641,6 +647,7 @@ PRELOAD_LDFLAGS_S390X_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ - PRELOAD_LDFLAGS_MIPS32_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ - PRELOAD_LDFLAGS_NANOMIPS_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ - PRELOAD_LDFLAGS_MIPS64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ -+PRELOAD_LDFLAGS_LOONGARCH64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ - PRELOAD_LDFLAGS_X86_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M32@ - PRELOAD_LDFLAGS_AMD64_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M64@ - AM_CPPFLAGS = -I$(top_srcdir) -I$(top_srcdir)/include \ -diff --git a/exp-bbv/tests/amd64-linux/Makefile.in b/exp-bbv/tests/amd64-linux/Makefile.in -index f9a6cc7..a5e711a 100644 ---- a/exp-bbv/tests/amd64-linux/Makefile.in -+++ b/exp-bbv/tests/amd64-linux/Makefile.in -@@ -615,6 +615,12 @@ AM_CFLAGS_PSO_MIPS64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ - $(AM_CFLAGS_PSO_BASE) - - AM_CCASFLAGS_MIPS64_LINUX = @FLAG_M64@ -g -+AM_FLAG_M3264_LOONGARCH64_LINUX = @FLAG_M64@ -+AM_CFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) -+AM_CFLAGS_PSO_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ -+ $(AM_CFLAGS_PSO_BASE) -+ -+AM_CCASFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ -g - AM_FLAG_M3264_X86_SOLARIS = @FLAG_M32@ - AM_CFLAGS_X86_SOLARIS = @FLAG_M32@ @PREFERRED_STACK_BOUNDARY_2@ \ - $(AM_CFLAGS_BASE) -fomit-frame-pointer @SOLARIS_UNDEF_LARGESOURCE@ -@@ -662,6 +668,7 @@ PRELOAD_LDFLAGS_S390X_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ - PRELOAD_LDFLAGS_MIPS32_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ - PRELOAD_LDFLAGS_NANOMIPS_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ - PRELOAD_LDFLAGS_MIPS64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ -+PRELOAD_LDFLAGS_LOONGARCH64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ - PRELOAD_LDFLAGS_X86_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M32@ - PRELOAD_LDFLAGS_AMD64_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M64@ - AM_CPPFLAGS = -I$(top_srcdir) -I$(top_srcdir)/include \ -diff --git a/exp-bbv/tests/arm-linux/Makefile.in b/exp-bbv/tests/arm-linux/Makefile.in -index 911a02c..a8886b9 100644 ---- a/exp-bbv/tests/arm-linux/Makefile.in -+++ b/exp-bbv/tests/arm-linux/Makefile.in -@@ -575,6 +575,12 @@ AM_CFLAGS_PSO_MIPS64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ - $(AM_CFLAGS_PSO_BASE) - - AM_CCASFLAGS_MIPS64_LINUX = @FLAG_M64@ -g -+AM_FLAG_M3264_LOONGARCH64_LINUX = @FLAG_M64@ -+AM_CFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) -+AM_CFLAGS_PSO_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ -+ $(AM_CFLAGS_PSO_BASE) -+ -+AM_CCASFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ -g - AM_FLAG_M3264_X86_SOLARIS = @FLAG_M32@ - AM_CFLAGS_X86_SOLARIS = @FLAG_M32@ @PREFERRED_STACK_BOUNDARY_2@ \ - $(AM_CFLAGS_BASE) -fomit-frame-pointer @SOLARIS_UNDEF_LARGESOURCE@ -@@ -622,6 +628,7 @@ PRELOAD_LDFLAGS_S390X_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ - PRELOAD_LDFLAGS_MIPS32_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ - PRELOAD_LDFLAGS_NANOMIPS_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ - PRELOAD_LDFLAGS_MIPS64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ -+PRELOAD_LDFLAGS_LOONGARCH64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ - PRELOAD_LDFLAGS_X86_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M32@ - PRELOAD_LDFLAGS_AMD64_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M64@ - AM_CPPFLAGS = -I$(top_srcdir) -I$(top_srcdir)/include \ -diff --git a/exp-bbv/tests/ppc32-linux/Makefile.in b/exp-bbv/tests/ppc32-linux/Makefile.in -index f5bd96b..7d6107c 100644 ---- a/exp-bbv/tests/ppc32-linux/Makefile.in -+++ b/exp-bbv/tests/ppc32-linux/Makefile.in -@@ -575,6 +575,12 @@ AM_CFLAGS_PSO_MIPS64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ - $(AM_CFLAGS_PSO_BASE) - - AM_CCASFLAGS_MIPS64_LINUX = @FLAG_M64@ -g -+AM_FLAG_M3264_LOONGARCH64_LINUX = @FLAG_M64@ -+AM_CFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) -+AM_CFLAGS_PSO_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ -+ $(AM_CFLAGS_PSO_BASE) -+ -+AM_CCASFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ -g - AM_FLAG_M3264_X86_SOLARIS = @FLAG_M32@ - AM_CFLAGS_X86_SOLARIS = @FLAG_M32@ @PREFERRED_STACK_BOUNDARY_2@ \ - $(AM_CFLAGS_BASE) -fomit-frame-pointer @SOLARIS_UNDEF_LARGESOURCE@ -@@ -622,6 +628,7 @@ PRELOAD_LDFLAGS_S390X_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ - PRELOAD_LDFLAGS_MIPS32_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ - PRELOAD_LDFLAGS_NANOMIPS_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ - PRELOAD_LDFLAGS_MIPS64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ -+PRELOAD_LDFLAGS_LOONGARCH64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ - PRELOAD_LDFLAGS_X86_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M32@ - PRELOAD_LDFLAGS_AMD64_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M64@ - AM_CPPFLAGS = -I$(top_srcdir) -I$(top_srcdir)/include \ -diff --git a/exp-bbv/tests/x86-linux/Makefile.in b/exp-bbv/tests/x86-linux/Makefile.in -index ee3baa5..702f33f 100644 ---- a/exp-bbv/tests/x86-linux/Makefile.in -+++ b/exp-bbv/tests/x86-linux/Makefile.in -@@ -575,6 +575,12 @@ AM_CFLAGS_PSO_MIPS64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ - $(AM_CFLAGS_PSO_BASE) - - AM_CCASFLAGS_MIPS64_LINUX = @FLAG_M64@ -g -+AM_FLAG_M3264_LOONGARCH64_LINUX = @FLAG_M64@ -+AM_CFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) -+AM_CFLAGS_PSO_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ -+ $(AM_CFLAGS_PSO_BASE) -+ -+AM_CCASFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ -g - AM_FLAG_M3264_X86_SOLARIS = @FLAG_M32@ - AM_CFLAGS_X86_SOLARIS = @FLAG_M32@ @PREFERRED_STACK_BOUNDARY_2@ \ - $(AM_CFLAGS_BASE) -fomit-frame-pointer @SOLARIS_UNDEF_LARGESOURCE@ -@@ -622,6 +628,7 @@ PRELOAD_LDFLAGS_S390X_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ - PRELOAD_LDFLAGS_MIPS32_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ - PRELOAD_LDFLAGS_NANOMIPS_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ - PRELOAD_LDFLAGS_MIPS64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ -+PRELOAD_LDFLAGS_LOONGARCH64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ - PRELOAD_LDFLAGS_X86_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M32@ - PRELOAD_LDFLAGS_AMD64_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M64@ - AM_CPPFLAGS = -I$(top_srcdir) -I$(top_srcdir)/include \ -diff --git a/exp-bbv/tests/x86/Makefile.in b/exp-bbv/tests/x86/Makefile.in -index b1557c3..dbecbe3 100644 ---- a/exp-bbv/tests/x86/Makefile.in -+++ b/exp-bbv/tests/x86/Makefile.in -@@ -586,6 +586,12 @@ AM_CFLAGS_PSO_MIPS64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ - $(AM_CFLAGS_PSO_BASE) - - AM_CCASFLAGS_MIPS64_LINUX = @FLAG_M64@ -g -+AM_FLAG_M3264_LOONGARCH64_LINUX = @FLAG_M64@ -+AM_CFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) -+AM_CFLAGS_PSO_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ -+ $(AM_CFLAGS_PSO_BASE) -+ -+AM_CCASFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ -g - AM_FLAG_M3264_X86_SOLARIS = @FLAG_M32@ - AM_CFLAGS_X86_SOLARIS = @FLAG_M32@ @PREFERRED_STACK_BOUNDARY_2@ \ - $(AM_CFLAGS_BASE) -fomit-frame-pointer @SOLARIS_UNDEF_LARGESOURCE@ -@@ -633,6 +639,7 @@ PRELOAD_LDFLAGS_S390X_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ - PRELOAD_LDFLAGS_MIPS32_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ - PRELOAD_LDFLAGS_NANOMIPS_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ - PRELOAD_LDFLAGS_MIPS64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ -+PRELOAD_LDFLAGS_LOONGARCH64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ - PRELOAD_LDFLAGS_X86_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M32@ - PRELOAD_LDFLAGS_AMD64_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M64@ - AM_CPPFLAGS = -I$(top_srcdir) -I$(top_srcdir)/include \ diff --git a/gdbserver_tests/Makefile.am b/gdbserver_tests/Makefile.am -index fbcb659..30e17c0 100755 +index 6b73a24e9473..55cbd9ea0323 100755 --- a/gdbserver_tests/Makefile.am +++ b/gdbserver_tests/Makefile.am -@@ -15,6 +15,7 @@ dist_noinst_SCRIPTS = \ - filter_gdb filter_make_empty \ - filter_memcheck_monitor filter_stderr filter_vgdb \ - filter_helgrind_monitor filter_helgrind_monitor_solaris \ -+ filter_helgrind_monitor_loongarch64 \ - filter_passsigalrm \ - send_signal - -diff --git a/gdbserver_tests/Makefile.in b/gdbserver_tests/Makefile.in -index 712e8b2..7c9a353 100644 ---- a/gdbserver_tests/Makefile.in -+++ b/gdbserver_tests/Makefile.in -@@ -664,6 +664,12 @@ AM_CFLAGS_PSO_MIPS64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ - $(AM_CFLAGS_PSO_BASE) - - AM_CCASFLAGS_MIPS64_LINUX = @FLAG_M64@ -g -+AM_FLAG_M3264_LOONGARCH64_LINUX = @FLAG_M64@ -+AM_CFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) -+AM_CFLAGS_PSO_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ -+ $(AM_CFLAGS_PSO_BASE) -+ -+AM_CCASFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ -g - AM_FLAG_M3264_X86_SOLARIS = @FLAG_M32@ - AM_CFLAGS_X86_SOLARIS = @FLAG_M32@ @PREFERRED_STACK_BOUNDARY_2@ \ - $(AM_CFLAGS_BASE) -fomit-frame-pointer @SOLARIS_UNDEF_LARGESOURCE@ -@@ -711,6 +717,7 @@ PRELOAD_LDFLAGS_S390X_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ - PRELOAD_LDFLAGS_MIPS32_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ - PRELOAD_LDFLAGS_NANOMIPS_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ - PRELOAD_LDFLAGS_MIPS64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ -+PRELOAD_LDFLAGS_LOONGARCH64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ - PRELOAD_LDFLAGS_X86_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M32@ - PRELOAD_LDFLAGS_AMD64_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M64@ - AM_CPPFLAGS = -I$(top_srcdir) -I$(top_srcdir)/include \ -@@ -740,6 +747,7 @@ dist_noinst_SCRIPTS = \ - filter_gdb filter_make_empty \ - filter_memcheck_monitor filter_stderr filter_vgdb \ - filter_helgrind_monitor filter_helgrind_monitor_solaris \ +@@ -16,6 +16,7 @@ dist_noinst_SCRIPTS = \ + filter_make_empty \ + filter_helgrind_monitor \ + filter_helgrind_monitor_solaris \ + filter_helgrind_monitor_loongarch64 \ filter_passsigalrm \ send_signal diff --git a/gdbserver_tests/filter_helgrind_monitor b/gdbserver_tests/filter_helgrind_monitor -index 4fc2e9a..21bf6be 100755 +index 4fc2e9af632f..21bf6be141ac 100755 --- a/gdbserver_tests/filter_helgrind_monitor +++ b/gdbserver_tests/filter_helgrind_monitor @@ -14,6 +14,8 @@ if $dir/../tests/os_test solaris; then @@ -30203,7 +29760,7 @@ index 4fc2e9a..21bf6be 100755 fi | diff --git a/gdbserver_tests/filter_helgrind_monitor_loongarch64 b/gdbserver_tests/filter_helgrind_monitor_loongarch64 new file mode 100755 -index 0000000..cda73e4 +index 000000000000..cda73e4c2541 --- /dev/null +++ b/gdbserver_tests/filter_helgrind_monitor_loongarch64 @@ -0,0 +1,43 @@ @@ -30250,94 +29807,11 @@ index 0000000..cda73e4 +} + +exit 0; -diff --git a/gdbserver_tests/solaris/Makefile.in b/gdbserver_tests/solaris/Makefile.in -index 374e279..341f7bf 100644 ---- a/gdbserver_tests/solaris/Makefile.in -+++ b/gdbserver_tests/solaris/Makefile.in -@@ -529,6 +529,12 @@ AM_CFLAGS_PSO_MIPS64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ - $(AM_CFLAGS_PSO_BASE) - - AM_CCASFLAGS_MIPS64_LINUX = @FLAG_M64@ -g -+AM_FLAG_M3264_LOONGARCH64_LINUX = @FLAG_M64@ -+AM_CFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) -+AM_CFLAGS_PSO_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ -+ $(AM_CFLAGS_PSO_BASE) -+ -+AM_CCASFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ -g - AM_FLAG_M3264_X86_SOLARIS = @FLAG_M32@ - AM_CFLAGS_X86_SOLARIS = @FLAG_M32@ @PREFERRED_STACK_BOUNDARY_2@ \ - $(AM_CFLAGS_BASE) -fomit-frame-pointer @SOLARIS_UNDEF_LARGESOURCE@ -@@ -576,6 +582,7 @@ PRELOAD_LDFLAGS_S390X_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ - PRELOAD_LDFLAGS_MIPS32_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ - PRELOAD_LDFLAGS_NANOMIPS_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ - PRELOAD_LDFLAGS_MIPS64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ -+PRELOAD_LDFLAGS_LOONGARCH64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ - PRELOAD_LDFLAGS_X86_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M32@ - PRELOAD_LDFLAGS_AMD64_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M64@ - AM_CPPFLAGS = -I$(top_srcdir) -I$(top_srcdir)/include \ -diff --git a/helgrind/Makefile.in b/helgrind/Makefile.in -index bd6cfdb..a85320e 100644 ---- a/helgrind/Makefile.in -+++ b/helgrind/Makefile.in -@@ -709,6 +709,12 @@ AM_CFLAGS_PSO_MIPS64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ - $(AM_CFLAGS_PSO_BASE) - - AM_CCASFLAGS_MIPS64_LINUX = @FLAG_M64@ -g -+AM_FLAG_M3264_LOONGARCH64_LINUX = @FLAG_M64@ -+AM_CFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) -+AM_CFLAGS_PSO_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ -+ $(AM_CFLAGS_PSO_BASE) -+ -+AM_CCASFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ -g - AM_FLAG_M3264_X86_SOLARIS = @FLAG_M32@ - AM_CFLAGS_X86_SOLARIS = @FLAG_M32@ @PREFERRED_STACK_BOUNDARY_2@ \ - $(AM_CFLAGS_BASE) -fomit-frame-pointer @SOLARIS_UNDEF_LARGESOURCE@ -@@ -756,6 +762,7 @@ PRELOAD_LDFLAGS_S390X_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ - PRELOAD_LDFLAGS_MIPS32_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ - PRELOAD_LDFLAGS_NANOMIPS_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ - PRELOAD_LDFLAGS_MIPS64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ -+PRELOAD_LDFLAGS_LOONGARCH64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ - PRELOAD_LDFLAGS_X86_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M32@ - PRELOAD_LDFLAGS_AMD64_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M64@ - -@@ -846,6 +853,10 @@ TOOL_LDFLAGS_MIPS64_LINUX = \ - -static -nodefaultlibs -nostartfiles -u __start @FLAG_NO_BUILD_ID@ \ - @FLAG_M64@ - -+TOOL_LDFLAGS_LOONGARCH64_LINUX = \ -+ -static -nodefaultlibs -nostartfiles -u __start @FLAG_NO_BUILD_ID@ \ -+ @FLAG_M64@ -+ - TOOL_LDFLAGS_X86_SOLARIS = \ - $(TOOL_LDFLAGS_COMMON_SOLARIS) @FLAG_M32@ - -@@ -906,6 +917,9 @@ LIBREPLACEMALLOC_MIPS32_LINUX = \ - LIBREPLACEMALLOC_MIPS64_LINUX = \ - $(top_builddir)/coregrind/libreplacemalloc_toolpreload-mips64-linux.a - -+LIBREPLACEMALLOC_LOONGARCH64_LINUX = \ -+ $(top_builddir)/coregrind/libreplacemalloc_toolpreload-loongarch64-linux.a -+ - LIBREPLACEMALLOC_X86_SOLARIS = \ - $(top_builddir)/coregrind/libreplacemalloc_toolpreload-x86-solaris.a - -@@ -978,6 +992,11 @@ LIBREPLACEMALLOC_LDFLAGS_MIPS64_LINUX = \ - $(LIBREPLACEMALLOC_MIPS64_LINUX) \ - -Wl,--no-whole-archive - -+LIBREPLACEMALLOC_LDFLAGS_LOONGARCH64_LINUX = \ -+ -Wl,--whole-archive \ -+ $(LIBREPLACEMALLOC_LOONGARCH64_LINUX) \ -+ -Wl,--no-whole-archive -+ - LIBREPLACEMALLOC_LDFLAGS_X86_SOLARIS = \ - -Wl,--whole-archive \ - $(LIBREPLACEMALLOC_X86_SOLARIS) \ diff --git a/helgrind/hg_main.c b/helgrind/hg_main.c -index 3146cc4..ee80472 100644 +index 135c4d3b9896..c6cf17766a80 100644 --- a/helgrind/hg_main.c +++ b/helgrind/hg_main.c -@@ -4870,6 +4870,7 @@ IRSB* hg_instrument ( VgCallbackClosure* closure, +@@ -4878,6 +4878,7 @@ IRSB* hg_instrument ( VgCallbackClosure* closure, switch (st->Ist.MBE.event) { case Imbe_Fence: case Imbe_CancelReservation: @@ -30345,36 +29819,11 @@ index 3146cc4..ee80472 100644 break; /* not interesting */ default: goto unhandled; -diff --git a/helgrind/tests/Makefile.in b/helgrind/tests/Makefile.in -index 8f23215..e011962 100644 ---- a/helgrind/tests/Makefile.in -+++ b/helgrind/tests/Makefile.in -@@ -920,6 +920,12 @@ AM_CFLAGS_PSO_MIPS64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ - $(AM_CFLAGS_PSO_BASE) - - AM_CCASFLAGS_MIPS64_LINUX = @FLAG_M64@ -g -+AM_FLAG_M3264_LOONGARCH64_LINUX = @FLAG_M64@ -+AM_CFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) -+AM_CFLAGS_PSO_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ -+ $(AM_CFLAGS_PSO_BASE) -+ -+AM_CCASFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ -g - AM_FLAG_M3264_X86_SOLARIS = @FLAG_M32@ - AM_CFLAGS_X86_SOLARIS = @FLAG_M32@ @PREFERRED_STACK_BOUNDARY_2@ \ - $(AM_CFLAGS_BASE) -fomit-frame-pointer @SOLARIS_UNDEF_LARGESOURCE@ -@@ -967,6 +973,7 @@ PRELOAD_LDFLAGS_S390X_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ - PRELOAD_LDFLAGS_MIPS32_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ - PRELOAD_LDFLAGS_NANOMIPS_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ - PRELOAD_LDFLAGS_MIPS64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ -+PRELOAD_LDFLAGS_LOONGARCH64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ - PRELOAD_LDFLAGS_X86_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M32@ - PRELOAD_LDFLAGS_AMD64_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M64@ - AM_CPPFLAGS = -I$(top_srcdir) -I$(top_srcdir)/include \ diff --git a/helgrind/tests/annotate_hbefore.c b/helgrind/tests/annotate_hbefore.c -index 259d3b6..3200c6c 100644 +index 52dce3e76e84..765d70699c91 100644 --- a/helgrind/tests/annotate_hbefore.c +++ b/helgrind/tests/annotate_hbefore.c -@@ -314,6 +314,36 @@ UWord do_acasW ( UWord* addr, UWord expected, UWord nyu ) +@@ -344,6 +344,36 @@ UWord do_acasW ( UWord* addr, UWord expected, UWord nyu ) return success; } @@ -30412,29 +29861,29 @@ index 259d3b6..3200c6c 100644 void atomic_incW ( UWord* w ) diff --git a/helgrind/tests/tc07_hbl1.c b/helgrind/tests/tc07_hbl1.c -index 54297de..246d13c 100644 +index ee0564d20dcc..7fee662446a7 100644 --- a/helgrind/tests/tc07_hbl1.c +++ b/helgrind/tests/tc07_hbl1.c -@@ -18,6 +18,7 @@ - #undef PLAT_arm64_linux +@@ -20,6 +20,7 @@ #undef PLAT_s390x_linux #undef PLAT_mips32_linux + #undef PLAT_riscv64_linux +#undef PLAT_loongarch64_linux #undef PLAT_x86_solaris #undef PLAT_amd64_solaris -@@ -47,6 +48,8 @@ - # define PLAT_mips32_linux 1 - #elif defined(__linux__) && defined(__nanomips__) +@@ -53,6 +54,8 @@ # define PLAT_nanomips_linux 1 + #elif defined(__linux__) && defined(__riscv) && (__riscv_xlen == 64) + # define PLAT_riscv64_linux 1 +#elif defined(__linux__) && defined(__loongarch__) && (__loongarch_grlen == 64) +# define PLAT_loongarch64_linux 1 #elif defined(__sun__) && defined(__i386__) # define PLAT_x86_solaris 1 #elif defined(__sun__) && defined(__x86_64__) -@@ -131,6 +134,20 @@ - : /*out*/ : /*in*/ "r"(&(_lval)) \ - : /*trash*/ "$t0", "$t1", "memory" \ +@@ -144,6 +147,20 @@ + : /*out*/ : /*in*/ "r"(&(_lval)), "r"(1) \ + : /*trash*/ "memory" \ ) +#elif defined(PLAT_loongarch64_linux) +# define INC(_lval,_lqual) \ @@ -30454,29 +29903,29 @@ index 54297de..246d13c 100644 # error "Fix Me for this platform" #endif diff --git a/helgrind/tests/tc08_hbl2.c b/helgrind/tests/tc08_hbl2.c -index c3a2ec7..8683168 100644 +index be2b78b01cb6..b9233bf70aea 100644 --- a/helgrind/tests/tc08_hbl2.c +++ b/helgrind/tests/tc08_hbl2.c -@@ -35,6 +35,7 @@ - #undef PLAT_s390x_linux +@@ -37,6 +37,7 @@ #undef PLAT_mips32_linux #undef PLAT_mips64_linux + #undef PLAT_riscv64_linux +#undef PLAT_loongarch64_linux #undef PLAT_x86_solaris #undef PLAT_amd64_solaris -@@ -68,6 +69,8 @@ - #endif - #elif defined(__linux__) && defined(__nanomips__) +@@ -74,6 +75,8 @@ # define PLAT_nanomips_linux 1 + #elif defined(__linux__) && defined(__riscv) && (__riscv_xlen == 64) + # define PLAT_riscv64_linux 1 +#elif defined(__linux__) && defined(__loongarch__) && (__loongarch_grlen == 64) +# define PLAT_loongarch64_linux 1 #elif defined(__sun__) && defined(__i386__) # define PLAT_x86_solaris 1 #elif defined(__sun__) && defined(__x86_64__) -@@ -151,6 +154,20 @@ - : /*out*/ : /*in*/ "r"(&(_lval)) \ - : /*trash*/ "$t0", "$t1", "memory" \ +@@ -164,6 +167,20 @@ + : /*out*/ : /*in*/ "r"(&(_lval)), "r"(1) \ + : /*trash*/ "memory" \ ) +#elif defined(PLAT_loongarch64_linux) +# define INC(_lval,_lqual) \ @@ -30496,27 +29945,27 @@ index c3a2ec7..8683168 100644 # error "Fix Me for this platform" #endif diff --git a/helgrind/tests/tc11_XCHG.c b/helgrind/tests/tc11_XCHG.c -index 08e34a0..64b3d2b 100644 +index e92b671b7e44..5bfa35062867 100644 --- a/helgrind/tests/tc11_XCHG.c +++ b/helgrind/tests/tc11_XCHG.c -@@ -20,6 +20,7 @@ - #undef PLAT_arm_linux +@@ -22,6 +22,7 @@ #undef PLAT_s390x_linux #undef PLAT_mips32_linux + #undef PLAT_riscv64_linux +#undef PLAT_loongarch64_linux #undef PLAT_x86_solaris #undef PLAT_amd64_solaris -@@ -49,6 +50,8 @@ - # define PLAT_mips32_linux 1 - #elif defined(__linux__) && defined(__nanomips__) +@@ -55,6 +56,8 @@ # define PLAT_nanomips_linux 1 + #elif defined(__linux__) && defined(__riscv) && (__riscv_xlen == 64) + # define PLAT_riscv64_linux 1 +#elif defined(__linux__) && defined(__loongarch__) && (__loongarch_grlen == 64) +# define PLAT_loongarch64_linux 1 #elif defined(__sun__) && defined(__i386__) # define PLAT_x86_solaris 1 #elif defined(__sun__) && defined(__x86_64__) -@@ -146,6 +149,21 @@ +@@ -154,6 +157,21 @@ # define XCHG_M_R_with_redundant_LOCK(_addr,_lval) \ XCHG_M_R(_addr,_lval) @@ -30539,93 +29988,63 @@ index 08e34a0..64b3d2b 100644 # error "Unsupported architecture" diff --git a/include/Makefile.am b/include/Makefile.am -index 972d394..abfa2c9 100644 +index 3995d6de5714..560052ba644f 100644 --- a/include/Makefile.am +++ b/include/Makefile.am -@@ -63,6 +63,7 @@ nobase_pkginclude_HEADERS = \ - vki/vki-posixtypes-mips32-linux.h \ - vki/vki-posixtypes-mips64-linux.h \ - vki/vki-posixtypes-nanomips-linux.h \ -+ vki/vki-posixtypes-loongarch64-linux.h \ - vki/vki-amd64-linux.h \ - vki/vki-arm64-linux.h \ - vki/vki-ppc32-linux.h \ -@@ -75,6 +76,7 @@ nobase_pkginclude_HEADERS = \ - vki/vki-mips32-linux.h \ - vki/vki-mips64-linux.h \ - vki/vki-nanomips-linux.h \ -+ vki/vki-loongarch64-linux.h \ - vki/vki-scnums-amd64-linux.h \ - vki/vki-scnums-arm64-linux.h \ - vki/vki-scnums-ppc32-linux.h \ -@@ -86,6 +88,7 @@ nobase_pkginclude_HEADERS = \ - vki/vki-scnums-mips32-linux.h \ - vki/vki-scnums-mips64-linux.h \ - vki/vki-scnums-nanomips-linux.h \ -+ vki/vki-scnums-loongarch64-linux.h \ - vki/vki-scnums-darwin.h \ - vki/vki-scnums-solaris.h \ - vki/vki-scnums-shared-linux.h \ -diff --git a/include/Makefile.in b/include/Makefile.in -index e292939..0653f8f 100644 ---- a/include/Makefile.in -+++ b/include/Makefile.in -@@ -449,6 +449,7 @@ nobase_pkginclude_HEADERS = \ - vki/vki-posixtypes-mips32-linux.h \ +@@ -65,6 +65,7 @@ nobase_pkginclude_HEADERS = \ vki/vki-posixtypes-mips64-linux.h \ vki/vki-posixtypes-nanomips-linux.h \ + vki/vki-posixtypes-riscv64-linux.h \ + vki/vki-posixtypes-loongarch64-linux.h \ vki/vki-amd64-linux.h \ vki/vki-arm64-linux.h \ vki/vki-ppc32-linux.h \ -@@ -461,6 +462,7 @@ nobase_pkginclude_HEADERS = \ - vki/vki-mips32-linux.h \ +@@ -79,6 +80,7 @@ nobase_pkginclude_HEADERS = \ vki/vki-mips64-linux.h \ vki/vki-nanomips-linux.h \ + vki/vki-riscv64-linux.h \ + vki/vki-loongarch64-linux.h \ vki/vki-scnums-amd64-linux.h \ vki/vki-scnums-arm64-linux.h \ vki/vki-scnums-ppc32-linux.h \ -@@ -472,6 +474,7 @@ nobase_pkginclude_HEADERS = \ - vki/vki-scnums-mips32-linux.h \ +@@ -91,6 +93,7 @@ nobase_pkginclude_HEADERS = \ vki/vki-scnums-mips64-linux.h \ vki/vki-scnums-nanomips-linux.h \ + vki/vki-scnums-riscv64-linux.h \ + vki/vki-scnums-loongarch64-linux.h \ vki/vki-scnums-darwin.h \ vki/vki-scnums-solaris.h \ vki/vki-scnums-shared-linux.h \ diff --git a/include/pub_tool_basics.h b/include/pub_tool_basics.h -index bf5a5ba..da90ea7 100644 +index 155454bff4a5..66690b35ea6b 100644 --- a/include/pub_tool_basics.h +++ b/include/pub_tool_basics.h -@@ -437,7 +437,8 @@ static inline Bool sr_EQ ( UInt sysno, SysRes sr1, SysRes sr2 ) { - +@@ -438,7 +438,7 @@ static inline Bool sr_EQ ( UInt sysno, SysRes sr1, SysRes sr2 ) { #if defined(VGA_x86) || defined(VGA_amd64) || defined (VGA_arm) \ || ((defined(VGA_mips32) || defined(VGA_mips64) || defined(VGA_nanomips)) \ -- && defined (_MIPSEL)) || defined(VGA_arm64) || defined(VGA_ppc64le) -+ && defined (_MIPSEL)) || defined(VGA_arm64) || defined(VGA_ppc64le) \ -+ || defined (VGA_loongarch64) + && defined (_MIPSEL)) || defined(VGA_arm64) || defined(VGA_ppc64le) \ +- || defined(VGA_riscv64) ++ || defined(VGA_riscv64) || defined (VGA_loongarch64) # define VG_LITTLEENDIAN 1 #elif defined(VGA_ppc32) || defined(VGA_ppc64be) || defined(VGA_s390x) \ || ((defined(VGA_mips32) || defined(VGA_mips64) || defined(VGA_nanomips)) \ -@@ -485,7 +486,8 @@ static inline Bool sr_EQ ( UInt sysno, SysRes sr1, SysRes sr2 ) { - || defined(VGA_ppc64be) || defined(VGA_ppc64le) \ +@@ -487,7 +487,7 @@ static inline Bool sr_EQ ( UInt sysno, SysRes sr1, SysRes sr2 ) { || defined(VGA_arm) || defined(VGA_s390x) \ || defined(VGA_mips32) || defined(VGA_mips64) \ -- || defined(VGA_arm64) || defined(VGA_nanomips) -+ || defined(VGA_arm64) || defined(VGA_nanomips) \ -+ || defined(VGA_loongarch64) + || defined(VGA_arm64) || defined(VGA_nanomips) \ +- || defined(VGA_riscv64) ++ || defined(VGA_riscv64) || defined(VGA_loongarch64) # define VG_REGPARM(n) /* */ #else # error Unknown arch diff --git a/include/pub_tool_guest.h b/include/pub_tool_guest.h -index 08a72ef..87e8cc2 100644 +index 9e5c0c24a339..758dcf60c5a0 100644 --- a/include/pub_tool_guest.h +++ b/include/pub_tool_guest.h -@@ -62,6 +62,9 @@ - #elif defined(VGA_mips64) - # include "libvex_guest_mips64.h" - typedef VexGuestMIPS64State VexGuestArchState; +@@ -65,6 +65,9 @@ + #elif defined(VGA_riscv64) + # include "libvex_guest_riscv64.h" + typedef VexGuestRISCV64State VexGuestArchState; +#elif defined(VGA_loongarch64) +# include "libvex_guest_loongarch64.h" + typedef VexGuestLOONGARCH64State VexGuestArchState; @@ -30633,12 +30052,12 @@ index 08a72ef..87e8cc2 100644 # error Unknown arch #endif diff --git a/include/pub_tool_libcsetjmp.h b/include/pub_tool_libcsetjmp.h -index a3a386f..69bed7c 100644 +index 1a52715696c9..c136d2f654ac 100644 --- a/include/pub_tool_libcsetjmp.h +++ b/include/pub_tool_libcsetjmp.h -@@ -134,6 +134,14 @@ UWord VG_MINIMAL_SETJMP(VG_MINIMAL_JMP_BUF(_env)); +@@ -142,6 +142,14 @@ UWord VG_MINIMAL_SETJMP(VG_MINIMAL_JMP_BUF(_env)); __attribute__((noreturn)) - void VG_MINIMAL_LONGJMP(VG_MINIMAL_JMP_BUF(_env)); + void VG_MINIMAL_LONGJMP(VG_MINIMAL_JMP_BUF(_env)); +#elif defined(VGP_loongarch64_linux) + @@ -30648,14 +30067,14 @@ index a3a386f..69bed7c 100644 +__attribute__((noreturn)) +void VG_MINIMAL_LONGJMP(VG_MINIMAL_JMP_BUF(_env)); + - #else + #elif defined(VGP_arm64_freebsd) - /* The default implementation. */ + #define VG_MINIMAL_JMP_BUF(_name) UWord _name [22] diff --git a/include/pub_tool_machine.h b/include/pub_tool_machine.h -index 9bdd4f5..12377f9 100644 +index 933dc8e12a7a..2c2a753315c9 100644 --- a/include/pub_tool_machine.h +++ b/include/pub_tool_machine.h -@@ -108,6 +108,12 @@ +@@ -114,6 +114,12 @@ # define VG_CLREQ_SZB 20 # define VG_STACK_REDZONE_SZB 0 @@ -30669,12 +30088,12 @@ index 9bdd4f5..12377f9 100644 # error Unknown platform #endif diff --git a/include/pub_tool_redir.h b/include/pub_tool_redir.h -index f88d3b5..d1bb8cb 100644 +index 788db2129318..bbcc8a297adf 100644 --- a/include/pub_tool_redir.h +++ b/include/pub_tool_redir.h -@@ -321,6 +321,8 @@ +@@ -323,6 +323,8 @@ - #define VG_U_LD_LINUX_MIPSN8_S0_1 "ld-linux-mipsn8.so.1" + #define VG_U_LD_LINUX_RISCV64_SO_1 "ld-linux-riscv64-lp64d.so.1" +#define VG_U_LD_LINUX_LOONGARCH_LP64D_SO_1 "ld-linux-loongarch-lp64d.so.1" + @@ -30682,613 +30101,47 @@ index f88d3b5..d1bb8cb 100644 /* --- Sonames for FreeBSD ELF linkers, plus unencoded versions. --- */ diff --git a/include/pub_tool_vkiscnums_asm.h b/include/pub_tool_vkiscnums_asm.h -index 14b483c..b2222aa 100644 +index e7aa8797629f..e4ee41731722 100644 --- a/include/pub_tool_vkiscnums_asm.h +++ b/include/pub_tool_vkiscnums_asm.h -@@ -74,6 +74,10 @@ +@@ -76,6 +76,10 @@ # include "vki/vki-scnums-shared-linux.h" - # include "vki/vki-scnums-mips64-linux.h" + # include "vki/vki-scnums-riscv64-linux.h" +#elif defined(VGP_loongarch64_linux) +# include "vki/vki-scnums-shared-linux.h" +# include "vki/vki-scnums-loongarch64-linux.h" + - #elif defined(VGP_x86_freebsd) || defined(VGP_amd64_freebsd) + #elif defined(VGP_x86_freebsd) || defined(VGP_amd64_freebsd) || defined(VGP_arm64_freebsd) # include "vki/vki-scnums-freebsd.h" -diff --git a/include/valgrind.h b/include/valgrind.h -index bd63d55..ce89195 100644 ---- a/include/valgrind.h -+++ b/include/valgrind.h -@@ -125,6 +125,7 @@ - #undef PLAT_mips32_linux - #undef PLAT_mips64_linux - #undef PLAT_nanomips_linux -+#undef PLAT_loongarch64_linux - #undef PLAT_x86_solaris - #undef PLAT_amd64_solaris - -@@ -169,6 +170,8 @@ - # define PLAT_mips32_linux 1 - #elif defined(__linux__) && defined(__nanomips__) - # define PLAT_nanomips_linux 1 -+#elif defined(__linux__) && defined(__loongarch__) && (__loongarch_grlen == 64) -+# define PLAT_loongarch64_linux 1 - #elif defined(__sun) && defined(__i386__) - # define PLAT_x86_solaris 1 - #elif defined(__sun) && defined(__x86_64__) -@@ -1125,7 +1128,75 @@ typedef - ); \ - } while (0) - --#endif -+#endif /* PLAT_nanomips_linux */ -+ -+/* --------------------- loongarch64-linux --------------------- */ -+#if defined(PLAT_loongarch64_linux) -+ -+typedef -+ struct { -+ unsigned long nraddr; /* where's the code? */ -+ } -+ OrigFn; -+ -+#define __SPECIAL_INSTRUCTION_PREAMBLE \ -+ "srli.d $zero, $zero, 3 \n\t" \ -+ "srli.d $zero, $zero, 13 \n\t" \ -+ "srli.d $zero, $zero, 29 \n\t" \ -+ "srli.d $zero, $zero, 19 \n\t" -+ -+#define VALGRIND_DO_CLIENT_REQUEST_EXPR( \ -+ _zzq_default, _zzq_request, \ -+ _zzq_arg1, _zzq_arg2, _zzq_arg3, _zzq_arg4, _zzq_arg5) \ -+ __extension__ \ -+ ({ \ -+ volatile unsigned long int _zzq_args[6]; \ -+ volatile unsigned long int _zzq_result; \ -+ _zzq_args[0] = (unsigned long int)(_zzq_request); \ -+ _zzq_args[1] = (unsigned long int)(_zzq_arg1); \ -+ _zzq_args[2] = (unsigned long int)(_zzq_arg2); \ -+ _zzq_args[3] = (unsigned long int)(_zzq_arg3); \ -+ _zzq_args[4] = (unsigned long int)(_zzq_arg4); \ -+ _zzq_args[5] = (unsigned long int)(_zzq_arg5); \ -+ __asm__ volatile("move $a7, %1 \n\t" /*default*/ \ -+ "move $t0, %2 \n\t" /*ptr*/ \ -+ __SPECIAL_INSTRUCTION_PREAMBLE \ -+ /* $a7 = client_request ( $t0 ) */ \ -+ "or $t1, $t1, $t1 \n\t" \ -+ "move %0, $a7 \n\t" /*result*/ \ -+ : "=r" (_zzq_result) \ -+ : "r" (_zzq_default), "r" (&_zzq_args[0]) \ -+ : "$a7", "$t0", "memory"); \ -+ _zzq_result; \ -+ }) -+ -+#define VALGRIND_GET_NR_CONTEXT(_zzq_rlval) \ -+ { \ -+ volatile OrigFn* _zzq_orig = &(_zzq_rlval); \ -+ volatile unsigned long int __addr; \ -+ __asm__ volatile(__SPECIAL_INSTRUCTION_PREAMBLE \ -+ /* $a7 = guest_NRADDR */ \ -+ "or $t2, $t2, $t2 \n\t" \ -+ "move %0, $a7 \n\t" /*result*/ \ -+ : "=r" (__addr) \ -+ : \ -+ : "$a7"); \ -+ _zzq_orig->nraddr = __addr; \ -+ } -+ -+#define VALGRIND_CALL_NOREDIR_T8 \ -+ __SPECIAL_INSTRUCTION_PREAMBLE \ -+ /* call-noredir $t8 */ \ -+ "or $t3, $t3, $t3 \n\t" -+ -+#define VALGRIND_VEX_INJECT_IR() \ -+ do { \ -+ __asm__ volatile(__SPECIAL_INSTRUCTION_PREAMBLE \ -+ "or $t4, $t4, $t4 \n\t" \ -+ ); \ -+ } while (0) -+ -+#endif /* PLAT_loongarch64_linux */ - /* Insert assembly code for other platforms here... */ - - #endif /* NVALGRIND */ -@@ -6603,6 +6674,457 @@ typedef - - #endif /* PLAT_mips64_linux */ - -+/* --------------------- loongarch64-linux --------------------- */ -+ -+#if defined(PLAT_loongarch64_linux) -+ -+/* These regs are trashed by the hidden call. */ -+#define __CALLER_SAVED_REGS \ -+ "$ra", "$a0", "$a1", "$a2", "$a3", "$a4", "$a5", "$a6", "$a7", \ -+ "$t0", "$t1", "$t2", "$t3", "$t4", "$t5", "$t6", "$t7", "$t8", \ -+ "$f0", "$f1", "$f2", "$f3", "$f4", "$f5", "$f6", "$f7", \ -+ "$f8", "$f9", "$f10", "$f11", "$f12", "$f13", "$f14", "$f15", \ -+ "$f16", "$f17", "$f18", "$f19", "$f20", "$f21", "$f22", "$f23" -+ -+/* $s0 is callee-saved, so we can use it to save and restore SP around -+ the hidden call. */ -+#define VALGRIND_ALIGN_STACK \ -+ "move $s0, $sp \n\t" \ -+ "bstrins.d $sp, $zero, 3, 0 \n\t" -+#define VALGRIND_RESTORE_STACK \ -+ "move $sp, $s0 \n\t" -+ -+/* These CALL_FN_ macros assume that on loongarch64-linux, -+ sizeof(unsigned long) == 8. */ -+ -+#define CALL_FN_W_v(lval, orig) \ -+ do { \ -+ volatile OrigFn _orig = (orig); \ -+ volatile unsigned long _argvec[1]; \ -+ volatile unsigned long _res; \ -+ _argvec[0] = (unsigned long)_orig.nraddr; \ -+ __asm__ volatile( \ -+ VALGRIND_ALIGN_STACK \ -+ "ld.d $t8, %1, 0 \n\t" /* target->t8 */ \ -+ VALGRIND_CALL_NOREDIR_T8 \ -+ VALGRIND_RESTORE_STACK \ -+ "move %0, $a0 \n\t" \ -+ : /*out*/ "=r" (_res) \ -+ : /*in*/ "r" (&_argvec[0]) \ -+ : /*trash*/ "memory", __CALLER_SAVED_REGS, "$s0" \ -+ ); \ -+ lval = (__typeof__(lval)) _res; \ -+ } while (0) -+ -+#define CALL_FN_W_W(lval, orig, arg1) \ -+ do { \ -+ volatile OrigFn _orig = (orig); \ -+ volatile unsigned long _argvec[2]; \ -+ volatile unsigned long _res; \ -+ _argvec[0] = (unsigned long)_orig.nraddr; \ -+ _argvec[1] = (unsigned long)(arg1); \ -+ __asm__ volatile( \ -+ VALGRIND_ALIGN_STACK \ -+ "ld.d $a0, %1, 8 \n\t" /* arg1 */ \ -+ "ld.d $t8, %1, 0 \n\t" /* target->t8 */ \ -+ VALGRIND_CALL_NOREDIR_T8 \ -+ VALGRIND_RESTORE_STACK \ -+ "move %0, $a0 \n\t" \ -+ : /*out*/ "=r" (_res) \ -+ : /*in*/ "r" (&_argvec[0]) \ -+ : /*trash*/ "memory", __CALLER_SAVED_REGS, "$s0" \ -+ ); \ -+ lval = (__typeof__(lval)) _res; \ -+ } while (0) -+ -+#define CALL_FN_W_WW(lval, orig, arg1, arg2) \ -+ do { \ -+ volatile OrigFn _orig = (orig); \ -+ volatile unsigned long _argvec[3]; \ -+ volatile unsigned long _res; \ -+ _argvec[0] = (unsigned long)_orig.nraddr; \ -+ _argvec[1] = (unsigned long)(arg1); \ -+ _argvec[2] = (unsigned long)(arg2); \ -+ __asm__ volatile( \ -+ VALGRIND_ALIGN_STACK \ -+ "ld.d $a0, %1, 8 \n\t" /* arg1 */ \ -+ "ld.d $a1, %1, 16 \n\t" /* arg2 */ \ -+ "ld.d $t8, %1, 0 \n\t" /* target->t8 */ \ -+ VALGRIND_CALL_NOREDIR_T8 \ -+ VALGRIND_RESTORE_STACK \ -+ "move %0, $a0 \n\t" \ -+ : /*out*/ "=r" (_res) \ -+ : /*in*/ "r" (&_argvec[0]) \ -+ : /*trash*/ "memory", __CALLER_SAVED_REGS, "$s0" \ -+ ); \ -+ lval = (__typeof__(lval)) _res; \ -+ } while (0) -+ -+#define CALL_FN_W_WWW(lval, orig, arg1, arg2, arg3) \ -+ do { \ -+ volatile OrigFn _orig = (orig); \ -+ volatile unsigned long _argvec[4]; \ -+ volatile unsigned long _res; \ -+ _argvec[0] = (unsigned long)_orig.nraddr; \ -+ _argvec[1] = (unsigned long)(arg1); \ -+ _argvec[2] = (unsigned long)(arg2); \ -+ _argvec[3] = (unsigned long)(arg3); \ -+ __asm__ volatile( \ -+ VALGRIND_ALIGN_STACK \ -+ "ld.d $a0, %1, 8 \n\t" /* arg1 */ \ -+ "ld.d $a1, %1, 16 \n\t" /* arg2 */ \ -+ "ld.d $a2, %1, 24 \n\t" /* arg3 */ \ -+ "ld.d $t8, %1, 0 \n\t" /* target->t8 */ \ -+ VALGRIND_CALL_NOREDIR_T8 \ -+ VALGRIND_RESTORE_STACK \ -+ "move %0, $a0 \n\t" \ -+ : /*out*/ "=r" (_res) \ -+ : /*in*/ "r" (&_argvec[0]) \ -+ : /*trash*/ "memory", __CALLER_SAVED_REGS, "$s0" \ -+ ); \ -+ lval = (__typeof__(lval)) _res; \ -+ } while (0) -+ -+#define CALL_FN_W_WWWW(lval, orig, arg1, arg2, arg3, arg4) \ -+ do { \ -+ volatile OrigFn _orig = (orig); \ -+ volatile unsigned long _argvec[5]; \ -+ volatile unsigned long _res; \ -+ _argvec[0] = (unsigned long)_orig.nraddr; \ -+ _argvec[1] = (unsigned long)(arg1); \ -+ _argvec[2] = (unsigned long)(arg2); \ -+ _argvec[3] = (unsigned long)(arg3); \ -+ _argvec[4] = (unsigned long)(arg4); \ -+ __asm__ volatile( \ -+ VALGRIND_ALIGN_STACK \ -+ "ld.d $a0, %1, 8 \n\t" /* arg1 */ \ -+ "ld.d $a1, %1, 16 \n\t" /* arg2 */ \ -+ "ld.d $a2, %1, 24 \n\t" /* arg3 */ \ -+ "ld.d $a3, %1, 32 \n\t" /* arg4 */ \ -+ "ld.d $t8, %1, 0 \n\t" /* target->t8 */ \ -+ VALGRIND_CALL_NOREDIR_T8 \ -+ VALGRIND_RESTORE_STACK \ -+ "move %0, $a0 \n\t" \ -+ : /*out*/ "=r" (_res) \ -+ : /*in*/ "r" (&_argvec[0]) \ -+ : /*trash*/ "memory", __CALLER_SAVED_REGS, "$s0" \ -+ ); \ -+ lval = (__typeof__(lval)) _res; \ -+ } while (0) -+ -+#define CALL_FN_W_5W(lval, orig, arg1, arg2, arg3, arg4, arg5) \ -+ do { \ -+ volatile OrigFn _orig = (orig); \ -+ volatile unsigned long _argvec[6]; \ -+ volatile unsigned long _res; \ -+ _argvec[0] = (unsigned long)_orig.nraddr; \ -+ _argvec[1] = (unsigned long)(arg1); \ -+ _argvec[2] = (unsigned long)(arg2); \ -+ _argvec[3] = (unsigned long)(arg3); \ -+ _argvec[4] = (unsigned long)(arg4); \ -+ _argvec[5] = (unsigned long)(arg5); \ -+ __asm__ volatile( \ -+ VALGRIND_ALIGN_STACK \ -+ "ld.d $a0, %1, 8 \n\t" /* arg1 */ \ -+ "ld.d $a1, %1, 16 \n\t" /* arg2 */ \ -+ "ld.d $a2, %1, 24 \n\t" /* arg3 */ \ -+ "ld.d $a3, %1, 32 \n\t" /* arg4 */ \ -+ "ld.d $a4, %1, 40 \n\t" /* arg5 */ \ -+ "ld.d $t8, %1, 0 \n\t" /* target->t8 */ \ -+ VALGRIND_CALL_NOREDIR_T8 \ -+ VALGRIND_RESTORE_STACK \ -+ "move %0, $a0 \n\t" \ -+ : /*out*/ "=r" (_res) \ -+ : /*in*/ "r" (&_argvec[0]) \ -+ : /*trash*/ "memory", __CALLER_SAVED_REGS, "$s0" \ -+ ); \ -+ lval = (__typeof__(lval)) _res; \ -+ } while (0) -+ -+#define CALL_FN_W_6W(lval, orig, arg1, arg2, arg3, arg4, arg5, \ -+ arg6) \ -+ do { \ -+ volatile OrigFn _orig = (orig); \ -+ volatile unsigned long _argvec[7]; \ -+ volatile unsigned long _res; \ -+ _argvec[0] = (unsigned long)_orig.nraddr; \ -+ _argvec[1] = (unsigned long)(arg1); \ -+ _argvec[2] = (unsigned long)(arg2); \ -+ _argvec[3] = (unsigned long)(arg3); \ -+ _argvec[4] = (unsigned long)(arg4); \ -+ _argvec[5] = (unsigned long)(arg5); \ -+ _argvec[6] = (unsigned long)(arg6); \ -+ __asm__ volatile( \ -+ VALGRIND_ALIGN_STACK \ -+ "ld.d $a0, %1, 8 \n\t" /* arg1 */ \ -+ "ld.d $a1, %1, 16 \n\t" /* arg2 */ \ -+ "ld.d $a2, %1, 24 \n\t" /* arg3 */ \ -+ "ld.d $a3, %1, 32 \n\t" /* arg4 */ \ -+ "ld.d $a4, %1, 40 \n\t" /* arg5 */ \ -+ "ld.d $a5, %1, 48 \n\t" /* arg6 */ \ -+ "ld.d $t8, %1, 0 \n\t" /* target->t8 */ \ -+ VALGRIND_CALL_NOREDIR_T8 \ -+ VALGRIND_RESTORE_STACK \ -+ "move %0, $a0 \n\t" \ -+ : /*out*/ "=r" (_res) \ -+ : /*in*/ "r" (&_argvec[0]) \ -+ : /*trash*/ "memory", __CALLER_SAVED_REGS, "$s0" \ -+ ); \ -+ lval = (__typeof__(lval)) _res; \ -+ } while (0) -+ -+#define CALL_FN_W_7W(lval, orig, arg1, arg2, arg3, arg4, arg5, \ -+ arg6, arg7) \ -+ do { \ -+ volatile OrigFn _orig = (orig); \ -+ volatile unsigned long _argvec[8]; \ -+ volatile unsigned long _res; \ -+ _argvec[0] = (unsigned long)_orig.nraddr; \ -+ _argvec[1] = (unsigned long)(arg1); \ -+ _argvec[2] = (unsigned long)(arg2); \ -+ _argvec[3] = (unsigned long)(arg3); \ -+ _argvec[4] = (unsigned long)(arg4); \ -+ _argvec[5] = (unsigned long)(arg5); \ -+ _argvec[6] = (unsigned long)(arg6); \ -+ _argvec[7] = (unsigned long)(arg7); \ -+ __asm__ volatile( \ -+ VALGRIND_ALIGN_STACK \ -+ "ld.d $a0, %1, 8 \n\t" /* arg1 */ \ -+ "ld.d $a1, %1, 16 \n\t" /* arg2 */ \ -+ "ld.d $a2, %1, 24 \n\t" /* arg3 */ \ -+ "ld.d $a3, %1, 32 \n\t" /* arg4 */ \ -+ "ld.d $a4, %1, 40 \n\t" /* arg5 */ \ -+ "ld.d $a5, %1, 48 \n\t" /* arg6 */ \ -+ "ld.d $a6, %1, 56 \n\t" /* arg7 */ \ -+ "ld.d $t8, %1, 0 \n\t" /* target->t8 */ \ -+ VALGRIND_CALL_NOREDIR_T8 \ -+ VALGRIND_RESTORE_STACK \ -+ "move %0, $a0 \n\t" \ -+ : /*out*/ "=r" (_res) \ -+ : /*in*/ "r" (&_argvec[0]) \ -+ : /*trash*/ "memory", __CALLER_SAVED_REGS, "$s0" \ -+ ); \ -+ lval = (__typeof__(lval)) _res; \ -+ } while (0) -+ -+#define CALL_FN_W_8W(lval, orig, arg1, arg2, arg3, arg4, arg5, \ -+ arg6, arg7, arg8) \ -+ do { \ -+ volatile OrigFn _orig = (orig); \ -+ volatile unsigned long _argvec[9]; \ -+ volatile unsigned long _res; \ -+ _argvec[0] = (unsigned long)_orig.nraddr; \ -+ _argvec[1] = (unsigned long)(arg1); \ -+ _argvec[2] = (unsigned long)(arg2); \ -+ _argvec[3] = (unsigned long)(arg3); \ -+ _argvec[4] = (unsigned long)(arg4); \ -+ _argvec[5] = (unsigned long)(arg5); \ -+ _argvec[6] = (unsigned long)(arg6); \ -+ _argvec[7] = (unsigned long)(arg7); \ -+ _argvec[8] = (unsigned long)(arg8); \ -+ __asm__ volatile( \ -+ VALGRIND_ALIGN_STACK \ -+ "ld.d $a0, %1, 8 \n\t" /* arg1 */ \ -+ "ld.d $a1, %1, 16 \n\t" /* arg2 */ \ -+ "ld.d $a2, %1, 24 \n\t" /* arg3 */ \ -+ "ld.d $a3, %1, 32 \n\t" /* arg4 */ \ -+ "ld.d $a4, %1, 40 \n\t" /* arg5 */ \ -+ "ld.d $a5, %1, 48 \n\t" /* arg6 */ \ -+ "ld.d $a6, %1, 56 \n\t" /* arg7 */ \ -+ "ld.d $a7, %1, 64 \n\t" /* arg8 */ \ -+ "ld.d $t8, %1, 0 \n\t" /* target->t8 */ \ -+ VALGRIND_CALL_NOREDIR_T8 \ -+ VALGRIND_RESTORE_STACK \ -+ "move %0, $a0 \n\t" \ -+ : /*out*/ "=r" (_res) \ -+ : /*in*/ "r" (&_argvec[0]) \ -+ : /*trash*/ "memory", __CALLER_SAVED_REGS, "$s0" \ -+ ); \ -+ lval = (__typeof__(lval)) _res; \ -+ } while (0) -+ -+#define CALL_FN_W_9W(lval, orig, arg1, arg2, arg3, arg4, arg5, \ -+ arg6, arg7, arg8, arg9) \ -+ do { \ -+ volatile OrigFn _orig = (orig); \ -+ volatile unsigned long _argvec[10]; \ -+ volatile unsigned long _res; \ -+ _argvec[0] = (unsigned long)_orig.nraddr; \ -+ _argvec[1] = (unsigned long)(arg1); \ -+ _argvec[2] = (unsigned long)(arg2); \ -+ _argvec[3] = (unsigned long)(arg3); \ -+ _argvec[4] = (unsigned long)(arg4); \ -+ _argvec[5] = (unsigned long)(arg5); \ -+ _argvec[6] = (unsigned long)(arg6); \ -+ _argvec[7] = (unsigned long)(arg7); \ -+ _argvec[8] = (unsigned long)(arg8); \ -+ _argvec[9] = (unsigned long)(arg9); \ -+ __asm__ volatile( \ -+ VALGRIND_ALIGN_STACK \ -+ "addi.d $sp, $sp, -8 \n\t" \ -+ "ld.d $a0, %1, 72 \n\t" \ -+ "st.d $a0, $sp, 0 \n\t" /* arg9 */ \ -+ "ld.d $a0, %1, 8 \n\t" /* arg1 */ \ -+ "ld.d $a1, %1, 16 \n\t" /* arg2 */ \ -+ "ld.d $a2, %1, 24 \n\t" /* arg3 */ \ -+ "ld.d $a3, %1, 32 \n\t" /* arg4 */ \ -+ "ld.d $a4, %1, 40 \n\t" /* arg5 */ \ -+ "ld.d $a5, %1, 48 \n\t" /* arg6 */ \ -+ "ld.d $a6, %1, 56 \n\t" /* arg7 */ \ -+ "ld.d $a7, %1, 64 \n\t" /* arg8 */ \ -+ "ld.d $t8, %1, 0 \n\t" /* target->t8 */ \ -+ VALGRIND_CALL_NOREDIR_T8 \ -+ VALGRIND_RESTORE_STACK \ -+ "move %0, $a0 \n\t" \ -+ : /*out*/ "=r" (_res) \ -+ : /*in*/ "r" (&_argvec[0]) \ -+ : /*trash*/ "memory", __CALLER_SAVED_REGS, "$s0" \ -+ ); \ -+ lval = (__typeof__(lval)) _res; \ -+ } while (0) -+ -+#define CALL_FN_W_10W(lval, orig, arg1, arg2, arg3, arg4, arg5, \ -+ arg6, arg7, arg8, arg9, arg10) \ -+ do { \ -+ volatile OrigFn _orig = (orig); \ -+ volatile unsigned long _argvec[11]; \ -+ volatile unsigned long _res; \ -+ _argvec[0] = (unsigned long)_orig.nraddr; \ -+ _argvec[1] = (unsigned long)(arg1); \ -+ _argvec[2] = (unsigned long)(arg2); \ -+ _argvec[3] = (unsigned long)(arg3); \ -+ _argvec[4] = (unsigned long)(arg4); \ -+ _argvec[5] = (unsigned long)(arg5); \ -+ _argvec[6] = (unsigned long)(arg6); \ -+ _argvec[7] = (unsigned long)(arg7); \ -+ _argvec[8] = (unsigned long)(arg8); \ -+ _argvec[9] = (unsigned long)(arg9); \ -+ _argvec[10] = (unsigned long)(arg10); \ -+ __asm__ volatile( \ -+ VALGRIND_ALIGN_STACK \ -+ "addi.d $sp, $sp, -16 \n\t" \ -+ "ld.d $a0, %1, 72 \n\t" \ -+ "st.d $a0, $sp, 0 \n\t" /* arg9 */ \ -+ "ld.d $a0, %1, 80 \n\t" \ -+ "st.d $a0, $sp, 8 \n\t" /* arg10 */ \ -+ "ld.d $a0, %1, 8 \n\t" /* arg1 */ \ -+ "ld.d $a1, %1, 16 \n\t" /* arg2 */ \ -+ "ld.d $a2, %1, 24 \n\t" /* arg3 */ \ -+ "ld.d $a3, %1, 32 \n\t" /* arg4 */ \ -+ "ld.d $a4, %1, 40 \n\t" /* arg5 */ \ -+ "ld.d $a5, %1, 48 \n\t" /* arg6 */ \ -+ "ld.d $a6, %1, 56 \n\t" /* arg7 */ \ -+ "ld.d $a7, %1, 64 \n\t" /* arg8 */ \ -+ "ld.d $t8, %1, 0 \n\t" /* target->t8 */ \ -+ VALGRIND_CALL_NOREDIR_T8 \ -+ VALGRIND_RESTORE_STACK \ -+ "move %0, $a0 \n\t" \ -+ : /*out*/ "=r" (_res) \ -+ : /*in*/ "r" (&_argvec[0]) \ -+ : /*trash*/ "memory", __CALLER_SAVED_REGS, "$s0" \ -+ ); \ -+ lval = (__typeof__(lval)) _res; \ -+ } while (0) -+ -+#define CALL_FN_W_11W(lval, orig, arg1, arg2, arg3, arg4, arg5, \ -+ arg6, arg7, arg8, arg9, arg10, \ -+ arg11) \ -+ do { \ -+ volatile OrigFn _orig = (orig); \ -+ volatile unsigned long _argvec[12]; \ -+ volatile unsigned long _res; \ -+ _argvec[0] = (unsigned long)_orig.nraddr; \ -+ _argvec[1] = (unsigned long)(arg1); \ -+ _argvec[2] = (unsigned long)(arg2); \ -+ _argvec[3] = (unsigned long)(arg3); \ -+ _argvec[4] = (unsigned long)(arg4); \ -+ _argvec[5] = (unsigned long)(arg5); \ -+ _argvec[6] = (unsigned long)(arg6); \ -+ _argvec[7] = (unsigned long)(arg7); \ -+ _argvec[8] = (unsigned long)(arg8); \ -+ _argvec[9] = (unsigned long)(arg9); \ -+ _argvec[10] = (unsigned long)(arg10); \ -+ _argvec[11] = (unsigned long)(arg11); \ -+ __asm__ volatile( \ -+ VALGRIND_ALIGN_STACK \ -+ "addi.d $sp, $sp, -24 \n\t" \ -+ "ld.d $a0, %1, 72 \n\t" \ -+ "st.d $a0, $sp, 0 \n\t" /* arg9 */ \ -+ "ld.d $a0, %1, 80 \n\t" \ -+ "st.d $a0, $sp, 8 \n\t" /* arg10 */ \ -+ "ld.d $a0, %1, 88 \n\t" \ -+ "st.d $a0, $sp, 16 \n\t" /* arg11 */ \ -+ "ld.d $a0, %1, 8 \n\t" /* arg1 */ \ -+ "ld.d $a1, %1, 16 \n\t" /* arg2 */ \ -+ "ld.d $a2, %1, 24 \n\t" /* arg3 */ \ -+ "ld.d $a3, %1, 32 \n\t" /* arg4 */ \ -+ "ld.d $a4, %1, 40 \n\t" /* arg5 */ \ -+ "ld.d $a5, %1, 48 \n\t" /* arg6 */ \ -+ "ld.d $a6, %1, 56 \n\t" /* arg7 */ \ -+ "ld.d $a7, %1, 64 \n\t" /* arg8 */ \ -+ "ld.d $t8, %1, 0 \n\t" /* target->t8 */ \ -+ VALGRIND_CALL_NOREDIR_T8 \ -+ VALGRIND_RESTORE_STACK \ -+ "move %0, $a0 \n\t" \ -+ : /*out*/ "=r" (_res) \ -+ : /*in*/ "r" (&_argvec[0]) \ -+ : /*trash*/ "memory", __CALLER_SAVED_REGS, "$s0" \ -+ ); \ -+ lval = (__typeof__(lval)) _res; \ -+ } while (0) -+ -+#define CALL_FN_W_12W(lval, orig, arg1, arg2, arg3, arg4, arg5, \ -+ arg6, arg7, arg8, arg9, arg10, \ -+ arg11, arg12) \ -+ do { \ -+ volatile OrigFn _orig = (orig); \ -+ volatile unsigned long _argvec[13]; \ -+ volatile unsigned long _res; \ -+ _argvec[0] = (unsigned long)_orig.nraddr; \ -+ _argvec[1] = (unsigned long)(arg1); \ -+ _argvec[2] = (unsigned long)(arg2); \ -+ _argvec[3] = (unsigned long)(arg3); \ -+ _argvec[4] = (unsigned long)(arg4); \ -+ _argvec[5] = (unsigned long)(arg5); \ -+ _argvec[6] = (unsigned long)(arg6); \ -+ _argvec[7] = (unsigned long)(arg7); \ -+ _argvec[8] = (unsigned long)(arg8); \ -+ _argvec[9] = (unsigned long)(arg9); \ -+ _argvec[10] = (unsigned long)(arg10); \ -+ _argvec[11] = (unsigned long)(arg11); \ -+ _argvec[12] = (unsigned long)(arg12); \ -+ __asm__ volatile( \ -+ VALGRIND_ALIGN_STACK \ -+ "addi.d $sp, $sp, -32 \n\t" \ -+ "ld.d $a0, %1, 72 \n\t" \ -+ "st.d $a0, $sp, 0 \n\t" /* arg9 */ \ -+ "ld.d $a0, %1, 80 \n\t" \ -+ "st.d $a0, $sp, 8 \n\t" /* arg10 */ \ -+ "ld.d $a0, %1, 88 \n\t" \ -+ "st.d $a0, $sp, 16 \n\t" /* arg11 */ \ -+ "ld.d $a0, %1, 96 \n\t" \ -+ "st.d $a0, $sp, 24 \n\t" /* arg12 */ \ -+ "ld.d $a0, %1, 8 \n\t" /* arg1 */ \ -+ "ld.d $a1, %1, 16 \n\t" /* arg2 */ \ -+ "ld.d $a2, %1, 24 \n\t" /* arg3 */ \ -+ "ld.d $a3, %1, 32 \n\t" /* arg4 */ \ -+ "ld.d $a4, %1, 40 \n\t" /* arg5 */ \ -+ "ld.d $a5, %1, 48 \n\t" /* arg6 */ \ -+ "ld.d $a6, %1, 56 \n\t" /* arg7 */ \ -+ "ld.d $a7, %1, 64 \n\t" /* arg8 */ \ -+ "ld.d $t8, %1, 0 \n\t" /* target->t8 */ \ -+ VALGRIND_CALL_NOREDIR_T8 \ -+ VALGRIND_RESTORE_STACK \ -+ "move %0, $a0 \n\t" \ -+ : /*out*/ "=r" (_res) \ -+ : /*in*/ "r" (&_argvec[0]) \ -+ : /*trash*/ "memory", __CALLER_SAVED_REGS, "$s0" \ -+ ); \ -+ lval = (__typeof__(lval)) _res; \ -+ } while (0) -+ -+#endif /* PLAT_loongarch64_linux */ -+ - /* ------------------------------------------------------------------ */ - /* ARCHITECTURE INDEPENDENT MACROS for CLIENT REQUESTS. */ - /* */ -@@ -7159,6 +7681,7 @@ VALGRIND_PRINTF_BACKTRACE(const char *format, ...) - #undef PLAT_mips32_linux - #undef PLAT_mips64_linux - #undef PLAT_nanomips_linux -+#undef PLAT_loongarch64_linux - #undef PLAT_x86_solaris - #undef PLAT_amd64_solaris - diff --git a/include/valgrind.h.in b/include/valgrind.h.in -index 45f6522..3e1967a 100644 +index f1710924aa73..f4d72c6c7834 100644 --- a/include/valgrind.h.in +++ b/include/valgrind.h.in -@@ -125,6 +125,7 @@ - #undef PLAT_mips32_linux +@@ -127,6 +127,7 @@ #undef PLAT_mips64_linux #undef PLAT_nanomips_linux + #undef PLAT_riscv64_linux +#undef PLAT_loongarch64_linux #undef PLAT_x86_solaris #undef PLAT_amd64_solaris -@@ -169,6 +170,8 @@ - # define PLAT_mips32_linux 1 - #elif defined(__linux__) && defined(__nanomips__) +@@ -175,6 +176,8 @@ # define PLAT_nanomips_linux 1 + #elif defined(__linux__) && defined(__riscv) && (__riscv_xlen == 64) + # define PLAT_riscv64_linux 1 +#elif defined(__linux__) && defined(__loongarch__) && (__loongarch_grlen == 64) +# define PLAT_loongarch64_linux 1 #elif defined(__sun) && defined(__i386__) # define PLAT_x86_solaris 1 #elif defined(__sun) && defined(__x86_64__) -@@ -1125,7 +1128,75 @@ typedef - ); \ - } while (0) +@@ -1213,6 +1216,75 @@ typedef + + #endif /* PLAT_riscv64_linux */ --#endif -+#endif /* PLAT_nanomips_linux */ -+ +/* --------------------- loongarch64-linux --------------------- */ ++ +#if defined(PLAT_loongarch64_linux) + +typedef @@ -31355,12 +30208,13 @@ index 45f6522..3e1967a 100644 + } while (0) + +#endif /* PLAT_loongarch64_linux */ ++ /* Insert assembly code for other platforms here... */ #endif /* NVALGRIND */ -@@ -6603,6 +6674,457 @@ typedef +@@ -7140,6 +7212,457 @@ typedef - #endif /* PLAT_mips64_linux */ + #endif /* PLAT_riscv64_linux */ +/* --------------------- loongarch64-linux --------------------- */ + @@ -31816,37 +30670,37 @@ index 45f6522..3e1967a 100644 /* ------------------------------------------------------------------ */ /* ARCHITECTURE INDEPENDENT MACROS for CLIENT REQUESTS. */ /* */ -@@ -7159,6 +7681,7 @@ VALGRIND_PRINTF_BACKTRACE(const char *format, ...) - #undef PLAT_mips32_linux +@@ -7697,6 +8220,7 @@ VALGRIND_PRINTF_BACKTRACE(const char *format, ...) #undef PLAT_mips64_linux #undef PLAT_nanomips_linux + #undef PLAT_riscv64_linux +#undef PLAT_loongarch64_linux #undef PLAT_x86_solaris #undef PLAT_amd64_solaris diff --git a/include/vki/vki-linux.h b/include/vki/vki-linux.h -index be3d766..0a60c0a 100644 +index 29e62ce86351..3311b49d6d03 100644 --- a/include/vki/vki-linux.h +++ b/include/vki/vki-linux.h -@@ -97,6 +97,8 @@ - # include "vki-posixtypes-mips64-linux.h" - #elif defined(VGA_nanomips) +@@ -99,6 +99,8 @@ # include "vki-posixtypes-nanomips-linux.h" + #elif defined(VGA_riscv64) + # include "vki-posixtypes-riscv64-linux.h" +#elif defined(VGA_loongarch64) +# include "vki-posixtypes-loongarch64-linux.h" #else # error Unknown platform #endif -@@ -225,6 +227,8 @@ typedef unsigned int vki_uint; - # include "vki-mips64-linux.h" - #elif defined(VGA_nanomips) +@@ -229,6 +231,8 @@ typedef unsigned int vki_uint; # include "vki-nanomips-linux.h" + #elif defined(VGA_riscv64) + # include "vki-riscv64-linux.h" +#elif defined(VGA_loongarch64) +# include "vki-loongarch64-linux.h" #else # error Unknown platform #endif -@@ -531,6 +535,7 @@ typedef struct vki_siginfo { +@@ -535,6 +539,7 @@ typedef struct vki_siginfo { * Digital reserves positive values for kernel-generated signals. */ #define VKI_SI_USER 0 /* sent by kill, sigsend, raise */ @@ -31856,7 +30710,7 @@ index be3d766..0a60c0a 100644 /* diff --git a/include/vki/vki-loongarch64-linux.h b/include/vki/vki-loongarch64-linux.h new file mode 100644 -index 0000000..97d3f66 +index 000000000000..cb67fef4a2ba --- /dev/null +++ b/include/vki/vki-loongarch64-linux.h @@ -0,0 +1,811 @@ @@ -31893,7 +30747,7 @@ index 0000000..97d3f66 +#define VKI_LITTLE_ENDIAN 1 + +//---------------------------------------------------------------------- -+// From linux-5.15.2/include/uapi/asm-generic/int-ll64.h ++// From linux-6.10.0/include/uapi/asm-generic/int-ll64.h +//---------------------------------------------------------------------- + +typedef __signed__ char __vki_s8; @@ -31909,7 +30763,7 @@ index 0000000..97d3f66 +typedef unsigned long long __vki_u64; + +//---------------------------------------------------------------------- -+// From linux-5.15.2/include/asm-generic/int-ll64.h ++// From linux-6.10.0/include/asm-generic/int-ll64.h +//---------------------------------------------------------------------- + +typedef __vki_s8 vki_s8; @@ -31922,7 +30776,7 @@ index 0000000..97d3f66 +typedef __vki_u64 vki_u64; + +//---------------------------------------------------------------------- -+// From linux-5.15.2/include/linux/types.h ++// From linux-6.10.0/include/linux/types.h +//---------------------------------------------------------------------- + +typedef vki_u8 vki_u_int8_t; @@ -31941,7 +30795,7 @@ index 0000000..97d3f66 +typedef vki_s64 vki_int64_t; + +//---------------------------------------------------------------------- -+// From linux-5.19-rc1/arch/loongarch/include/asm/page.h ++// From linux-6.10-0/arch/loongarch/include/asm/page.h +//---------------------------------------------------------------------- + +/* loongarch64 uses runtime pagesize detection */ @@ -31952,20 +30806,20 @@ index 0000000..97d3f66 +#define VKI_MAX_PAGE_SIZE (1UL << VKI_MAX_PAGE_SHIFT) + +//---------------------------------------------------------------------- -+// From linux-5.19-rc1/arch/loongarch/include/asm/shmparam.h ++// From linux-6.10-0/arch/loongarch/include/asm/shmparam.h +//---------------------------------------------------------------------- + +#define VKI_SHMLBA 0x00010000 // SZ_64K + +//---------------------------------------------------------------------- -+// From linux-5.19-rc1/arch/loongarch/include/uapi/asm/signal.h ++// From linux-6.10-0/arch/loongarch/include/uapi/asm/signal.h +//---------------------------------------------------------------------- + +#define VKI_MINSIGSTKSZ 4096 +#define VKI_SIGSTKSZ 16384 + +//---------------------------------------------------------------------- -+// From linux-5.19-rc1/include/uapi/asm-generic/signal-defs.h ++// From linux-6.10-0/include/uapi/asm-generic/signal-defs.h +//---------------------------------------------------------------------- + +#define VKI_SA_NOCLDSTOP 0x00000001 @@ -32011,7 +30865,7 @@ index 0000000..97d3f66 +#define VKI_SIG_ERR ((__vki_sighandler_t)-1) /* error return from signal */ + +//---------------------------------------------------------------------- -+// From linux-5.19-rc1/include/uapi/asm-generic/signal.h ++// From linux-6.10-0/include/uapi/asm-generic/signal.h +//---------------------------------------------------------------------- + +#define _VKI_NSIG 64 @@ -32066,14 +30920,14 @@ index 0000000..97d3f66 +typedef unsigned long vki_old_sigset_t; + +//---------------------------------------------------------------------- -+// From linux-5.19-rc1/include/uapi/linux/signal.h ++// From linux-6.10-0/include/uapi/linux/signal.h +//---------------------------------------------------------------------- + +#define VKI_SS_ONSTACK 1 +#define VKI_SS_DISABLE 2 + +//---------------------------------------------------------------------- -+// From linux-5.19-rc1/include/linux/signal_types.h ++// From linux-6.10-0/include/linux/signal_types.h +//---------------------------------------------------------------------- + +struct vki_sigaction { @@ -32104,7 +30958,7 @@ index 0000000..97d3f66 +} vki_stack_t; + +//---------------------------------------------------------------------- -+// From linux-5.19-rc1/arch/loongarch/include/uapi/asm/sigcontext.h ++// From linux-6.10-0/arch/loongarch/include/uapi/asm/sigcontext.h +//---------------------------------------------------------------------- + +struct vki_sigcontext { @@ -32115,7 +30969,7 @@ index 0000000..97d3f66 +}; + +//---------------------------------------------------------------------- -+// From linux-5.19-rc1/include/uapi/linux/mman.h ++// From linux-6.10-0/include/uapi/linux/mman.h +//---------------------------------------------------------------------- + +#define VKI_MAP_SHARED 0x01 /* Share changes */ @@ -32123,7 +30977,7 @@ index 0000000..97d3f66 +#define VKI_MAP_SHARED_VALIDATE 0x03 /* share + validate extension flags */ + +//---------------------------------------------------------------------- -+// From linux-5.19-rc1/include/uapi/asm-generic/mman-common.h ++// From linux-6.10-0/include/uapi/asm-generic/mman-common.h +//---------------------------------------------------------------------- + +#define VKI_PROT_READ 0x1 /* page can be read */ @@ -32152,7 +31006,7 @@ index 0000000..97d3f66 +#define VKI_MAP_UNINITIALIZED 0x4000000 /* For anonymous mmap, memory could be uninitialized */ + +//---------------------------------------------------------------------- -+// From linux-5.19-rc1/include/uapi/asm-generic/fcntl.h ++// From linux-6.10-0/include/uapi/asm-generic/fcntl.h +//---------------------------------------------------------------------- + +#define VKI_O_ACCMODE 00000003 @@ -32223,7 +31077,7 @@ index 0000000..97d3f66 +#define VKI_F_LINUX_SPECIFIC_BASE 1024 + +//---------------------------------------------------------------------- -+// From linux-5.19-rc1/include/uapi/linux/fcntl.h ++// From linux-6.10-0/include/uapi/linux/fcntl.h +//---------------------------------------------------------------------- + +#define VKI_AT_FDCWD -100 /* Special value used to indicate @@ -32231,7 +31085,7 @@ index 0000000..97d3f66 + working directory. */ + +//---------------------------------------------------------------------- -+// From linux-5.19-rc1/include/uapi/asm-generic/resource.h ++// From linux-6.10-0/include/uapi/asm-generic/resource.h +//---------------------------------------------------------------------- + +#define VKI_RLIMIT_DATA 2 /* max data size */ @@ -32240,7 +31094,7 @@ index 0000000..97d3f66 +#define VKI_RLIMIT_NOFILE 7 /* max number of open files */ + +//---------------------------------------------------------------------- -+// From linux-5.19-rc1/include/uapi/asm-generic/socket.h ++// From linux-6.10-0/include/uapi/asm-generic/socket.h +//---------------------------------------------------------------------- + +#define VKI_SOL_SOCKET 1 @@ -32249,7 +31103,7 @@ index 0000000..97d3f66 +#define VKI_SO_ATTACH_FILTER 26 + +//---------------------------------------------------------------------- -+// From linux-5.19-rc1/include/uapi/asm-generic/sockios.h ++// From linux-6.10-0/include/uapi/asm-generic/sockios.h +//---------------------------------------------------------------------- + +#define VKI_FIOSETOWN 0x8901 @@ -32261,14 +31115,14 @@ index 0000000..97d3f66 +#define VKI_SIOCGSTAMPNS_OLD 0x8907 /* Get stamp (timespec) */ + +//---------------------------------------------------------------------- -+// From linux-5.19-rc1/include/uapi/linux/sockios.h ++// From linux-6.10-0/include/uapi/linux/sockios.h +//---------------------------------------------------------------------- + +#define VKI_SIOCGSTAMP VKI_SIOCGSTAMP_OLD +#define VKI_SIOCGSTAMPNS VKI_SIOCGSTAMPNS_OLD + +//---------------------------------------------------------------------- -+// From linux-5.19-rc1/include/uapi/asm-generic/stat.h ++// From linux-6.10-0/include/uapi/asm-generic/stat.h +//---------------------------------------------------------------------- + +struct vki_stat { @@ -32318,7 +31172,7 @@ index 0000000..97d3f66 +}; + +//---------------------------------------------------------------------- -+// From linux-5.19-rc1/include/uapi/asm-generic/statfs.h ++// From linux-6.10-0/include/uapi/asm-generic/statfs.h +//---------------------------------------------------------------------- + +#define __vki_statfs_word __vki_kernel_long_t @@ -32339,7 +31193,7 @@ index 0000000..97d3f66 +}; + +//---------------------------------------------------------------------- -+// From linux-5.19-rc1/include/uapi/asm-generic/termios.h ++// From linux-6.10-0/include/uapi/asm-generic/termios.h +//---------------------------------------------------------------------- + +struct vki_winsize { @@ -32360,7 +31214,7 @@ index 0000000..97d3f66 +}; + +//---------------------------------------------------------------------- -+// From linux-5.19-rc1/include/uapi/asm-generic/termbits.h ++// From linux-6.10-0/include/uapi/asm-generic/termbits.h +//---------------------------------------------------------------------- + +typedef unsigned char vki_cc_t; @@ -32378,7 +31232,7 @@ index 0000000..97d3f66 +}; + +//---------------------------------------------------------------------- -+// From linux-5.19-rc1/include/uapi/asm-generic/ioctl.h ++// From linux-6.10-0/include/uapi/asm-generic/ioctl.h +//---------------------------------------------------------------------- + +#define _VKI_IOC_NRBITS 8 @@ -32420,7 +31274,7 @@ index 0000000..97d3f66 +#define _VKI_IOC_SIZE(nr) (((nr) >> _VKI_IOC_SIZESHIFT) & _VKI_IOC_SIZEMASK) + +//---------------------------------------------------------------------- -+// From linux-5.19-rc1/include/uapi/asm-generic/ioctls.h ++// From linux-6.10-0/include/uapi/asm-generic/ioctls.h +//---------------------------------------------------------------------- + +#define VKI_TCGETS 0x5401 @@ -32516,7 +31370,7 @@ index 0000000..97d3f66 +#define VKI_TIOCSER_TEMT 0x01 /* Transmitter physically empty */ + +//---------------------------------------------------------------------- -+// From linux-5.19-rc1/include/uapi/asm-generic/poll.h ++// From linux-6.10-0/include/uapi/asm-generic/poll.h +//---------------------------------------------------------------------- + +#define VKI_POLLIN 0x0001 @@ -32528,7 +31382,7 @@ index 0000000..97d3f66 +}; + +//---------------------------------------------------------------------- -+// From linux-5.19-rc1/arch/loongarch/include/asm/elf.h ++// From linux-6.10-0/arch/loongarch/include/asm/elf.h +//---------------------------------------------------------------------- + +#define VKI_ELF_NGREG 45 @@ -32541,7 +31395,7 @@ index 0000000..97d3f66 +typedef vki_elf_fpreg_t vki_elf_fpregset_t[VKI_ELF_NFPREG]; + +//---------------------------------------------------------------------- -+// From linux-5.19-rc1/arch/loongarch/include/uapi/asm/ucontext.h ++// From linux-6.10-0/arch/loongarch/include/uapi/asm/ucontext.h +//---------------------------------------------------------------------- + +struct vki_ucontext { @@ -32558,7 +31412,7 @@ index 0000000..97d3f66 + + +//---------------------------------------------------------------------- -+// From linux-5.19-rc1/include/uapi/asm-generic/ipcbuf.h ++// From linux-6.10-0/include/uapi/asm-generic/ipcbuf.h +//---------------------------------------------------------------------- + +struct vki_ipc64_perm { @@ -32576,7 +31430,7 @@ index 0000000..97d3f66 +}; + +//---------------------------------------------------------------------- -+// From linux-5.19-rc1/include/uapi/asm-generic/sembuf.h ++// From linux-6.10-0/include/uapi/asm-generic/sembuf.h +//---------------------------------------------------------------------- +struct vki_semid64_ds { + struct vki_ipc64_perm sem_perm; /* permissions .. see ipc.h */ @@ -32588,7 +31442,7 @@ index 0000000..97d3f66 +}; + +//---------------------------------------------------------------------- -+// From linux-5.19-rc1/include/uapi/asm-generic/msgbuf.h ++// From linux-6.10-0/include/uapi/asm-generic/msgbuf.h +//---------------------------------------------------------------------- + +struct vki_msqid64_ds { @@ -32606,7 +31460,7 @@ index 0000000..97d3f66 +}; + +//---------------------------------------------------------------------- -+// From linux-5.19-rc1/include/uapi/asm-generic/shmbuf.h ++// From linux-6.10-0/include/uapi/asm-generic/shmbuf.h +//---------------------------------------------------------------------- + +struct vki_shmid64_ds { @@ -32635,7 +31489,7 @@ index 0000000..97d3f66 +}; + +//---------------------------------------------------------------------- -+// From linux-5.19-rc1/arch/loongarch/include/uapi/asm/ptrace.h ++// From linux-6.10-0/arch/loongarch/include/uapi/asm/ptrace.h +//---------------------------------------------------------------------- + +struct vki_user_pt_regs { @@ -32660,7 +31514,7 @@ index 0000000..97d3f66 +}; + +//---------------------------------------------------------------------- -+// From linux-5.19-rc1/include/uapi/asm-generic/errno.h ++// From linux-6.10-0/include/uapi/asm-generic/errno.h +//---------------------------------------------------------------------- + +#define VKI_ENOSYS 38 /* Invalid system call number */ @@ -32673,7 +31527,7 @@ index 0000000..97d3f66 +/*--------------------------------------------------------------------*/ diff --git a/include/vki/vki-posixtypes-loongarch64-linux.h b/include/vki/vki-posixtypes-loongarch64-linux.h new file mode 100644 -index 0000000..0282a2a +index 000000000000..e04bb2ecb0c7 --- /dev/null +++ b/include/vki/vki-posixtypes-loongarch64-linux.h @@ -0,0 +1,76 @@ @@ -32709,7 +31563,7 @@ index 0000000..0282a2a +#define __VKI_POSIXTYPES_LOONGARCH64_LINUX_H + +//---------------------------------------------------------------------- -+// From linux-5.19-rc1/include/uapi/asm-generic/posix_types.h ++// From linux-6.10-0/include/uapi/asm-generic/posix_types.h +//---------------------------------------------------------------------- + +typedef long __vki_kernel_long_t; @@ -32755,10 +31609,10 @@ index 0000000..0282a2a +/*--------------------------------------------------------------------*/ diff --git a/include/vki/vki-scnums-loongarch64-linux.h b/include/vki/vki-scnums-loongarch64-linux.h new file mode 100644 -index 0000000..b7ac621 +index 000000000000..ad81df7b6ac9 --- /dev/null +++ b/include/vki/vki-scnums-loongarch64-linux.h -@@ -0,0 +1,356 @@ +@@ -0,0 +1,330 @@ +/*--------------------------------------------------------------------*/ +/*--- System call numbers for loongarch-linux. ---*/ +/*--- vki-scnums-loongarch64-linux.h ---*/ @@ -32790,7 +31644,7 @@ index 0000000..b7ac621 +#define __VKI_SCNUMS_LOONGARCH64_LINUX_H + +//---------------------------------------------------------------------- -+// From linux-5.19-rc1/include/uapi/asm-generic/unistd.h ++// From linux-6.10-0/include/uapi/asm-generic/unistd.h +//---------------------------------------------------------------------- + +#define __NR_io_setup 0 @@ -32831,7 +31685,7 @@ index 0000000..b7ac621 +#define __NR_unlinkat 35 +#define __NR_symlinkat 36 +#define __NR_linkat 37 -+// #define __NR_renameat 38 ++#define __NR_renameat 38 +#define __NR_umount2 39 +#define __NR_mount 40 +#define __NR_pivot_root 41 @@ -32956,8 +31810,8 @@ index 0000000..b7ac621 +#define __NR_uname 160 +#define __NR_sethostname 161 +#define __NR_setdomainname 162 -+// #define __NR_getrlimit 163 -+// #define __NR_setrlimit 164 ++#define __NR_getrlimit 163 ++#define __NR_setrlimit 164 +#define __NR_getrusage 165 +#define __NR_umask 166 +#define __NR_prctl 167 @@ -33074,32 +31928,6 @@ index 0000000..b7ac621 +#define __NR_rseq 293 +#define __NR_kexec_file_load 294 + -+#define __NR_pidfd_send_signal 424 -+#define __NR_io_uring_setup 425 -+#define __NR_io_uring_enter 426 -+#define __NR_io_uring_register 427 -+#define __NR_open_tree 428 -+#define __NR_move_mount 429 -+#define __NR_fsopen 430 -+#define __NR_fsconfig 431 -+#define __NR_fsmount 432 -+#define __NR_fspick 433 -+#define __NR_pidfd_open 434 -+#define __NR_clone3 435 -+#define __NR_close_range 436 -+#define __NR_openat2 437 -+#define __NR_pidfd_getfd 438 -+#define __NR_faccessat2 439 -+#define __NR_process_madvise 440 -+#define __NR_epoll_pwait2 441 -+#define __NR_mount_setattr 442 -+#define __NR_quotactl_fd 443 -+#define __NR_landlock_create_ruleset 444 -+#define __NR_landlock_add_rule 445 -+#define __NR_landlock_restrict_self 446 -+// #define __NR_memfd_secret 447 -+#define __NR_process_mrelease 448 -+ +#define __NR_fcntl __NR3264_fcntl +#define __NR_statfs __NR3264_statfs +#define __NR_fstatfs __NR3264_fstatfs @@ -33115,124 +31943,8 @@ index 0000000..b7ac621 +/*--------------------------------------------------------------------*/ +/*--- end vki-scnums-loongarch64-linux.h ---*/ +/*--------------------------------------------------------------------*/ -diff --git a/lackey/Makefile.in b/lackey/Makefile.in -index f08a302..39e01ca 100644 ---- a/lackey/Makefile.in -+++ b/lackey/Makefile.in -@@ -621,6 +621,12 @@ AM_CFLAGS_PSO_MIPS64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ - $(AM_CFLAGS_PSO_BASE) - - AM_CCASFLAGS_MIPS64_LINUX = @FLAG_M64@ -g -+AM_FLAG_M3264_LOONGARCH64_LINUX = @FLAG_M64@ -+AM_CFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) -+AM_CFLAGS_PSO_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ -+ $(AM_CFLAGS_PSO_BASE) -+ -+AM_CCASFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ -g - AM_FLAG_M3264_X86_SOLARIS = @FLAG_M32@ - AM_CFLAGS_X86_SOLARIS = @FLAG_M32@ @PREFERRED_STACK_BOUNDARY_2@ \ - $(AM_CFLAGS_BASE) -fomit-frame-pointer @SOLARIS_UNDEF_LARGESOURCE@ -@@ -668,6 +674,7 @@ PRELOAD_LDFLAGS_S390X_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ - PRELOAD_LDFLAGS_MIPS32_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ - PRELOAD_LDFLAGS_NANOMIPS_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ - PRELOAD_LDFLAGS_MIPS64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ -+PRELOAD_LDFLAGS_LOONGARCH64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ - PRELOAD_LDFLAGS_X86_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M32@ - PRELOAD_LDFLAGS_AMD64_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M64@ - -@@ -758,6 +765,10 @@ TOOL_LDFLAGS_MIPS64_LINUX = \ - -static -nodefaultlibs -nostartfiles -u __start @FLAG_NO_BUILD_ID@ \ - @FLAG_M64@ - -+TOOL_LDFLAGS_LOONGARCH64_LINUX = \ -+ -static -nodefaultlibs -nostartfiles -u __start @FLAG_NO_BUILD_ID@ \ -+ @FLAG_M64@ -+ - TOOL_LDFLAGS_X86_SOLARIS = \ - $(TOOL_LDFLAGS_COMMON_SOLARIS) @FLAG_M32@ - -@@ -818,6 +829,9 @@ LIBREPLACEMALLOC_MIPS32_LINUX = \ - LIBREPLACEMALLOC_MIPS64_LINUX = \ - $(top_builddir)/coregrind/libreplacemalloc_toolpreload-mips64-linux.a - -+LIBREPLACEMALLOC_LOONGARCH64_LINUX = \ -+ $(top_builddir)/coregrind/libreplacemalloc_toolpreload-loongarch64-linux.a -+ - LIBREPLACEMALLOC_X86_SOLARIS = \ - $(top_builddir)/coregrind/libreplacemalloc_toolpreload-x86-solaris.a - -@@ -890,6 +904,11 @@ LIBREPLACEMALLOC_LDFLAGS_MIPS64_LINUX = \ - $(LIBREPLACEMALLOC_MIPS64_LINUX) \ - -Wl,--no-whole-archive - -+LIBREPLACEMALLOC_LDFLAGS_LOONGARCH64_LINUX = \ -+ -Wl,--whole-archive \ -+ $(LIBREPLACEMALLOC_LOONGARCH64_LINUX) \ -+ -Wl,--no-whole-archive -+ - LIBREPLACEMALLOC_LDFLAGS_X86_SOLARIS = \ - -Wl,--whole-archive \ - $(LIBREPLACEMALLOC_X86_SOLARIS) \ -diff --git a/massif/Makefile.in b/massif/Makefile.in -index ddedba7..8f983c1 100644 ---- a/massif/Makefile.in -+++ b/massif/Makefile.in -@@ -676,6 +676,12 @@ AM_CFLAGS_PSO_MIPS64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ - $(AM_CFLAGS_PSO_BASE) - - AM_CCASFLAGS_MIPS64_LINUX = @FLAG_M64@ -g -+AM_FLAG_M3264_LOONGARCH64_LINUX = @FLAG_M64@ -+AM_CFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) -+AM_CFLAGS_PSO_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ -+ $(AM_CFLAGS_PSO_BASE) -+ -+AM_CCASFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ -g - AM_FLAG_M3264_X86_SOLARIS = @FLAG_M32@ - AM_CFLAGS_X86_SOLARIS = @FLAG_M32@ @PREFERRED_STACK_BOUNDARY_2@ \ - $(AM_CFLAGS_BASE) -fomit-frame-pointer @SOLARIS_UNDEF_LARGESOURCE@ -@@ -723,6 +729,7 @@ PRELOAD_LDFLAGS_S390X_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ - PRELOAD_LDFLAGS_MIPS32_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ - PRELOAD_LDFLAGS_NANOMIPS_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ - PRELOAD_LDFLAGS_MIPS64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ -+PRELOAD_LDFLAGS_LOONGARCH64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ - PRELOAD_LDFLAGS_X86_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M32@ - PRELOAD_LDFLAGS_AMD64_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M64@ - -@@ -813,6 +820,10 @@ TOOL_LDFLAGS_MIPS64_LINUX = \ - -static -nodefaultlibs -nostartfiles -u __start @FLAG_NO_BUILD_ID@ \ - @FLAG_M64@ - -+TOOL_LDFLAGS_LOONGARCH64_LINUX = \ -+ -static -nodefaultlibs -nostartfiles -u __start @FLAG_NO_BUILD_ID@ \ -+ @FLAG_M64@ -+ - TOOL_LDFLAGS_X86_SOLARIS = \ - $(TOOL_LDFLAGS_COMMON_SOLARIS) @FLAG_M32@ - -@@ -873,6 +884,9 @@ LIBREPLACEMALLOC_MIPS32_LINUX = \ - LIBREPLACEMALLOC_MIPS64_LINUX = \ - $(top_builddir)/coregrind/libreplacemalloc_toolpreload-mips64-linux.a - -+LIBREPLACEMALLOC_LOONGARCH64_LINUX = \ -+ $(top_builddir)/coregrind/libreplacemalloc_toolpreload-loongarch64-linux.a -+ - LIBREPLACEMALLOC_X86_SOLARIS = \ - $(top_builddir)/coregrind/libreplacemalloc_toolpreload-x86-solaris.a - -@@ -945,6 +959,11 @@ LIBREPLACEMALLOC_LDFLAGS_MIPS64_LINUX = \ - $(LIBREPLACEMALLOC_MIPS64_LINUX) \ - -Wl,--no-whole-archive - -+LIBREPLACEMALLOC_LDFLAGS_LOONGARCH64_LINUX = \ -+ -Wl,--whole-archive \ -+ $(LIBREPLACEMALLOC_LOONGARCH64_LINUX) \ -+ -Wl,--no-whole-archive -+ - LIBREPLACEMALLOC_LDFLAGS_X86_SOLARIS = \ - -Wl,--whole-archive \ - $(LIBREPLACEMALLOC_X86_SOLARIS) \ diff --git a/massif/tests/Makefile.am b/massif/tests/Makefile.am -index 636bc8f..b16d73d 100644 +index ab781fa93319..43498f50be8d 100644 --- a/massif/tests/Makefile.am +++ b/massif/tests/Makefile.am @@ -11,6 +11,7 @@ EXTRA_DIST = \ @@ -33243,42 +31955,9 @@ index 636bc8f..b16d73d 100644 bug469146.post.exp bug469146.stderr.exp bug469146.vgtest \ deep-A.post.exp deep-A.stderr.exp deep-A.vgtest \ deep-B.post.exp deep-B.stderr.exp deep-B.vgtest \ -diff --git a/massif/tests/Makefile.in b/massif/tests/Makefile.in -index 0e20293..3ee79f4 100644 ---- a/massif/tests/Makefile.in -+++ b/massif/tests/Makefile.in -@@ -717,6 +717,12 @@ AM_CFLAGS_PSO_MIPS64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ - $(AM_CFLAGS_PSO_BASE) - - AM_CCASFLAGS_MIPS64_LINUX = @FLAG_M64@ -g -+AM_FLAG_M3264_LOONGARCH64_LINUX = @FLAG_M64@ -+AM_CFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) -+AM_CFLAGS_PSO_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ -+ $(AM_CFLAGS_PSO_BASE) -+ -+AM_CCASFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ -g - AM_FLAG_M3264_X86_SOLARIS = @FLAG_M32@ - AM_CFLAGS_X86_SOLARIS = @FLAG_M32@ @PREFERRED_STACK_BOUNDARY_2@ \ - $(AM_CFLAGS_BASE) -fomit-frame-pointer @SOLARIS_UNDEF_LARGESOURCE@ -@@ -764,6 +770,7 @@ PRELOAD_LDFLAGS_S390X_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ - PRELOAD_LDFLAGS_MIPS32_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ - PRELOAD_LDFLAGS_NANOMIPS_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ - PRELOAD_LDFLAGS_MIPS64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ -+PRELOAD_LDFLAGS_LOONGARCH64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ - PRELOAD_LDFLAGS_X86_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M32@ - PRELOAD_LDFLAGS_AMD64_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M64@ - AM_CPPFLAGS = -I$(top_srcdir) -I$(top_srcdir)/include \ -@@ -795,6 +802,7 @@ EXTRA_DIST = \ - big-alloc.post.exp big-alloc.post.exp-64bit big-alloc.post.exp-ppc64 \ - big-alloc.stderr.exp big-alloc.vgtest \ - big-alloc.post.exp-x86-freebsd \ -+ big-alloc.post.exp-loongarch64 \ - bug469146.post.exp bug469146.stderr.exp bug469146.vgtest \ - deep-A.post.exp deep-A.stderr.exp deep-A.vgtest \ - deep-B.post.exp deep-B.stderr.exp deep-B.vgtest \ diff --git a/massif/tests/big-alloc.post.exp-loongarch64 b/massif/tests/big-alloc.post.exp-loongarch64 new file mode 100644 -index 0000000..4dac2a6 +index 000000000000..4dac2a68a3d9 --- /dev/null +++ b/massif/tests/big-alloc.post.exp-loongarch64 @@ -0,0 +1,54 @@ @@ -33336,69 +32015,11 @@ index 0000000..4dac2a6 + n time(B) total(B) useful-heap(B) extra-heap(B) stacks(B) +-------------------------------------------------------------------------------- + 10 105,020,880 105,020,880 104,857,600 163,280 0 -diff --git a/memcheck/Makefile.in b/memcheck/Makefile.in -index 39b34c9..cc8fd2b 100644 ---- a/memcheck/Makefile.in -+++ b/memcheck/Makefile.in -@@ -709,6 +709,12 @@ AM_CFLAGS_PSO_MIPS64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ - $(AM_CFLAGS_PSO_BASE) - - AM_CCASFLAGS_MIPS64_LINUX = @FLAG_M64@ -g -+AM_FLAG_M3264_LOONGARCH64_LINUX = @FLAG_M64@ -+AM_CFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) -+AM_CFLAGS_PSO_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ -+ $(AM_CFLAGS_PSO_BASE) -+ -+AM_CCASFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ -g - AM_FLAG_M3264_X86_SOLARIS = @FLAG_M32@ - AM_CFLAGS_X86_SOLARIS = @FLAG_M32@ @PREFERRED_STACK_BOUNDARY_2@ \ - $(AM_CFLAGS_BASE) -fomit-frame-pointer @SOLARIS_UNDEF_LARGESOURCE@ -@@ -756,6 +762,7 @@ PRELOAD_LDFLAGS_S390X_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ - PRELOAD_LDFLAGS_MIPS32_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ - PRELOAD_LDFLAGS_NANOMIPS_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ - PRELOAD_LDFLAGS_MIPS64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ -+PRELOAD_LDFLAGS_LOONGARCH64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ - PRELOAD_LDFLAGS_X86_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M32@ - PRELOAD_LDFLAGS_AMD64_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M64@ - -@@ -846,6 +853,10 @@ TOOL_LDFLAGS_MIPS64_LINUX = \ - -static -nodefaultlibs -nostartfiles -u __start @FLAG_NO_BUILD_ID@ \ - @FLAG_M64@ - -+TOOL_LDFLAGS_LOONGARCH64_LINUX = \ -+ -static -nodefaultlibs -nostartfiles -u __start @FLAG_NO_BUILD_ID@ \ -+ @FLAG_M64@ -+ - TOOL_LDFLAGS_X86_SOLARIS = \ - $(TOOL_LDFLAGS_COMMON_SOLARIS) @FLAG_M32@ - -@@ -906,6 +917,9 @@ LIBREPLACEMALLOC_MIPS32_LINUX = \ - LIBREPLACEMALLOC_MIPS64_LINUX = \ - $(top_builddir)/coregrind/libreplacemalloc_toolpreload-mips64-linux.a - -+LIBREPLACEMALLOC_LOONGARCH64_LINUX = \ -+ $(top_builddir)/coregrind/libreplacemalloc_toolpreload-loongarch64-linux.a -+ - LIBREPLACEMALLOC_X86_SOLARIS = \ - $(top_builddir)/coregrind/libreplacemalloc_toolpreload-x86-solaris.a - -@@ -978,6 +992,11 @@ LIBREPLACEMALLOC_LDFLAGS_MIPS64_LINUX = \ - $(LIBREPLACEMALLOC_MIPS64_LINUX) \ - -Wl,--no-whole-archive - -+LIBREPLACEMALLOC_LDFLAGS_LOONGARCH64_LINUX = \ -+ -Wl,--whole-archive \ -+ $(LIBREPLACEMALLOC_LOONGARCH64_LINUX) \ -+ -Wl,--no-whole-archive -+ - LIBREPLACEMALLOC_LDFLAGS_X86_SOLARIS = \ - -Wl,--whole-archive \ - $(LIBREPLACEMALLOC_X86_SOLARIS) \ diff --git a/memcheck/mc_machine.c b/memcheck/mc_machine.c -index 176c8e5..49f9894 100644 +index 34df0011ac8b..c8d04f437065 100644 --- a/memcheck/mc_machine.c +++ b/memcheck/mc_machine.c -@@ -1394,6 +1394,118 @@ static Int get_otrack_shadow_offset_wrk ( Int offset, Int szB ) +@@ -1493,6 +1493,119 @@ static Int get_otrack_shadow_offset_wrk ( Int offset, Int szB ) offset,szB); tl_assert(0); # undef GOF @@ -33511,13 +32132,14 @@ index 176c8e5..49f9894 100644 + if (o == GOF(LLSC_DATA) && is48) return -1; /* slot unused */ + + VG_(printf)("MC_(get_otrack_shadow_offset)(loongarch64)(off=%d,sz=%d)\n", -+ offset,szB); ++ offset, szB); + tl_assert(0); +# undef GOF - # undef SZB ++# undef SZB # else -@@ -1517,6 +1629,13 @@ IRType MC_(get_otrack_reg_array_equiv_int_type) ( IRRegArray* arr ) + # error "FIXME: not implemented for this architecture" +@@ -1622,6 +1735,13 @@ IRType MC_(get_otrack_reg_array_equiv_int_type) ( IRRegArray* arr ) VG_(printf)("\n"); tl_assert(0); @@ -33532,10 +32154,40 @@ index 176c8e5..49f9894 100644 # error "FIXME: not implemented for this architecture" # endif diff --git a/memcheck/mc_translate.c b/memcheck/mc_translate.c -index ec8ac53..fa58fc5 100644 +index 05e6d59afa51..b81c420d3951 100644 --- a/memcheck/mc_translate.c +++ b/memcheck/mc_translate.c -@@ -3505,6 +3505,7 @@ IRAtom* expr2vbits_Triop ( MCEnv* mce, +@@ -3252,6 +3252,29 @@ IRAtom* vectorWidenI64 ( MCEnv* mce, IROp longen_op, + return at2; + } + ++static ++IRAtom* vectorWidenUnV128 ( MCEnv* mce, IROp longen_op, ++ IRAtom* vatom1) ++{ ++ IRAtom *at1, *at2; ++ IRAtom* (*pcast)( MCEnv*, IRAtom* ); ++ switch (longen_op) { ++ case Iop_WidenHIto16Sx8: pcast = mkPCast16x8; break; ++ case Iop_WidenHIto16Ux8: pcast = mkPCast16x8; break; ++ case Iop_WidenHIto32Sx4: pcast = mkPCast32x4; break; ++ case Iop_WidenHIto32Ux4: pcast = mkPCast32x4; break; ++ case Iop_WidenHIto64Sx2: pcast = mkPCast64x2; break; ++ case Iop_WidenHIto64Ux2: pcast = mkPCast64x2; break; ++ case Iop_WidenHIto128Sx1: pcast = mkPCast128x1; break; ++ case Iop_WidenHIto128Ux1: pcast = mkPCast128x1; break; ++ default: VG_(tool_panic)("vectorWidenUnV128"); ++ } ++ tl_assert(isShadowAtom(mce,vatom1)); ++ at1 = assignNew('V', mce, Ity_V128, unop(longen_op, vatom1)); ++ at2 = assignNew('V', mce, Ity_V128, pcast(mce, at1)); ++ return at2; ++} ++ + + /* --- --- Vector integer arithmetic --- --- */ + +@@ -3505,6 +3528,7 @@ IRAtom* expr2vbits_Triop ( MCEnv* mce, case Iop_MulD64: case Iop_MulF64r32: case Iop_DivF64: @@ -33543,7 +32195,7 @@ index ec8ac53..fa58fc5 100644 case Iop_DivD64: case Iop_DivF64r32: case Iop_ScaleF64: -@@ -3524,6 +3525,7 @@ IRAtom* expr2vbits_Triop ( MCEnv* mce, +@@ -3524,6 +3548,7 @@ IRAtom* expr2vbits_Triop ( MCEnv* mce, case Iop_SubF32: case Iop_MulF32: case Iop_DivF32: @@ -33551,7 +32203,7 @@ index ec8ac53..fa58fc5 100644 /* I32(rm) x F32 x F32 -> I32 */ return mkLazy3(mce, Ity_I32, vatom1, vatom2, vatom3); case Iop_AddF16: -@@ -4532,6 +4534,8 @@ IRAtom* expr2vbits_Binop ( MCEnv* mce, +@@ -4532,6 +4557,8 @@ IRAtom* expr2vbits_Binop ( MCEnv* mce, case Iop_TanF64: case Iop_2xm1F64: case Iop_SqrtF64: @@ -33560,7 +32212,7 @@ index ec8ac53..fa58fc5 100644 case Iop_RecpExpF64: /* I32(rm) x I64/F64 -> I64/F64 */ return mkLazy2(mce, Ity_I64, vatom1, vatom2); -@@ -4593,6 +4597,8 @@ IRAtom* expr2vbits_Binop ( MCEnv* mce, +@@ -4593,6 +4620,8 @@ IRAtom* expr2vbits_Binop ( MCEnv* mce, case Iop_RoundF32toInt: case Iop_SqrtF32: @@ -33569,7 +32221,7 @@ index ec8ac53..fa58fc5 100644 case Iop_RecpExpF32: /* I32(rm) x I32/F32 -> I32/F32 */ return mkLazy2(mce, Ity_I32, vatom1, vatom2); -@@ -4675,11 +4681,15 @@ IRAtom* expr2vbits_Binop ( MCEnv* mce, +@@ -4675,11 +4704,15 @@ IRAtom* expr2vbits_Binop ( MCEnv* mce, case Iop_MaxNumF32: case Iop_MinNumF32: @@ -33585,7 +32237,7 @@ index ec8ac53..fa58fc5 100644 /* F64 x F64 -> F64 */ return mkLazy2(mce, Ity_I64, vatom1, vatom2); -@@ -5026,6 +5036,10 @@ IRAtom* expr2vbits_Binop ( MCEnv* mce, +@@ -5026,6 +5059,10 @@ IRAtom* expr2vbits_Binop ( MCEnv* mce, case Iop_Add64x4: case Iop_CmpEQ64x4: case Iop_CmpGT64Sx4: @@ -33596,7 +32248,35 @@ index ec8ac53..fa58fc5 100644 return binary64Ix4(mce, vatom1, vatom2); case Iop_I32StoF32x8: -@@ -8763,6 +8777,9 @@ IRSB* MC_(instrument) ( VgCallbackClosure* closure, +@@ -5160,6 +5197,10 @@ IRExpr* expr2vbits_Unop ( MCEnv* mce, IROp op, IRAtom* atom ) + case Iop_RSqrtEst64Fx2: + case Iop_RecipEst64Fx2: + case Iop_Log2_64Fx2: ++ case Iop_RoundF64x2_RM: ++ case Iop_RoundF64x2_RP: ++ case Iop_RoundF64x2_RN: ++ case Iop_RoundF64x2_RZ: + return unary64Fx2(mce, vatom); + + case Iop_Sqrt64F0x2: +@@ -5504,6 +5545,16 @@ IRExpr* expr2vbits_Unop ( MCEnv* mce, IROp op, IRAtom* atom ) + case Iop_Widen32Uto64x2: + return vectorWidenI64(mce, op, vatom); + ++ case Iop_WidenHIto16Sx8: ++ case Iop_WidenHIto32Sx4: ++ case Iop_WidenHIto64Sx2: ++ case Iop_WidenHIto128Sx1: ++ case Iop_WidenHIto16Ux8: ++ case Iop_WidenHIto32Ux4: ++ case Iop_WidenHIto64Ux2: ++ case Iop_WidenHIto128Ux1: ++ return vectorWidenUnV128(mce, op, vatom); ++ + case Iop_F16toF32x4: + // JRS 2019 Mar 17: this definitely isn't right, but it probably works + // OK by accident if -- as seems likely -- the F16 to F32 conversion +@@ -8767,6 +8818,9 @@ IRSB* MC_(instrument) ( VgCallbackClosure* closure, mce.dlbo.dl_CmpEQ64_CmpNE64 = DLexpensive; # elif defined(VGA_arm) mce.dlbo.dl_CmpEQ32_CmpNE32 = DLexpensive; @@ -33607,12 +32287,12 @@ index ec8ac53..fa58fc5 100644 /* preInstrumentationAnalysis() will allocate &mce.tmpHowUsed and then diff --git a/memcheck/tests/Makefile.am b/memcheck/tests/Makefile.am -index 47b5384..c9710e9 100644 +index bdaa9d761e61..9c7b37957b8e 100644 --- a/memcheck/tests/Makefile.am +++ b/memcheck/tests/Makefile.am -@@ -50,6 +50,9 @@ endif - if VGCONF_PLATFORMS_INCLUDE_ARM64_LINUX - SUBDIRS += arm64-linux +@@ -56,6 +56,9 @@ endif + if VGCONF_PLATFORMS_INCLUDE_RISCV64_LINUX + SUBDIRS += riscv64-linux endif +if VGCONF_PLATFORMS_INCLUDE_LOONGARCH64_LINUX +SUBDIRS += loongarch64-linux @@ -33620,309 +32300,32 @@ index 47b5384..c9710e9 100644 if VGCONF_PLATFORMS_INCLUDE_X86_SOLARIS SUBDIRS += x86-solaris endif -@@ -65,7 +68,7 @@ endif - - DIST_SUBDIRS = x86 amd64 ppc32 ppc64 s390x linux \ - darwin solaris x86-linux amd64-linux arm64-linux \ -- x86-solaris amd64-solaris mips32 mips64 \ -+ loongarch64-linux x86-solaris amd64-solaris mips32 mips64 \ - freebsd amd64-freebsd x86-freebsd \ - common . - -diff --git a/memcheck/tests/Makefile.in b/memcheck/tests/Makefile.in -index f992408..3fe71b6 100644 ---- a/memcheck/tests/Makefile.in -+++ b/memcheck/tests/Makefile.in -@@ -145,10 +145,11 @@ host_triplet = @host@ - @VGCONF_PLATFORMS_INCLUDE_X86_LINUX_TRUE@am__append_23 = x86-linux - @VGCONF_PLATFORMS_INCLUDE_AMD64_LINUX_TRUE@am__append_24 = amd64-linux - @VGCONF_PLATFORMS_INCLUDE_ARM64_LINUX_TRUE@am__append_25 = arm64-linux --@VGCONF_PLATFORMS_INCLUDE_X86_SOLARIS_TRUE@am__append_26 = x86-solaris --@VGCONF_PLATFORMS_INCLUDE_AMD64_SOLARIS_TRUE@am__append_27 = amd64-solaris --@VGCONF_PLATFORMS_INCLUDE_X86_FREEBSD_TRUE@am__append_28 = x86-freebsd --@VGCONF_PLATFORMS_INCLUDE_AMD64_FREEBSD_TRUE@am__append_29 = amd64-freebsd -+@VGCONF_PLATFORMS_INCLUDE_LOONGARCH64_LINUX_TRUE@am__append_26 = loongarch64-linux -+@VGCONF_PLATFORMS_INCLUDE_X86_SOLARIS_TRUE@am__append_27 = x86-solaris -+@VGCONF_PLATFORMS_INCLUDE_AMD64_SOLARIS_TRUE@am__append_28 = amd64-solaris -+@VGCONF_PLATFORMS_INCLUDE_X86_FREEBSD_TRUE@am__append_29 = x86-freebsd -+@VGCONF_PLATFORMS_INCLUDE_AMD64_FREEBSD_TRUE@am__append_30 = amd64-freebsd - check_PROGRAMS = accounting$(EXEEXT) addressable$(EXEEXT) \ - atomic_incs$(EXEEXT) badaddrvalue$(EXEEXT) badfree$(EXEEXT) \ - badjump$(EXEEXT) badjump2$(EXEEXT) badloop$(EXEEXT) \ -@@ -215,31 +216,31 @@ check_PROGRAMS = accounting$(EXEEXT) addressable$(EXEEXT) \ - $(am__EXEEXT_9) $(am__EXEEXT_10) - - # Sun Studio assembler fails on "IDENT too long" --@SOLARIS_SUN_STUDIO_AS_FALSE@am__append_30 = long_namespace_xml --@DWARF4_TRUE@am__append_31 = dw4 --@GZ_ZLIB_TRUE@am__append_32 = cdebug_zlib --@GZ_ZLIB_GNU_TRUE@am__append_33 = cdebug_zlib_gnu --@HAVE_ALIGNED_CXX_ALLOC_TRUE@am__append_34 = cxx17_aligned_new sized_aligned_new_delete_args \ -+@SOLARIS_SUN_STUDIO_AS_FALSE@am__append_31 = long_namespace_xml -+@DWARF4_TRUE@am__append_32 = dw4 -+@GZ_ZLIB_TRUE@am__append_33 = cdebug_zlib -+@GZ_ZLIB_GNU_TRUE@am__append_34 = cdebug_zlib_gnu -+@HAVE_ALIGNED_CXX_ALLOC_TRUE@am__append_35 = cxx17_aligned_new sized_aligned_new_delete_args \ - @HAVE_ALIGNED_CXX_ALLOC_TRUE@ new_aligned_delete_default \ - @HAVE_ALIGNED_CXX_ALLOC_TRUE@ sized_aligned_new_delete_misaligned1 \ - @HAVE_ALIGNED_CXX_ALLOC_TRUE@ sized_aligned_new_delete_misaligned2 \ - @HAVE_ALIGNED_CXX_ALLOC_TRUE@ sized_aligned_new_delete_misaligned3 - --@HAVE_PTHREAD_BARRIER_TRUE@am__append_35 = reach_thread_register --@HAVE_FSIZED_DEALLOCATION_TRUE@am__append_36 = sized_delete new_delete_mismatch_size --@HAVE_GNU_STPNCPY_TRUE@am__append_37 = stpncpy --@HAVE_PTHREAD_SETNAME_NP_TRUE@am__append_38 = threadname -+@HAVE_PTHREAD_BARRIER_TRUE@am__append_36 = reach_thread_register -+@HAVE_FSIZED_DEALLOCATION_TRUE@am__append_37 = sized_delete new_delete_mismatch_size -+@HAVE_GNU_STPNCPY_TRUE@am__append_38 = stpncpy -+@HAVE_PTHREAD_SETNAME_NP_TRUE@am__append_39 = threadname +@@ -71,7 +74,7 @@ endif - # are there still pre-C99 C compilers? --@HAVE_WCSNCPY_TRUE@am__append_39 = wcsncpy --@COMPILER_IS_CLANG_TRUE@@HAVE_ALIGNED_CXX_ALLOC_TRUE@am__append_40 = -fsized-deallocation -+@HAVE_WCSNCPY_TRUE@am__append_40 = wcsncpy - @COMPILER_IS_CLANG_TRUE@@HAVE_ALIGNED_CXX_ALLOC_TRUE@am__append_41 = -fsized-deallocation - @COMPILER_IS_CLANG_TRUE@@HAVE_ALIGNED_CXX_ALLOC_TRUE@am__append_42 = -fsized-deallocation - @COMPILER_IS_CLANG_TRUE@@HAVE_ALIGNED_CXX_ALLOC_TRUE@am__append_43 = -fsized-deallocation - @COMPILER_IS_CLANG_TRUE@@HAVE_ALIGNED_CXX_ALLOC_TRUE@am__append_44 = -fsized-deallocation --@VGCONF_OS_IS_SOLARIS_TRUE@am__append_45 = -D_XOPEN_SOURCE=600 --@VGCONF_OS_IS_SOLARIS_TRUE@am__append_46 = -D__EXTENSIONS__ --@VGCONF_OS_IS_SOLARIS_TRUE@am__append_47 = -D_XOPEN_SOURCE=600 -+@COMPILER_IS_CLANG_TRUE@@HAVE_ALIGNED_CXX_ALLOC_TRUE@am__append_45 = -fsized-deallocation -+@VGCONF_OS_IS_SOLARIS_TRUE@am__append_46 = -D_XOPEN_SOURCE=600 -+@VGCONF_OS_IS_SOLARIS_TRUE@am__append_47 = -D__EXTENSIONS__ -+@VGCONF_OS_IS_SOLARIS_TRUE@am__append_48 = -D_XOPEN_SOURCE=600 - subdir = memcheck/tests - ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 - am__aclocal_m4_deps = $(top_srcdir)/configure.ac -@@ -1687,6 +1688,12 @@ AM_CFLAGS_PSO_MIPS64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ - $(AM_CFLAGS_PSO_BASE) - - AM_CCASFLAGS_MIPS64_LINUX = @FLAG_M64@ -g -+AM_FLAG_M3264_LOONGARCH64_LINUX = @FLAG_M64@ -+AM_CFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) -+AM_CFLAGS_PSO_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ -+ $(AM_CFLAGS_PSO_BASE) -+ -+AM_CCASFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ -g - AM_FLAG_M3264_X86_SOLARIS = @FLAG_M32@ - AM_CFLAGS_X86_SOLARIS = @FLAG_M32@ @PREFERRED_STACK_BOUNDARY_2@ \ - $(AM_CFLAGS_BASE) -fomit-frame-pointer @SOLARIS_UNDEF_LARGESOURCE@ -@@ -1734,6 +1741,7 @@ PRELOAD_LDFLAGS_S390X_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ - PRELOAD_LDFLAGS_MIPS32_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ - PRELOAD_LDFLAGS_NANOMIPS_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ - PRELOAD_LDFLAGS_MIPS64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ -+PRELOAD_LDFLAGS_LOONGARCH64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ - PRELOAD_LDFLAGS_X86_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M32@ - PRELOAD_LDFLAGS_AMD64_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M64@ - AM_CPPFLAGS = -I$(top_srcdir) -I$(top_srcdir)/include \ -@@ -1761,10 +1769,11 @@ SUBDIRS = . $(am__append_12) $(am__append_13) $(am__append_14) \ - $(am__append_18) $(am__append_19) $(am__append_20) \ - $(am__append_21) $(am__append_22) $(am__append_23) \ - $(am__append_24) $(am__append_25) $(am__append_26) \ -- $(am__append_27) $(am__append_28) $(am__append_29) -+ $(am__append_27) $(am__append_28) $(am__append_29) \ -+ $(am__append_30) - DIST_SUBDIRS = x86 amd64 ppc32 ppc64 s390x linux \ - darwin solaris x86-linux amd64-linux arm64-linux \ + DIST_SUBDIRS = x86 amd64 arm64 ppc32 ppc64 s390x linux \ + darwin solaris x86-linux amd64-linux arm64-linux riscv64-linux \ - x86-solaris amd64-solaris mips32 mips64 \ + loongarch64-linux x86-solaris amd64-solaris mips32 mips64 \ freebsd amd64-freebsd x86-freebsd \ common . -@@ -2174,27 +2183,27 @@ bug340392_CFLAGS = $(AM_CFLAGS) -O3 @FLAG_W_NO_MAYBE_UNINITIALIZED@ - @HAVE_ALIGNED_CXX_ALLOC_TRUE@cxx17_aligned_new_SOURCES = cxx17_aligned_new.cpp - @HAVE_ALIGNED_CXX_ALLOC_TRUE@cxx17_aligned_new_CXXFLAGS = -std=c++17 \ - @HAVE_ALIGNED_CXX_ALLOC_TRUE@ @FLAG_W_NO_MISMATCHED_NEW_DELETE@ \ --@HAVE_ALIGNED_CXX_ALLOC_TRUE@ $(am__append_40) -+@HAVE_ALIGNED_CXX_ALLOC_TRUE@ $(am__append_41) - @HAVE_ALIGNED_CXX_ALLOC_TRUE@new_aligned_delete_default_SOURCES = new_aligned_delete_default.cpp - @HAVE_ALIGNED_CXX_ALLOC_TRUE@new_aligned_delete_default_CXXFLAGS = ${AM_CXXFLAGS} -std=c++17 - @HAVE_ALIGNED_CXX_ALLOC_TRUE@sized_aligned_new_delete_args_SOURCES = sized_aligned_new_delete_args.cpp - @HAVE_ALIGNED_CXX_ALLOC_TRUE@sized_aligned_new_delete_args_CXXFLAGS = \ - @HAVE_ALIGNED_CXX_ALLOC_TRUE@ ${AM_CXXFLAGS} -std=c++17 \ --@HAVE_ALIGNED_CXX_ALLOC_TRUE@ $(am__append_41) -+@HAVE_ALIGNED_CXX_ALLOC_TRUE@ $(am__append_42) - @HAVE_ALIGNED_CXX_ALLOC_TRUE@sized_aligned_new_delete_misaligned1_SOURCES = sized_aligned_new_delete_misaligned1.cpp - @HAVE_ALIGNED_CXX_ALLOC_TRUE@sized_aligned_new_delete_misaligned1_CXXFLAGS = \ - @HAVE_ALIGNED_CXX_ALLOC_TRUE@ ${AM_CXXFLAGS} -std=c++17 \ --@HAVE_ALIGNED_CXX_ALLOC_TRUE@ $(am__append_42) -+@HAVE_ALIGNED_CXX_ALLOC_TRUE@ $(am__append_43) - @HAVE_ALIGNED_CXX_ALLOC_TRUE@sized_aligned_new_delete_misaligned2_SOURCES = sized_aligned_new_delete_misaligned2.cpp - @HAVE_ALIGNED_CXX_ALLOC_TRUE@sized_aligned_new_delete_misaligned2_CXXFLAGS = \ - @HAVE_ALIGNED_CXX_ALLOC_TRUE@ ${AM_CXXFLAGS} -std=c++17 \ - @HAVE_ALIGNED_CXX_ALLOC_TRUE@ @FLAG_W_NO_UNUSED_VARIABLE@ \ --@HAVE_ALIGNED_CXX_ALLOC_TRUE@ $(am__append_43) -+@HAVE_ALIGNED_CXX_ALLOC_TRUE@ $(am__append_44) - @HAVE_ALIGNED_CXX_ALLOC_TRUE@sized_aligned_new_delete_misaligned3_SOURCES = sized_aligned_new_delete_misaligned3.cpp - @HAVE_ALIGNED_CXX_ALLOC_TRUE@sized_aligned_new_delete_misaligned3_CXXFLAGS = \ - @HAVE_ALIGNED_CXX_ALLOC_TRUE@ ${AM_CXXFLAGS} -std=c++17 \ - @HAVE_ALIGNED_CXX_ALLOC_TRUE@ @FLAG_W_NO_UNUSED_VARIABLE@ \ --@HAVE_ALIGNED_CXX_ALLOC_TRUE@ $(am__append_44) -+@HAVE_ALIGNED_CXX_ALLOC_TRUE@ $(am__append_45) - demangle_SOURCES = demangle.cpp - demangle_rust_SOURCES = demangle-rust.c - demangle_rust_CFLAGS = $(AM_CFLAGS) @FLAG_W_NO_USE_AFTER_FREE@ -@@ -2202,7 +2211,7 @@ dw4_CFLAGS = $(AM_CFLAGS) -gdwarf-4 -fdebug-types-section - descr_belowsp_LDADD = -lpthread - err_disable3_LDADD = -lpthread - err_disable4_LDADD = -lpthread --err_disable4_CFLAGS = $(AM_CFLAGS) $(am__append_45) -+err_disable4_CFLAGS = $(AM_CFLAGS) $(am__append_46) - error_counts_CFLAGS = $(AM_CFLAGS) @FLAG_W_NO_UNINITIALIZED@ @FLAG_W_NO_UNUSED_BUT_SET_VARIABLE@ - execve1_CFLAGS = $(AM_CFLAGS) @FLAG_W_NO_NONNULL@ - execve2_CFLAGS = $(AM_CFLAGS) @FLAG_W_NO_NONNULL@ -@@ -2217,7 +2226,7 @@ malloc1_CFLAGS = $(AM_CFLAGS) @FLAG_W_NO_USE_AFTER_FREE@ - manuel1_CFLAGS = $(AM_CFLAGS) @FLAG_W_NO_UNINITIALIZED@ - manuel3_CFLAGS = $(AM_CFLAGS) @FLAG_W_NO_UNINITIALIZED@ - memalign2_CFLAGS = $(AM_CFLAGS) @FLAG_W_NO_NON_POWER_OF_TWO_ALIGNMENT@ \ -- $(am__append_46) -+ $(am__append_47) - memcmptest_CFLAGS = $(AM_CFLAGS) -fno-builtin-memcmp - mismatches_SOURCES = mismatches.cpp - mismatches_CXXFLAGS = $(AM_CXXFLAGS) @FLAG_W_NO_MISMATCHED_NEW_DELETE@ -@@ -2250,7 +2259,7 @@ realloc_size_zero_CFLAGS = $(AM_CFLAGS) @FLAG_W_NO_INCOMPATIBLE_POINTER_TYPES_DI - realloc_size_zero_mismatch_SOURCES = realloc_size_zero_mismatch.cpp - realloc_size_zero_mismatch_CXXFLAGS = $(AM_CXXFLAGS) @FLAG_W_NO_MISMATCHED_NEW_DELETE@ - resvn_stack_CFLAGS = $(AM_CFLAGS) @FLAG_W_NO_UNINITIALIZED@ --sendmsg_CFLAGS = $(AM_CFLAGS) $(am__append_47) -+sendmsg_CFLAGS = $(AM_CFLAGS) $(am__append_48) - @VGCONF_OS_IS_SOLARIS_TRUE@sendmsg_LDADD = -lsocket -lnsl - @HAVE_FSIZED_DEALLOCATION_TRUE@sized_delete_SOURCES = sized_delete.cpp - @HAVE_FSIZED_DEALLOCATION_TRUE@sized_delete_CXXFLAGS = $(AM_CXXFLAGS) @FLAG_FSIZED_DEALLOCATION@ -diff --git a/memcheck/tests/amd64-freebsd/Makefile.in b/memcheck/tests/amd64-freebsd/Makefile.in -index 2d1b884..5fa1665 100644 ---- a/memcheck/tests/amd64-freebsd/Makefile.in -+++ b/memcheck/tests/amd64-freebsd/Makefile.in -@@ -583,6 +583,12 @@ AM_CFLAGS_PSO_MIPS64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ - $(AM_CFLAGS_PSO_BASE) - - AM_CCASFLAGS_MIPS64_LINUX = @FLAG_M64@ -g -+AM_FLAG_M3264_LOONGARCH64_LINUX = @FLAG_M64@ -+AM_CFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) -+AM_CFLAGS_PSO_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ -+ $(AM_CFLAGS_PSO_BASE) -+ -+AM_CCASFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ -g - AM_FLAG_M3264_X86_SOLARIS = @FLAG_M32@ - AM_CFLAGS_X86_SOLARIS = @FLAG_M32@ @PREFERRED_STACK_BOUNDARY_2@ \ - $(AM_CFLAGS_BASE) -fomit-frame-pointer @SOLARIS_UNDEF_LARGESOURCE@ -@@ -630,6 +636,7 @@ PRELOAD_LDFLAGS_S390X_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ - PRELOAD_LDFLAGS_MIPS32_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ - PRELOAD_LDFLAGS_NANOMIPS_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ - PRELOAD_LDFLAGS_MIPS64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ -+PRELOAD_LDFLAGS_LOONGARCH64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ - PRELOAD_LDFLAGS_X86_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M32@ - PRELOAD_LDFLAGS_AMD64_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M64@ - AM_CPPFLAGS = -I$(top_srcdir) -I$(top_srcdir)/include \ -diff --git a/memcheck/tests/amd64-linux/Makefile.in b/memcheck/tests/amd64-linux/Makefile.in -index 1b3d479..8e273ea 100644 ---- a/memcheck/tests/amd64-linux/Makefile.in -+++ b/memcheck/tests/amd64-linux/Makefile.in -@@ -582,6 +582,12 @@ AM_CFLAGS_PSO_MIPS64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ - $(AM_CFLAGS_PSO_BASE) - - AM_CCASFLAGS_MIPS64_LINUX = @FLAG_M64@ -g -+AM_FLAG_M3264_LOONGARCH64_LINUX = @FLAG_M64@ -+AM_CFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) -+AM_CFLAGS_PSO_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ -+ $(AM_CFLAGS_PSO_BASE) -+ -+AM_CCASFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ -g - AM_FLAG_M3264_X86_SOLARIS = @FLAG_M32@ - AM_CFLAGS_X86_SOLARIS = @FLAG_M32@ @PREFERRED_STACK_BOUNDARY_2@ \ - $(AM_CFLAGS_BASE) -fomit-frame-pointer @SOLARIS_UNDEF_LARGESOURCE@ -@@ -629,6 +635,7 @@ PRELOAD_LDFLAGS_S390X_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ - PRELOAD_LDFLAGS_MIPS32_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ - PRELOAD_LDFLAGS_NANOMIPS_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ - PRELOAD_LDFLAGS_MIPS64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ -+PRELOAD_LDFLAGS_LOONGARCH64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ - PRELOAD_LDFLAGS_X86_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M32@ - PRELOAD_LDFLAGS_AMD64_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M64@ - AM_CPPFLAGS = -I$(top_srcdir) -I$(top_srcdir)/include \ -diff --git a/memcheck/tests/amd64-solaris/Makefile.in b/memcheck/tests/amd64-solaris/Makefile.in -index 8d2cc23..f497e2b 100644 ---- a/memcheck/tests/amd64-solaris/Makefile.in -+++ b/memcheck/tests/amd64-solaris/Makefile.in -@@ -597,6 +597,12 @@ AM_CFLAGS_PSO_MIPS64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ - $(AM_CFLAGS_PSO_BASE) - - AM_CCASFLAGS_MIPS64_LINUX = @FLAG_M64@ -g -+AM_FLAG_M3264_LOONGARCH64_LINUX = @FLAG_M64@ -+AM_CFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) -+AM_CFLAGS_PSO_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ -+ $(AM_CFLAGS_PSO_BASE) -+ -+AM_CCASFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ -g - AM_FLAG_M3264_X86_SOLARIS = @FLAG_M32@ - AM_CFLAGS_X86_SOLARIS = @FLAG_M32@ @PREFERRED_STACK_BOUNDARY_2@ \ - $(AM_CFLAGS_BASE) -fomit-frame-pointer @SOLARIS_UNDEF_LARGESOURCE@ -@@ -644,6 +650,7 @@ PRELOAD_LDFLAGS_S390X_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ - PRELOAD_LDFLAGS_MIPS32_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ - PRELOAD_LDFLAGS_NANOMIPS_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ - PRELOAD_LDFLAGS_MIPS64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ -+PRELOAD_LDFLAGS_LOONGARCH64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ - PRELOAD_LDFLAGS_X86_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M32@ - PRELOAD_LDFLAGS_AMD64_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M64@ - AM_CPPFLAGS = -I$(top_srcdir) -I$(top_srcdir)/include \ -diff --git a/memcheck/tests/amd64/Makefile.in b/memcheck/tests/amd64/Makefile.in -index 0a89e7e..045a9d8 100644 ---- a/memcheck/tests/amd64/Makefile.in -+++ b/memcheck/tests/amd64/Makefile.in -@@ -668,6 +668,12 @@ AM_CFLAGS_PSO_MIPS64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ - $(AM_CFLAGS_PSO_BASE) - - AM_CCASFLAGS_MIPS64_LINUX = @FLAG_M64@ -g -+AM_FLAG_M3264_LOONGARCH64_LINUX = @FLAG_M64@ -+AM_CFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) -+AM_CFLAGS_PSO_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ -+ $(AM_CFLAGS_PSO_BASE) -+ -+AM_CCASFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ -g - AM_FLAG_M3264_X86_SOLARIS = @FLAG_M32@ - AM_CFLAGS_X86_SOLARIS = @FLAG_M32@ @PREFERRED_STACK_BOUNDARY_2@ \ - $(AM_CFLAGS_BASE) -fomit-frame-pointer @SOLARIS_UNDEF_LARGESOURCE@ -@@ -715,6 +721,7 @@ PRELOAD_LDFLAGS_S390X_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ - PRELOAD_LDFLAGS_MIPS32_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ - PRELOAD_LDFLAGS_NANOMIPS_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ - PRELOAD_LDFLAGS_MIPS64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ -+PRELOAD_LDFLAGS_LOONGARCH64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ - PRELOAD_LDFLAGS_X86_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M32@ - PRELOAD_LDFLAGS_AMD64_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M64@ - AM_CPPFLAGS = -I$(top_srcdir) -I$(top_srcdir)/include \ -diff --git a/memcheck/tests/arm64-linux/Makefile.in b/memcheck/tests/arm64-linux/Makefile.in -index 20084ba..361c356 100644 ---- a/memcheck/tests/arm64-linux/Makefile.in -+++ b/memcheck/tests/arm64-linux/Makefile.in -@@ -568,6 +568,12 @@ AM_CFLAGS_PSO_MIPS64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ - $(AM_CFLAGS_PSO_BASE) - - AM_CCASFLAGS_MIPS64_LINUX = @FLAG_M64@ -g -+AM_FLAG_M3264_LOONGARCH64_LINUX = @FLAG_M64@ -+AM_CFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) -+AM_CFLAGS_PSO_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ -+ $(AM_CFLAGS_PSO_BASE) -+ -+AM_CCASFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ -g - AM_FLAG_M3264_X86_SOLARIS = @FLAG_M32@ - AM_CFLAGS_X86_SOLARIS = @FLAG_M32@ @PREFERRED_STACK_BOUNDARY_2@ \ - $(AM_CFLAGS_BASE) -fomit-frame-pointer @SOLARIS_UNDEF_LARGESOURCE@ -@@ -615,6 +621,7 @@ PRELOAD_LDFLAGS_S390X_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ - PRELOAD_LDFLAGS_MIPS32_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ - PRELOAD_LDFLAGS_NANOMIPS_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ - PRELOAD_LDFLAGS_MIPS64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ -+PRELOAD_LDFLAGS_LOONGARCH64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ - PRELOAD_LDFLAGS_X86_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M32@ - PRELOAD_LDFLAGS_AMD64_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M64@ - AM_CPPFLAGS = -I$(top_srcdir) -I$(top_srcdir)/include \ +@@ -256,7 +259,7 @@ EXTRA_DIST = \ + leak-segv-jmp.vgtest leak-segv-jmp.stderr.exp \ + lks.vgtest lks.stdout.exp lks.supp lks.stderr.exp \ + long_namespace_xml.vgtest long_namespace_xml.stdout.exp \ +- long_namespace_xml.stderr.exp \ ++ long_namespace_xml.stderr.exp long_namespace_xml.supp \ + long-supps.vgtest long-supps.stderr.exp long-supps.supp \ + mallinfo.stderr.exp mallinfo.vgtest \ + malloc_free_fill.vgtest \ diff --git a/memcheck/tests/atomic_incs.c b/memcheck/tests/atomic_incs.c -index 1c738c5..8c00550 100644 +index 89b6e1f757c8..cd88078f4735 100644 --- a/memcheck/tests/atomic_incs.c +++ b/memcheck/tests/atomic_incs.c -@@ -245,6 +245,29 @@ __attribute__((noinline)) void atomic_add_8bit ( char* p, int n ) +@@ -265,6 +265,29 @@ __attribute__((noinline)) void atomic_add_8bit ( char* p, int n ) + : /*trash*/ "memory", "t0", "t1", "t2", "t3", "t4" ); - } while (block[2] != 1); - #endif + } while (block[2] != 0); +#elif defined(VGA_loongarch64) + unsigned long long int block[3] + = { (unsigned long long int)(Addr)p, (unsigned long long int)n, 0x0ULL }; @@ -33949,10 +32352,10 @@ index 1c738c5..8c00550 100644 #else # error "Unsupported arch" #endif -@@ -461,6 +484,30 @@ __attribute__((noinline)) void atomic_add_16bit ( short* p, int n ) +@@ -501,6 +524,30 @@ __attribute__((noinline)) void atomic_add_16bit ( short* p, int n ) + : /*trash*/ "memory", "t0", "t1", "t2", "t3", "t4" ); - } while (block[2] != 1); - #endif + } while (block[2] != 0); +#elif defined(VGA_loongarch64) + unsigned long long int block[3] + = { (unsigned long long int)(Addr)p, (unsigned long long int)n, 0x0ULL }; @@ -33980,10 +32383,10 @@ index 1c738c5..8c00550 100644 #else # error "Unsupported arch" #endif -@@ -616,6 +663,23 @@ __attribute__((noinline)) void atomic_add_32bit ( int* p, int n ) - : /*trash*/ "memory", "t0", "t1", "t2", "t3" +@@ -674,6 +721,23 @@ __attribute__((noinline)) void atomic_add_32bit ( int* p, int n ) + : /*trash*/ "memory", "t0", "t1", "t2", "t3", "t4" ); - } while (block[2] != 1); + } while (block[2] != 0); +#elif defined(VGA_loongarch64) + unsigned long long int block[3] + = { (unsigned long long int)(Addr)p, (unsigned long long int)n, 0x0ULL }; @@ -34004,10 +32407,10 @@ index 1c738c5..8c00550 100644 #else # error "Unsupported arch" #endif -@@ -718,6 +782,23 @@ __attribute__((noinline)) void atomic_add_64bit ( long long int* p, int n ) - : /*trash*/ "memory", "t0", "t1", "t2", "t3" +@@ -794,6 +858,23 @@ __attribute__((noinline)) void atomic_add_64bit ( long long int* p, int n ) + : /*trash*/ "memory", "t0", "t1", "t2", "t3", "t4" ); - } while (block[2] != 1); + } while (block[2] != 0); +#elif defined(VGA_loongarch64) + unsigned long long int block[3] + = { (unsigned long long int)(Addr)p, (unsigned long long int)n, 0x0ULL }; @@ -34028,98 +32431,23 @@ index 1c738c5..8c00550 100644 #else # error "Unsupported arch" #endif -@@ -731,7 +812,8 @@ __attribute__((noinline)) void atomic_add_128bit ( MyU128* p, +@@ -807,7 +888,8 @@ __attribute__((noinline)) void atomic_add_128bit ( MyU128* p, || defined(VGA_amd64) \ || defined(VGA_ppc64be) || defined(VGA_ppc64le) \ || defined(VGA_arm) \ -- || defined(VGA_s390x) -+ || defined(VGA_s390x) \ +- || defined(VGA_s390x) || defined(VGA_riscv64) ++ || defined(VGA_s390x) || defined(VGA_riscv64) \ + || defined(VGA_loongarch64) /* do nothing; is not supported */ #elif defined(VGA_arm64) unsigned long long int block[3] -diff --git a/memcheck/tests/common/Makefile.in b/memcheck/tests/common/Makefile.in -index 71f2d86..3b6e554 100644 ---- a/memcheck/tests/common/Makefile.in -+++ b/memcheck/tests/common/Makefile.in -@@ -526,6 +526,12 @@ AM_CFLAGS_PSO_MIPS64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ - $(AM_CFLAGS_PSO_BASE) - - AM_CCASFLAGS_MIPS64_LINUX = @FLAG_M64@ -g -+AM_FLAG_M3264_LOONGARCH64_LINUX = @FLAG_M64@ -+AM_CFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) -+AM_CFLAGS_PSO_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ -+ $(AM_CFLAGS_PSO_BASE) -+ -+AM_CCASFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ -g - AM_FLAG_M3264_X86_SOLARIS = @FLAG_M32@ - AM_CFLAGS_X86_SOLARIS = @FLAG_M32@ @PREFERRED_STACK_BOUNDARY_2@ \ - $(AM_CFLAGS_BASE) -fomit-frame-pointer @SOLARIS_UNDEF_LARGESOURCE@ -@@ -573,6 +579,7 @@ PRELOAD_LDFLAGS_S390X_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ - PRELOAD_LDFLAGS_MIPS32_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ - PRELOAD_LDFLAGS_NANOMIPS_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ - PRELOAD_LDFLAGS_MIPS64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ -+PRELOAD_LDFLAGS_LOONGARCH64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ - PRELOAD_LDFLAGS_X86_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M32@ - PRELOAD_LDFLAGS_AMD64_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M64@ - AM_CPPFLAGS = -I$(top_srcdir) -I$(top_srcdir)/include \ -diff --git a/memcheck/tests/darwin/Makefile.in b/memcheck/tests/darwin/Makefile.in -index 9886522..9f0df9d 100644 ---- a/memcheck/tests/darwin/Makefile.in -+++ b/memcheck/tests/darwin/Makefile.in -@@ -614,6 +614,12 @@ AM_CFLAGS_PSO_MIPS64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ - $(AM_CFLAGS_PSO_BASE) - - AM_CCASFLAGS_MIPS64_LINUX = @FLAG_M64@ -g -+AM_FLAG_M3264_LOONGARCH64_LINUX = @FLAG_M64@ -+AM_CFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) -+AM_CFLAGS_PSO_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ -+ $(AM_CFLAGS_PSO_BASE) -+ -+AM_CCASFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ -g - AM_FLAG_M3264_X86_SOLARIS = @FLAG_M32@ - AM_CFLAGS_X86_SOLARIS = @FLAG_M32@ @PREFERRED_STACK_BOUNDARY_2@ \ - $(AM_CFLAGS_BASE) -fomit-frame-pointer @SOLARIS_UNDEF_LARGESOURCE@ -@@ -661,6 +667,7 @@ PRELOAD_LDFLAGS_S390X_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ - PRELOAD_LDFLAGS_MIPS32_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ - PRELOAD_LDFLAGS_NANOMIPS_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ - PRELOAD_LDFLAGS_MIPS64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ -+PRELOAD_LDFLAGS_LOONGARCH64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ - PRELOAD_LDFLAGS_X86_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M32@ - PRELOAD_LDFLAGS_AMD64_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M64@ - AM_CPPFLAGS = -I$(top_srcdir) -I$(top_srcdir)/include \ -diff --git a/memcheck/tests/freebsd/Makefile.in b/memcheck/tests/freebsd/Makefile.in -index 87c2a15..d391d1d 100644 ---- a/memcheck/tests/freebsd/Makefile.in -+++ b/memcheck/tests/freebsd/Makefile.in -@@ -824,6 +824,12 @@ AM_CFLAGS_PSO_MIPS64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ - $(AM_CFLAGS_PSO_BASE) - - AM_CCASFLAGS_MIPS64_LINUX = @FLAG_M64@ -g -+AM_FLAG_M3264_LOONGARCH64_LINUX = @FLAG_M64@ -+AM_CFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) -+AM_CFLAGS_PSO_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ -+ $(AM_CFLAGS_PSO_BASE) -+ -+AM_CCASFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ -g - AM_FLAG_M3264_X86_SOLARIS = @FLAG_M32@ - AM_CFLAGS_X86_SOLARIS = @FLAG_M32@ @PREFERRED_STACK_BOUNDARY_2@ \ - $(AM_CFLAGS_BASE) -fomit-frame-pointer @SOLARIS_UNDEF_LARGESOURCE@ -@@ -871,6 +877,7 @@ PRELOAD_LDFLAGS_S390X_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ - PRELOAD_LDFLAGS_MIPS32_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ - PRELOAD_LDFLAGS_NANOMIPS_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ - PRELOAD_LDFLAGS_MIPS64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ -+PRELOAD_LDFLAGS_LOONGARCH64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ - PRELOAD_LDFLAGS_X86_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M32@ - PRELOAD_LDFLAGS_AMD64_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M64@ - AM_CPPFLAGS = -I$(top_srcdir) -I$(top_srcdir)/include \ diff --git a/memcheck/tests/leak-segv-jmp.c b/memcheck/tests/leak-segv-jmp.c -index 97bddaf..4890f5b 100644 +index 15cc9f8fb239..b24c1e8fbe07 100644 --- a/memcheck/tests/leak-segv-jmp.c +++ b/memcheck/tests/leak-segv-jmp.c -@@ -182,6 +182,19 @@ extern UWord do_syscall_WRK ( - return out; - } +@@ -200,6 +200,19 @@ asm( + ".previous\n" + ); +#elif defined(VGP_loongarch64_linux) +extern UWord do_syscall_WRK (UWord a1, UWord a2, UWord a3, /* $a0, $a1, $a2 */ @@ -34137,27 +32465,28 @@ index 97bddaf..4890f5b 100644 #elif defined(VGP_x86_solaris) extern ULong do_syscall_WRK(UWord a1, UWord a2, UWord a3, -@@ -338,7 +351,7 @@ static void non_simd_mprotect (long tid, void* addr, long len) +@@ -386,7 +399,8 @@ static void non_simd_mprotect (long tid, void* addr, long len) &err); if (err) mprotect_result = -1; --#elif defined(VGP_arm64_linux) -+#elif defined(VGP_arm64_linux) || defined (VGP_loongarch64_linux) +-#elif defined(VGP_arm64_linux) || defined(VGP_riscv64_linux) ++#elif defined(VGP_arm64_linux) || defined(VGP_riscv64_linux) \ ++ || defined(VGP_loongarch64_linux) mprotect_result = do_syscall_WRK((UWord) addr, len, PROT_NONE, 0, 0, 0, __NR_mprotect); diff --git a/memcheck/tests/leak-segv-jmp.stderr.exp b/memcheck/tests/leak-segv-jmp.stderr.exp -index b30fd76..0eea178 100644 +index e18418d440e7..195ebdd740ea 100644 --- a/memcheck/tests/leak-segv-jmp.stderr.exp +++ b/memcheck/tests/leak-segv-jmp.stderr.exp @@ -14,8 +14,8 @@ To see them, rerun with: --leak-check=full --show-leak-kinds=all expecting a leak 1,000 bytes in 1 blocks are definitely lost in loss record ... of ... at 0x........: malloc (vg_replace_malloc.c:...) -- by 0x........: f (leak-segv-jmp.c:389) -- by 0x........: main (leak-segv-jmp.c:464) -+ by 0x........: f (leak-segv-jmp.c:402) -+ by 0x........: main (leak-segv-jmp.c:477) +- by 0x........: f (leak-segv-jmp.c:437) +- by 0x........: main (leak-segv-jmp.c:512) ++ by 0x........: f (leak-segv-jmp.c:451) ++ by 0x........: main (leak-segv-jmp.c:526) LEAK SUMMARY: definitely lost: 1,000 bytes in 1 blocks @@ -34165,10 +32494,10 @@ index b30fd76..0eea178 100644 expecting a leak again 1,000 bytes in 1 blocks are definitely lost in loss record ... of ... at 0x........: malloc (vg_replace_malloc.c:...) -- by 0x........: f (leak-segv-jmp.c:389) -- by 0x........: main (leak-segv-jmp.c:464) -+ by 0x........: f (leak-segv-jmp.c:402) -+ by 0x........: main (leak-segv-jmp.c:477) +- by 0x........: f (leak-segv-jmp.c:437) +- by 0x........: main (leak-segv-jmp.c:512) ++ by 0x........: f (leak-segv-jmp.c:451) ++ by 0x........: main (leak-segv-jmp.c:526) LEAK SUMMARY: definitely lost: 1,000 bytes in 1 blocks @@ -34176,10 +32505,10 @@ index b30fd76..0eea178 100644 expecting a leak again after full mprotect 1,000 bytes in 1 blocks are definitely lost in loss record ... of ... at 0x........: malloc (vg_replace_malloc.c:...) -- by 0x........: f (leak-segv-jmp.c:389) -- by 0x........: main (leak-segv-jmp.c:464) -+ by 0x........: f (leak-segv-jmp.c:402) -+ by 0x........: main (leak-segv-jmp.c:477) +- by 0x........: f (leak-segv-jmp.c:437) +- by 0x........: main (leak-segv-jmp.c:512) ++ by 0x........: f (leak-segv-jmp.c:451) ++ by 0x........: main (leak-segv-jmp.c:526) LEAK SUMMARY: definitely lost: 1,000 bytes in 1 blocks @@ -34187,29 +32516,29 @@ index b30fd76..0eea178 100644 expecting heuristic not to crash after full mprotect 1,000 bytes in 1 blocks are definitely lost in loss record ... of ... at 0x........: malloc (vg_replace_malloc.c:...) -- by 0x........: f (leak-segv-jmp.c:389) -- by 0x........: main (leak-segv-jmp.c:464) -+ by 0x........: f (leak-segv-jmp.c:402) -+ by 0x........: main (leak-segv-jmp.c:477) +- by 0x........: f (leak-segv-jmp.c:437) +- by 0x........: main (leak-segv-jmp.c:512) ++ by 0x........: f (leak-segv-jmp.c:451) ++ by 0x........: main (leak-segv-jmp.c:526) 200,000 bytes in 1 blocks are possibly lost in loss record ... of ... at 0x........: calloc (vg_replace_malloc.c:...) -- by 0x........: f (leak-segv-jmp.c:436) -- by 0x........: main (leak-segv-jmp.c:464) -+ by 0x........: f (leak-segv-jmp.c:449) -+ by 0x........: main (leak-segv-jmp.c:477) +- by 0x........: f (leak-segv-jmp.c:484) +- by 0x........: main (leak-segv-jmp.c:512) ++ by 0x........: f (leak-segv-jmp.c:498) ++ by 0x........: main (leak-segv-jmp.c:526) LEAK SUMMARY: definitely lost: 1,000 bytes in 1 blocks diff --git a/memcheck/tests/leak.h b/memcheck/tests/leak.h -index 79e3cd6..df9d2e7 100644 +index f9a2db290d43..4c9e741da031 100644 --- a/memcheck/tests/leak.h +++ b/memcheck/tests/leak.h -@@ -148,6 +148,27 @@ - do { \ - __asm__ __volatile__ ("movl $0, %ecx\n\t"); \ - } while (0) -+#elif defined (VGA_loongarch64) +@@ -186,6 +186,27 @@ + do { \ + __asm__ __volatile__( "li a0, 0" : : :/*trash*/"a0" ); \ + } while (0) ++#elif defined (__loongarch__) +#define CLEAR_CALLER_SAVED_REGS \ + do { \ + __asm__ __volatile__ ("move $a0, $zero \n\t" \ @@ -34233,34 +32562,37 @@ index 79e3cd6..df9d2e7 100644 #else #define CLEAR_CALLER_SAVED_REGS /*nothing*/ #endif -diff --git a/memcheck/tests/linux/Makefile.in b/memcheck/tests/linux/Makefile.in -index 2631f0e..86eedbb 100644 ---- a/memcheck/tests/linux/Makefile.in -+++ b/memcheck/tests/linux/Makefile.in -@@ -723,6 +723,12 @@ AM_CFLAGS_PSO_MIPS64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ - $(AM_CFLAGS_PSO_BASE) - - AM_CCASFLAGS_MIPS64_LINUX = @FLAG_M64@ -g -+AM_FLAG_M3264_LOONGARCH64_LINUX = @FLAG_M64@ -+AM_CFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) -+AM_CFLAGS_PSO_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ -+ $(AM_CFLAGS_PSO_BASE) -+ -+AM_CCASFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ -g - AM_FLAG_M3264_X86_SOLARIS = @FLAG_M32@ - AM_CFLAGS_X86_SOLARIS = @FLAG_M32@ @PREFERRED_STACK_BOUNDARY_2@ \ - $(AM_CFLAGS_BASE) -fomit-frame-pointer @SOLARIS_UNDEF_LARGESOURCE@ -@@ -770,6 +776,7 @@ PRELOAD_LDFLAGS_S390X_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ - PRELOAD_LDFLAGS_MIPS32_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ - PRELOAD_LDFLAGS_NANOMIPS_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ - PRELOAD_LDFLAGS_MIPS64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ -+PRELOAD_LDFLAGS_LOONGARCH64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ - PRELOAD_LDFLAGS_X86_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M32@ - PRELOAD_LDFLAGS_AMD64_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M64@ - AM_CPPFLAGS = -I$(top_srcdir) -I$(top_srcdir)/include \ +diff --git a/memcheck/tests/long_namespace_xml.supp b/memcheck/tests/long_namespace_xml.supp +new file mode 100644 +index 000000000000..b26252bdfbbb +--- /dev/null ++++ b/memcheck/tests/long_namespace_xml.supp +@@ -0,0 +1,13 @@ ++# Conditional jump or move depends on uninitialised value(s) ++# at 0x40624F4: bcmp (vg_replace_strmem.c:1233) ++# by 0x415E1DB: std::ctype::_M_widen_init() const (in /usr/lib64/libstdc++.so.6.0.33) ++# by 0x41D9067: std::basic_ostream >& std::endl >(std::basic_ostream >&) (in /usr/lib64/libstdc++.so.6.0.33) ++# by 0x12000426B: _ZN5304abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz5304ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZ1fEv (long_namespace_xml.cpp:36) ++# by 0x1200042BF: main (long_namespace_xml.cpp:45) ++{ ++ long_namespace_xml_supp ++ Memcheck:Cond ++ fun:bcmp ++ ... ++ obj:*lib*/libstdc++.so* ++} +diff --git a/memcheck/tests/long_namespace_xml.vgtest b/memcheck/tests/long_namespace_xml.vgtest +index e367a0a99dfc..e57a150ee8f6 100644 +--- a/memcheck/tests/long_namespace_xml.vgtest ++++ b/memcheck/tests/long_namespace_xml.vgtest +@@ -1,3 +1,3 @@ + prog: long_namespace_xml +-vgopts: --xml=yes --xml-fd=2 --log-file=/dev/null ++vgopts: --xml=yes --xml-fd=2 --log-file=/dev/null --suppressions=long_namespace_xml.supp + stderr_filter: filter_xml diff --git a/memcheck/tests/loongarch64-linux/Makefile.am b/memcheck/tests/loongarch64-linux/Makefile.am new file mode 100644 -index 0000000..5afcaa4 +index 000000000000..5afcaa4ec5db --- /dev/null +++ b/memcheck/tests/loongarch64-linux/Makefile.am @@ -0,0 +1,17 @@ @@ -34283,7 +32615,7 @@ index 0000000..5afcaa4 +AM_CCASFLAGS += @FLAG_M64@ diff --git a/memcheck/tests/loongarch64-linux/filter_stderr b/memcheck/tests/loongarch64-linux/filter_stderr new file mode 100755 -index 0000000..a778e97 +index 000000000000..a778e971fcb3 --- /dev/null +++ b/memcheck/tests/loongarch64-linux/filter_stderr @@ -0,0 +1,3 @@ @@ -34292,7 +32624,7 @@ index 0000000..a778e97 +../filter_stderr "$@" diff --git a/memcheck/tests/loongarch64-linux/scalar.c b/memcheck/tests/loongarch64-linux/scalar.c new file mode 100644 -index 0000000..e390692 +index 000000000000..e39069213a02 --- /dev/null +++ b/memcheck/tests/loongarch64-linux/scalar.c @@ -0,0 +1,1296 @@ @@ -35594,7 +33926,7 @@ index 0000000..e390692 +} diff --git a/memcheck/tests/loongarch64-linux/scalar.h b/memcheck/tests/loongarch64-linux/scalar.h new file mode 100644 -index 0000000..4d86d2c +index 000000000000..4d86d2c0a21d --- /dev/null +++ b/memcheck/tests/loongarch64-linux/scalar.h @@ -0,0 +1,62 @@ @@ -35662,10 +33994,10 @@ index 0000000..4d86d2c + } while (0); diff --git a/memcheck/tests/loongarch64-linux/scalar.stderr.exp b/memcheck/tests/loongarch64-linux/scalar.stderr.exp new file mode 100644 -index 0000000..a90b90a +index 000000000000..a0e7b135a031 --- /dev/null +++ b/memcheck/tests/loongarch64-linux/scalar.stderr.exp -@@ -0,0 +1,2716 @@ +@@ -0,0 +1,2728 @@ +----------------------------------------------------- +128:__NR_restart_syscall n/a +----------------------------------------------------- @@ -37295,7 +35627,19 @@ index 0000000..a90b90a + ... + by 0x........: main (scalar.c:853) + -+Syscall param sigaltstack(ss) points to unaddressable byte(s) ++Syscall param sigaltstack(ss->ss_sp) points to unaddressable byte(s) ++ ... ++ by 0x........: main (scalar.c:853) ++ Address 0x........ is on thread 1's stack ++ in frame #1, created by main (scalar.c:28) ++ ++Syscall param sigaltstack(ss->ss_size) points to unaddressable byte(s) ++ ... ++ by 0x........: main (scalar.c:853) ++ Address 0x........ is on thread 1's stack ++ in frame #1, created by main (scalar.c:28) ++ ++Syscall param sigaltstack(ss->ss_flags) points to unaddressable byte(s) + ... + by 0x........: main (scalar.c:853) + Address 0x........ is on thread 1's stack @@ -38384,7 +36728,7 @@ index 0000000..a90b90a + diff --git a/memcheck/tests/loongarch64-linux/scalar.vgtest b/memcheck/tests/loongarch64-linux/scalar.vgtest new file mode 100644 -index 0000000..53e87e8 +index 000000000000..53e87e8d75c6 --- /dev/null +++ b/memcheck/tests/loongarch64-linux/scalar.vgtest @@ -0,0 +1,5 @@ @@ -38393,158 +36737,8 @@ index 0000000..53e87e8 +prereq: [ `id -u` -ne 0 ] +vgopts: -q --error-limit=no +args: < scalar.c -diff --git a/memcheck/tests/mips32/Makefile.in b/memcheck/tests/mips32/Makefile.in -index b20c604..01519ab 100644 ---- a/memcheck/tests/mips32/Makefile.in -+++ b/memcheck/tests/mips32/Makefile.in -@@ -576,6 +576,12 @@ AM_CFLAGS_PSO_MIPS64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ - $(AM_CFLAGS_PSO_BASE) - - AM_CCASFLAGS_MIPS64_LINUX = @FLAG_M64@ -g -+AM_FLAG_M3264_LOONGARCH64_LINUX = @FLAG_M64@ -+AM_CFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) -+AM_CFLAGS_PSO_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ -+ $(AM_CFLAGS_PSO_BASE) -+ -+AM_CCASFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ -g - AM_FLAG_M3264_X86_SOLARIS = @FLAG_M32@ - AM_CFLAGS_X86_SOLARIS = @FLAG_M32@ @PREFERRED_STACK_BOUNDARY_2@ \ - $(AM_CFLAGS_BASE) -fomit-frame-pointer @SOLARIS_UNDEF_LARGESOURCE@ -@@ -623,6 +629,7 @@ PRELOAD_LDFLAGS_S390X_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ - PRELOAD_LDFLAGS_MIPS32_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ - PRELOAD_LDFLAGS_NANOMIPS_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ - PRELOAD_LDFLAGS_MIPS64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ -+PRELOAD_LDFLAGS_LOONGARCH64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ - PRELOAD_LDFLAGS_X86_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M32@ - PRELOAD_LDFLAGS_AMD64_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M64@ - AM_CPPFLAGS = -I$(top_srcdir) -I$(top_srcdir)/include \ -diff --git a/memcheck/tests/mips64/Makefile.in b/memcheck/tests/mips64/Makefile.in -index c481d0e..138de75 100644 ---- a/memcheck/tests/mips64/Makefile.in -+++ b/memcheck/tests/mips64/Makefile.in -@@ -576,6 +576,12 @@ AM_CFLAGS_PSO_MIPS64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ - $(AM_CFLAGS_PSO_BASE) - - AM_CCASFLAGS_MIPS64_LINUX = @FLAG_M64@ -g -+AM_FLAG_M3264_LOONGARCH64_LINUX = @FLAG_M64@ -+AM_CFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) -+AM_CFLAGS_PSO_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ -+ $(AM_CFLAGS_PSO_BASE) -+ -+AM_CCASFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ -g - AM_FLAG_M3264_X86_SOLARIS = @FLAG_M32@ - AM_CFLAGS_X86_SOLARIS = @FLAG_M32@ @PREFERRED_STACK_BOUNDARY_2@ \ - $(AM_CFLAGS_BASE) -fomit-frame-pointer @SOLARIS_UNDEF_LARGESOURCE@ -@@ -623,6 +629,7 @@ PRELOAD_LDFLAGS_S390X_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ - PRELOAD_LDFLAGS_MIPS32_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ - PRELOAD_LDFLAGS_NANOMIPS_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ - PRELOAD_LDFLAGS_MIPS64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ -+PRELOAD_LDFLAGS_LOONGARCH64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ - PRELOAD_LDFLAGS_X86_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M32@ - PRELOAD_LDFLAGS_AMD64_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M64@ - AM_CPPFLAGS = -I$(top_srcdir) -I$(top_srcdir)/include \ -diff --git a/memcheck/tests/ppc32/Makefile.in b/memcheck/tests/ppc32/Makefile.in -index 615b1cd..92cd288 100644 ---- a/memcheck/tests/ppc32/Makefile.in -+++ b/memcheck/tests/ppc32/Makefile.in -@@ -578,6 +578,12 @@ AM_CFLAGS_PSO_MIPS64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ - $(AM_CFLAGS_PSO_BASE) - - AM_CCASFLAGS_MIPS64_LINUX = @FLAG_M64@ -g -+AM_FLAG_M3264_LOONGARCH64_LINUX = @FLAG_M64@ -+AM_CFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) -+AM_CFLAGS_PSO_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ -+ $(AM_CFLAGS_PSO_BASE) -+ -+AM_CCASFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ -g - AM_FLAG_M3264_X86_SOLARIS = @FLAG_M32@ - AM_CFLAGS_X86_SOLARIS = @FLAG_M32@ @PREFERRED_STACK_BOUNDARY_2@ \ - $(AM_CFLAGS_BASE) -fomit-frame-pointer @SOLARIS_UNDEF_LARGESOURCE@ -@@ -625,6 +631,7 @@ PRELOAD_LDFLAGS_S390X_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ - PRELOAD_LDFLAGS_MIPS32_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ - PRELOAD_LDFLAGS_NANOMIPS_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ - PRELOAD_LDFLAGS_MIPS64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ -+PRELOAD_LDFLAGS_LOONGARCH64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ - PRELOAD_LDFLAGS_X86_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M32@ - PRELOAD_LDFLAGS_AMD64_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M64@ - AM_CPPFLAGS = -I$(top_srcdir) -I$(top_srcdir)/include \ -diff --git a/memcheck/tests/ppc64/Makefile.in b/memcheck/tests/ppc64/Makefile.in -index 0d12344..84b272d 100644 ---- a/memcheck/tests/ppc64/Makefile.in -+++ b/memcheck/tests/ppc64/Makefile.in -@@ -578,6 +578,12 @@ AM_CFLAGS_PSO_MIPS64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ - $(AM_CFLAGS_PSO_BASE) - - AM_CCASFLAGS_MIPS64_LINUX = @FLAG_M64@ -g -+AM_FLAG_M3264_LOONGARCH64_LINUX = @FLAG_M64@ -+AM_CFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) -+AM_CFLAGS_PSO_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ -+ $(AM_CFLAGS_PSO_BASE) -+ -+AM_CCASFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ -g - AM_FLAG_M3264_X86_SOLARIS = @FLAG_M32@ - AM_CFLAGS_X86_SOLARIS = @FLAG_M32@ @PREFERRED_STACK_BOUNDARY_2@ \ - $(AM_CFLAGS_BASE) -fomit-frame-pointer @SOLARIS_UNDEF_LARGESOURCE@ -@@ -625,6 +631,7 @@ PRELOAD_LDFLAGS_S390X_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ - PRELOAD_LDFLAGS_MIPS32_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ - PRELOAD_LDFLAGS_NANOMIPS_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ - PRELOAD_LDFLAGS_MIPS64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ -+PRELOAD_LDFLAGS_LOONGARCH64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ - PRELOAD_LDFLAGS_X86_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M32@ - PRELOAD_LDFLAGS_AMD64_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M64@ - AM_CPPFLAGS = -I$(top_srcdir) -I$(top_srcdir)/include \ -diff --git a/memcheck/tests/s390x/Makefile.in b/memcheck/tests/s390x/Makefile.in -index 17cbd0c..af85cdb 100644 ---- a/memcheck/tests/s390x/Makefile.in -+++ b/memcheck/tests/s390x/Makefile.in -@@ -610,6 +610,12 @@ AM_CFLAGS_PSO_MIPS64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ - $(AM_CFLAGS_PSO_BASE) - - AM_CCASFLAGS_MIPS64_LINUX = @FLAG_M64@ -g -+AM_FLAG_M3264_LOONGARCH64_LINUX = @FLAG_M64@ -+AM_CFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) -+AM_CFLAGS_PSO_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ -+ $(AM_CFLAGS_PSO_BASE) -+ -+AM_CCASFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ -g - AM_FLAG_M3264_X86_SOLARIS = @FLAG_M32@ - AM_CFLAGS_X86_SOLARIS = @FLAG_M32@ @PREFERRED_STACK_BOUNDARY_2@ \ - $(AM_CFLAGS_BASE) -fomit-frame-pointer @SOLARIS_UNDEF_LARGESOURCE@ -@@ -657,6 +663,7 @@ PRELOAD_LDFLAGS_S390X_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ - PRELOAD_LDFLAGS_MIPS32_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ - PRELOAD_LDFLAGS_NANOMIPS_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ - PRELOAD_LDFLAGS_MIPS64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ -+PRELOAD_LDFLAGS_LOONGARCH64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ - PRELOAD_LDFLAGS_X86_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M32@ - PRELOAD_LDFLAGS_AMD64_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M64@ - AM_CPPFLAGS = -I$(top_srcdir) -I$(top_srcdir)/include \ -diff --git a/memcheck/tests/solaris/Makefile.in b/memcheck/tests/solaris/Makefile.in -index 52c57a1..34783f2 100644 ---- a/memcheck/tests/solaris/Makefile.in -+++ b/memcheck/tests/solaris/Makefile.in -@@ -844,6 +844,12 @@ AM_CFLAGS_PSO_MIPS64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ - $(AM_CFLAGS_PSO_BASE) - - AM_CCASFLAGS_MIPS64_LINUX = @FLAG_M64@ -g -+AM_FLAG_M3264_LOONGARCH64_LINUX = @FLAG_M64@ -+AM_CFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) -+AM_CFLAGS_PSO_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ -+ $(AM_CFLAGS_PSO_BASE) -+ -+AM_CCASFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ -g - AM_FLAG_M3264_X86_SOLARIS = @FLAG_M32@ - AM_CFLAGS_X86_SOLARIS = @FLAG_M32@ @PREFERRED_STACK_BOUNDARY_2@ \ - $(AM_CFLAGS_BASE) -fomit-frame-pointer @SOLARIS_UNDEF_LARGESOURCE@ -@@ -891,6 +897,7 @@ PRELOAD_LDFLAGS_S390X_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ - PRELOAD_LDFLAGS_MIPS32_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ - PRELOAD_LDFLAGS_NANOMIPS_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ - PRELOAD_LDFLAGS_MIPS64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ -+PRELOAD_LDFLAGS_LOONGARCH64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ - PRELOAD_LDFLAGS_X86_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M32@ - PRELOAD_LDFLAGS_AMD64_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M64@ - AM_CPPFLAGS = -I$(top_srcdir) -I$(top_srcdir)/include \ diff --git a/memcheck/tests/unit_libcbase.c b/memcheck/tests/unit_libcbase.c -index 0ce65be..4803603 100644 +index 0ce65be26451..48036033ec71 100644 --- a/memcheck/tests/unit_libcbase.c +++ b/memcheck/tests/unit_libcbase.c @@ -9,14 +9,14 @@ @@ -38564,36 +36758,11 @@ index 0ce65be..4803603 100644 #include unsigned long VKI_PAGE_SIZE; #endif -diff --git a/memcheck/tests/vbit-test/Makefile.in b/memcheck/tests/vbit-test/Makefile.in -index 5fef578..eeb4e09 100644 ---- a/memcheck/tests/vbit-test/Makefile.in -+++ b/memcheck/tests/vbit-test/Makefile.in -@@ -627,6 +627,12 @@ AM_CFLAGS_PSO_MIPS64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ - $(AM_CFLAGS_PSO_BASE) - - AM_CCASFLAGS_MIPS64_LINUX = @FLAG_M64@ -g -+AM_FLAG_M3264_LOONGARCH64_LINUX = @FLAG_M64@ -+AM_CFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) -+AM_CFLAGS_PSO_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ -+ $(AM_CFLAGS_PSO_BASE) -+ -+AM_CCASFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ -g - AM_FLAG_M3264_X86_SOLARIS = @FLAG_M32@ - AM_CFLAGS_X86_SOLARIS = @FLAG_M32@ @PREFERRED_STACK_BOUNDARY_2@ \ - $(AM_CFLAGS_BASE) -fomit-frame-pointer @SOLARIS_UNDEF_LARGESOURCE@ -@@ -674,6 +680,7 @@ PRELOAD_LDFLAGS_S390X_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ - PRELOAD_LDFLAGS_MIPS32_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ - PRELOAD_LDFLAGS_NANOMIPS_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ - PRELOAD_LDFLAGS_MIPS64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ -+PRELOAD_LDFLAGS_LOONGARCH64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ - PRELOAD_LDFLAGS_X86_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M32@ - PRELOAD_LDFLAGS_AMD64_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M64@ - EXTRA_DIST = vbit-test.vgtest vbit-test.stderr.exp \ diff --git a/memcheck/tests/vbit-test/irops.c b/memcheck/tests/vbit-test/irops.c -index 24f258b..89370f7 100644 +index 4755ce41ccd9..d57112b54ae3 100644 --- a/memcheck/tests/vbit-test/irops.c +++ b/memcheck/tests/vbit-test/irops.c -@@ -34,287 +34,297 @@ +@@ -34,291 +34,301 @@ That is not necessary but helpful when supporting a new architecture. */ static irop_t irops[] = { @@ -39053,20 +37222,6 @@ index 24f258b..89370f7 100644 - { DEFOP(Iop_2xm1F64, UNDEF_ALL), .s390x = 0, .amd64 = 1, .x86 = 1, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 = 0, .mips64 = 0 }, - { DEFOP(Iop_RoundF128toInt, UNDEF_ALL), .s390x = 1, .amd64 = 0, .x86 = 0, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 = 0, .mips64 = 0 }, - { DEFOP(Iop_RoundF64toInt, UNDEF_ALL), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 = 0, .mips64 = 1 }, -- { DEFOP(Iop_RoundF32toInt, UNDEF_ALL), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 = 1, .mips64 = 1 }, -- { DEFOP(Iop_MAddF32, UNDEF_ALL), .s390x = 1, .amd64 = 0, .x86 = 0, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 = 0, .mips64 = 1 }, -- { DEFOP(Iop_MSubF32, UNDEF_ALL), .s390x = 1, .amd64 = 0, .x86 = 0, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 = 0, .mips64 = 1 }, -- { DEFOP(Iop_MAddF64, UNDEF_ALL), .s390x = 1, .amd64 = 0, .x86 = 0, .arm = 0, .ppc64 = 1, .ppc32 = 1, .mips32 = 0, .mips64 = 1 }, -- { DEFOP(Iop_MSubF64, UNDEF_ALL), .s390x = 1, .amd64 = 0, .x86 = 0, .arm = 0, .ppc64 = 1, .ppc32 = 1, .mips32 = 0, .mips64 = 1 }, -- { DEFOP(Iop_MAddF64r32, UNDEF_ALL), .s390x = 0, .amd64 = 0, .x86 = 0, .arm = 0, .ppc64 = 1, .ppc32 = 1, .mips32 = 0, .mips64 = 0 }, -- { DEFOP(Iop_MSubF64r32, UNDEF_ALL), .s390x = 0, .amd64 = 0, .x86 = 0, .arm = 0, .ppc64 = 1, .ppc32 = 1, .mips32 = 0, .mips64 = 0 }, -- { DEFOP(Iop_RSqrtEst5GoodF64, UNDEF_ALL), .s390x = 0, .amd64 = 0, .x86 = 0, .arm = 0, .ppc64 = 1, .ppc32 = 1, .mips32 = 0, .mips64 = 0 }, -- { DEFOP(Iop_RoundF64toF64_NEAREST, UNDEF_ALL), .s390x = 0, .amd64 = 0, .x86 = 0, .arm = 0, .ppc64 = 1, .ppc32 = 1, .mips32 = 0, .mips64 = 1 }, -- { DEFOP(Iop_RoundF64toF64_NegINF, UNDEF_ALL), .s390x = 0, .amd64 = 0, .x86 = 0, .arm = 0, .ppc64 = 1, .ppc32 = 1, .mips32 = 0, .mips64 = 1 }, -- { DEFOP(Iop_RoundF64toF64_PosINF, UNDEF_ALL), .s390x = 0, .amd64 = 0, .x86 = 0, .arm = 0, .ppc64 = 1, .ppc32 = 1, .mips32 = 0, .mips64 = 1 }, -- { DEFOP(Iop_RoundF64toF64_ZERO, UNDEF_ALL), .s390x = 0, .amd64 = 0, .x86 = 0, .arm = 0, .ppc64 = 1, .ppc32 = 1, .mips32 = 0, .mips64 = 1 }, -- { DEFOP(Iop_TruncF64asF32, UNDEF_ALL), .s390x = 0, .amd64 = 0, .x86 = 0, .arm = 0, .ppc64 = 1, .ppc32 = 1, .mips32 = 0, .mips64 = 1 }, // mips asserts -- { DEFOP(Iop_RoundF64toF32, UNDEF_ALL), .s390x = 0, .amd64 = 0, .x86 = 0, .arm = 0, .ppc64 = 1, .ppc32 = 1, .mips32 = 0, .mips64 = 0 }, + { DEFOP(Iop_ReinterpI32asF32, UNDEF_SAME), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 1, .ppc64 = 0, .ppc32 = 0, .mips32 = 1, .mips64 = 1, .loongarch64 = 1 }, + { DEFOP(Iop_F64HLtoF128, UNDEF_CONCAT), .s390x = 1, .amd64 = 0, .x86 = 0, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 = 0, .mips64 = 0, .loongarch64 = 0 }, + { DEFOP(Iop_F128HItoF64, UNDEF_UPPER), .s390x = 1, .amd64 = 0, .x86 = 0, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 = 0, .mips64 = 0, .loongarch64 = 0 }, @@ -39114,7 +37269,25 @@ index 24f258b..89370f7 100644 + { DEFOP(Iop_2xm1F64, UNDEF_ALL), .s390x = 0, .amd64 = 1, .x86 = 1, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 = 0, .mips64 = 0, .loongarch64 = 0 }, + { DEFOP(Iop_RoundF128toInt, UNDEF_ALL), .s390x = 1, .amd64 = 0, .x86 = 0, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 = 0, .mips64 = 0, .loongarch64 = 0 }, + { DEFOP(Iop_RoundF64toInt, UNDEF_ALL), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 = 0, .mips64 = 1, .loongarch64 = 1 }, + { DEFOP(Iop_RoundF64toIntA0, UNDEF_ALL), .arm64 = 1 }, + { DEFOP(Iop_RoundF64toIntE, UNDEF_ALL), .arm64 = 1 }, +- { DEFOP(Iop_RoundF32toInt, UNDEF_ALL), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 = 1, .mips64 = 1 }, + { DEFOP(Iop_RoundF32toInt, UNDEF_ALL), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 = 1, .mips64 = 1, .loongarch64 = 1 }, + { DEFOP(Iop_RoundF32toIntA0, UNDEF_ALL), .arm64 = 1 }, + { DEFOP(Iop_RoundF32toIntE, UNDEF_ALL), .arm64 = 1 }, +- { DEFOP(Iop_MAddF32, UNDEF_ALL), .s390x = 1, .amd64 = 0, .x86 = 0, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 = 0, .mips64 = 1 }, +- { DEFOP(Iop_MSubF32, UNDEF_ALL), .s390x = 1, .amd64 = 0, .x86 = 0, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 = 0, .mips64 = 1 }, +- { DEFOP(Iop_MAddF64, UNDEF_ALL), .s390x = 1, .amd64 = 0, .x86 = 0, .arm = 0, .ppc64 = 1, .ppc32 = 1, .mips32 = 0, .mips64 = 1 }, +- { DEFOP(Iop_MSubF64, UNDEF_ALL), .s390x = 1, .amd64 = 0, .x86 = 0, .arm = 0, .ppc64 = 1, .ppc32 = 1, .mips32 = 0, .mips64 = 1 }, +- { DEFOP(Iop_MAddF64r32, UNDEF_ALL), .s390x = 0, .amd64 = 0, .x86 = 0, .arm = 0, .ppc64 = 1, .ppc32 = 1, .mips32 = 0, .mips64 = 0 }, +- { DEFOP(Iop_MSubF64r32, UNDEF_ALL), .s390x = 0, .amd64 = 0, .x86 = 0, .arm = 0, .ppc64 = 1, .ppc32 = 1, .mips32 = 0, .mips64 = 0 }, +- { DEFOP(Iop_RSqrtEst5GoodF64, UNDEF_ALL), .s390x = 0, .amd64 = 0, .x86 = 0, .arm = 0, .ppc64 = 1, .ppc32 = 1, .mips32 = 0, .mips64 = 0 }, +- { DEFOP(Iop_RoundF64toF64_NEAREST, UNDEF_ALL), .s390x = 0, .amd64 = 0, .x86 = 0, .arm = 0, .ppc64 = 1, .ppc32 = 1, .mips32 = 0, .mips64 = 1 }, +- { DEFOP(Iop_RoundF64toF64_NegINF, UNDEF_ALL), .s390x = 0, .amd64 = 0, .x86 = 0, .arm = 0, .ppc64 = 1, .ppc32 = 1, .mips32 = 0, .mips64 = 1 }, +- { DEFOP(Iop_RoundF64toF64_PosINF, UNDEF_ALL), .s390x = 0, .amd64 = 0, .x86 = 0, .arm = 0, .ppc64 = 1, .ppc32 = 1, .mips32 = 0, .mips64 = 1 }, +- { DEFOP(Iop_RoundF64toF64_ZERO, UNDEF_ALL), .s390x = 0, .amd64 = 0, .x86 = 0, .arm = 0, .ppc64 = 1, .ppc32 = 1, .mips32 = 0, .mips64 = 1 }, +- { DEFOP(Iop_TruncF64asF32, UNDEF_ALL), .s390x = 0, .amd64 = 0, .x86 = 0, .arm = 0, .ppc64 = 1, .ppc32 = 1, .mips32 = 0, .mips64 = 1 }, // mips asserts +- { DEFOP(Iop_RoundF64toF32, UNDEF_ALL), .s390x = 0, .amd64 = 0, .x86 = 0, .arm = 0, .ppc64 = 1, .ppc32 = 1, .mips32 = 0, .mips64 = 0 }, + { DEFOP(Iop_MAddF32, UNDEF_ALL), .s390x = 1, .amd64 = 0, .x86 = 0, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 = 0, .mips64 = 1, .loongarch64 = 1 }, + { DEFOP(Iop_MSubF32, UNDEF_ALL), .s390x = 1, .amd64 = 0, .x86 = 0, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 = 0, .mips64 = 1, .loongarch64 = 1 }, + { DEFOP(Iop_MAddF64, UNDEF_ALL), .s390x = 1, .amd64 = 0, .x86 = 0, .arm = 0, .ppc64 = 1, .ppc32 = 1, .mips32 = 0, .mips64 = 1, .loongarch64 = 1 }, @@ -39147,7 +37320,33 @@ index 24f258b..89370f7 100644 /* ------------------ 16-bit scalar FP ------------------ */ { DEFOP(Iop_F16toF64, UNDEF_ALL), .arm64 = 1 }, -@@ -1109,15 +1119,19 @@ static irop_t irops[] = { +@@ -677,6 +687,10 @@ static irop_t irops[] = { + { DEFOP(Iop_F16toF64x2, UNDEF_UNKNOWN), }, + { DEFOP(Iop_F32x4_2toQ16x8, UNDEF_UNKNOWN), }, + { DEFOP(Iop_F64x2_2toQ32x4, UNDEF_UNKNOWN), }, ++ { DEFOP(Iop_RoundF64x2_RM, UNDEF_UNKNOWN), }, ++ { DEFOP(Iop_RoundF64x2_RP, UNDEF_UNKNOWN), }, ++ { DEFOP(Iop_RoundF64x2_RN, UNDEF_UNKNOWN), }, ++ { DEFOP(Iop_RoundF64x2_RZ, UNDEF_UNKNOWN), }, + { DEFOP(Iop_Add32F0x4, UNDEF_UNKNOWN), }, + { DEFOP(Iop_Sub32F0x4, UNDEF_UNKNOWN), }, + { DEFOP(Iop_Mul32F0x4, UNDEF_UNKNOWN), }, +@@ -1011,6 +1025,14 @@ static irop_t irops[] = { + { DEFOP(Iop_Widen8Sto16x8, UNDEF_UNKNOWN), }, + { DEFOP(Iop_Widen16Sto32x4, UNDEF_UNKNOWN), }, + { DEFOP(Iop_Widen32Sto64x2, UNDEF_UNKNOWN), }, ++ { DEFOP(Iop_WidenHIto16Sx8, UNDEF_UNKNOWN), }, ++ { DEFOP(Iop_WidenHIto16Ux8, UNDEF_UNKNOWN), }, ++ { DEFOP(Iop_WidenHIto32Sx4, UNDEF_UNKNOWN), }, ++ { DEFOP(Iop_WidenHIto32Ux4, UNDEF_UNKNOWN), }, ++ { DEFOP(Iop_WidenHIto64Sx2, UNDEF_UNKNOWN), }, ++ { DEFOP(Iop_WidenHIto64Ux2, UNDEF_UNKNOWN), }, ++ { DEFOP(Iop_WidenHIto128Sx1, UNDEF_UNKNOWN), }, ++ { DEFOP(Iop_WidenHIto128Ux1, UNDEF_UNKNOWN), }, + { DEFOP(Iop_InterleaveHI8x16, UNDEF_UNKNOWN), }, + { DEFOP(Iop_InterleaveHI16x8, UNDEF_UNKNOWN), }, + { DEFOP(Iop_InterleaveHI32x4, UNDEF_UNKNOWN), }, +@@ -1113,15 +1135,19 @@ static irop_t irops[] = { { DEFOP(Iop_Max8Sx32, UNDEF_UNKNOWN), }, { DEFOP(Iop_Max16Sx16, UNDEF_UNKNOWN), }, { DEFOP(Iop_Max32Sx8, UNDEF_UNKNOWN), }, @@ -39168,10 +37367,10 @@ index 24f258b..89370f7 100644 { DEFOP(Iop_Mul32x8, UNDEF_UNKNOWN), }, { DEFOP(Iop_MulHi16Ux16, UNDEF_UNKNOWN), }, diff --git a/memcheck/tests/vbit-test/vtest.h b/memcheck/tests/vbit-test/vtest.h -index c724f41..fe17f67 100644 +index 5f2b2e03fbaf..33eaf3c1fa92 100644 --- a/memcheck/tests/vbit-test/vtest.h +++ b/memcheck/tests/vbit-test/vtest.h -@@ -179,15 +179,16 @@ typedef struct { +@@ -188,15 +188,16 @@ typedef struct { unsigned immediate_type; // Indicate whether IROp can be tested on a particular architecture @@ -39197,134 +37396,9 @@ index c724f41..fe17f67 100644 } irop_t; -diff --git a/memcheck/tests/x86-freebsd/Makefile.in b/memcheck/tests/x86-freebsd/Makefile.in -index 5bcbb87..9bcd33d 100644 ---- a/memcheck/tests/x86-freebsd/Makefile.in -+++ b/memcheck/tests/x86-freebsd/Makefile.in -@@ -578,6 +578,12 @@ AM_CFLAGS_PSO_MIPS64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ - $(AM_CFLAGS_PSO_BASE) - - AM_CCASFLAGS_MIPS64_LINUX = @FLAG_M64@ -g -+AM_FLAG_M3264_LOONGARCH64_LINUX = @FLAG_M64@ -+AM_CFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) -+AM_CFLAGS_PSO_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ -+ $(AM_CFLAGS_PSO_BASE) -+ -+AM_CCASFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ -g - AM_FLAG_M3264_X86_SOLARIS = @FLAG_M32@ - AM_CFLAGS_X86_SOLARIS = @FLAG_M32@ @PREFERRED_STACK_BOUNDARY_2@ \ - $(AM_CFLAGS_BASE) -fomit-frame-pointer @SOLARIS_UNDEF_LARGESOURCE@ -@@ -625,6 +631,7 @@ PRELOAD_LDFLAGS_S390X_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ - PRELOAD_LDFLAGS_MIPS32_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ - PRELOAD_LDFLAGS_NANOMIPS_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ - PRELOAD_LDFLAGS_MIPS64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ -+PRELOAD_LDFLAGS_LOONGARCH64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ - PRELOAD_LDFLAGS_X86_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M32@ - PRELOAD_LDFLAGS_AMD64_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M64@ - AM_CPPFLAGS = -I$(top_srcdir) -I$(top_srcdir)/include \ -diff --git a/memcheck/tests/x86-linux/Makefile.in b/memcheck/tests/x86-linux/Makefile.in -index 48dd441..168a21b 100644 ---- a/memcheck/tests/x86-linux/Makefile.in -+++ b/memcheck/tests/x86-linux/Makefile.in -@@ -614,6 +614,12 @@ AM_CFLAGS_PSO_MIPS64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ - $(AM_CFLAGS_PSO_BASE) - - AM_CCASFLAGS_MIPS64_LINUX = @FLAG_M64@ -g -+AM_FLAG_M3264_LOONGARCH64_LINUX = @FLAG_M64@ -+AM_CFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) -+AM_CFLAGS_PSO_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ -+ $(AM_CFLAGS_PSO_BASE) -+ -+AM_CCASFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ -g - AM_FLAG_M3264_X86_SOLARIS = @FLAG_M32@ - AM_CFLAGS_X86_SOLARIS = @FLAG_M32@ @PREFERRED_STACK_BOUNDARY_2@ \ - $(AM_CFLAGS_BASE) -fomit-frame-pointer @SOLARIS_UNDEF_LARGESOURCE@ -@@ -661,6 +667,7 @@ PRELOAD_LDFLAGS_S390X_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ - PRELOAD_LDFLAGS_MIPS32_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ - PRELOAD_LDFLAGS_NANOMIPS_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ - PRELOAD_LDFLAGS_MIPS64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ -+PRELOAD_LDFLAGS_LOONGARCH64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ - PRELOAD_LDFLAGS_X86_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M32@ - PRELOAD_LDFLAGS_AMD64_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M64@ - AM_CPPFLAGS = -I$(top_srcdir) -I$(top_srcdir)/include \ -diff --git a/memcheck/tests/x86-solaris/Makefile.in b/memcheck/tests/x86-solaris/Makefile.in -index 03dabc3..3762dd9 100644 ---- a/memcheck/tests/x86-solaris/Makefile.in -+++ b/memcheck/tests/x86-solaris/Makefile.in -@@ -606,6 +606,12 @@ AM_CFLAGS_PSO_MIPS64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ - $(AM_CFLAGS_PSO_BASE) - - AM_CCASFLAGS_MIPS64_LINUX = @FLAG_M64@ -g -+AM_FLAG_M3264_LOONGARCH64_LINUX = @FLAG_M64@ -+AM_CFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) -+AM_CFLAGS_PSO_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ -+ $(AM_CFLAGS_PSO_BASE) -+ -+AM_CCASFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ -g - AM_FLAG_M3264_X86_SOLARIS = @FLAG_M32@ - AM_CFLAGS_X86_SOLARIS = @FLAG_M32@ @PREFERRED_STACK_BOUNDARY_2@ \ - $(AM_CFLAGS_BASE) -fomit-frame-pointer @SOLARIS_UNDEF_LARGESOURCE@ -@@ -653,6 +659,7 @@ PRELOAD_LDFLAGS_S390X_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ - PRELOAD_LDFLAGS_MIPS32_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ - PRELOAD_LDFLAGS_NANOMIPS_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ - PRELOAD_LDFLAGS_MIPS64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ -+PRELOAD_LDFLAGS_LOONGARCH64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ - PRELOAD_LDFLAGS_X86_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M32@ - PRELOAD_LDFLAGS_AMD64_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M64@ - AM_CPPFLAGS = -I$(top_srcdir) -I$(top_srcdir)/include \ -diff --git a/memcheck/tests/x86/Makefile.in b/memcheck/tests/x86/Makefile.in -index 897ebd6..e4636dc 100644 ---- a/memcheck/tests/x86/Makefile.in -+++ b/memcheck/tests/x86/Makefile.in -@@ -654,6 +654,12 @@ AM_CFLAGS_PSO_MIPS64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ - $(AM_CFLAGS_PSO_BASE) - - AM_CCASFLAGS_MIPS64_LINUX = @FLAG_M64@ -g -+AM_FLAG_M3264_LOONGARCH64_LINUX = @FLAG_M64@ -+AM_CFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) -+AM_CFLAGS_PSO_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ -+ $(AM_CFLAGS_PSO_BASE) -+ -+AM_CCASFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ -g - AM_FLAG_M3264_X86_SOLARIS = @FLAG_M32@ - AM_CFLAGS_X86_SOLARIS = @FLAG_M32@ @PREFERRED_STACK_BOUNDARY_2@ \ - $(AM_CFLAGS_BASE) -fomit-frame-pointer @SOLARIS_UNDEF_LARGESOURCE@ -@@ -701,6 +707,7 @@ PRELOAD_LDFLAGS_S390X_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ - PRELOAD_LDFLAGS_MIPS32_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ - PRELOAD_LDFLAGS_NANOMIPS_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ - PRELOAD_LDFLAGS_MIPS64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ -+PRELOAD_LDFLAGS_LOONGARCH64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ - PRELOAD_LDFLAGS_X86_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M32@ - PRELOAD_LDFLAGS_AMD64_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M64@ - AM_CPPFLAGS = -I$(top_srcdir) -I$(top_srcdir)/include \ -diff --git a/mpi/Makefile.in b/mpi/Makefile.in -index 6d0024e..46bddc4 100644 ---- a/mpi/Makefile.in -+++ b/mpi/Makefile.in -@@ -567,6 +567,12 @@ AM_CFLAGS_PSO_MIPS64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ - $(AM_CFLAGS_PSO_BASE) - - AM_CCASFLAGS_MIPS64_LINUX = @FLAG_M64@ -g -+AM_FLAG_M3264_LOONGARCH64_LINUX = @FLAG_M64@ -+AM_CFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) -+AM_CFLAGS_PSO_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ -+ $(AM_CFLAGS_PSO_BASE) -+ -+AM_CCASFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ -g - AM_FLAG_M3264_X86_SOLARIS = @FLAG_M32@ - AM_CFLAGS_X86_SOLARIS = @FLAG_M32@ @PREFERRED_STACK_BOUNDARY_2@ \ - $(AM_CFLAGS_BASE) -fomit-frame-pointer @SOLARIS_UNDEF_LARGESOURCE@ -@@ -614,6 +620,7 @@ PRELOAD_LDFLAGS_S390X_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ - PRELOAD_LDFLAGS_MIPS32_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ - PRELOAD_LDFLAGS_NANOMIPS_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ - PRELOAD_LDFLAGS_MIPS64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ -+PRELOAD_LDFLAGS_LOONGARCH64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ - PRELOAD_LDFLAGS_X86_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M32@ - PRELOAD_LDFLAGS_AMD64_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M64@ - DEFAULT_INCLUDES = diff --git a/nightly/conf/loongarch64.conf b/nightly/conf/loongarch64.conf new file mode 100644 -index 0000000..8603671 +index 000000000000..8603671db8a0 --- /dev/null +++ b/nightly/conf/loongarch64.conf @@ -0,0 +1,3 @@ @@ -39333,7 +37407,7 @@ index 0000000..8603671 +export ABT_PERF="--vg=../valgrind-new --vg=../valgrind-old" diff --git a/nightly/conf/loongarch64.sendemail b/nightly/conf/loongarch64.sendemail new file mode 100644 -index 0000000..d784da3 +index 000000000000..d784da34f659 --- /dev/null +++ b/nightly/conf/loongarch64.sendemail @@ -0,0 +1,7 @@ @@ -39344,208 +37418,39 @@ index 0000000..d784da3 +file=$3 + +(cat "$body" "$file") | /usr/bin/mail -s "$subject" valgrind-testresults@lists.sourceforge.net -r "Feiyang Chen " -diff --git a/none/Makefile.in b/none/Makefile.in -index a8368f2..4d0c5c8 100644 ---- a/none/Makefile.in -+++ b/none/Makefile.in -@@ -619,6 +619,12 @@ AM_CFLAGS_PSO_MIPS64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ - $(AM_CFLAGS_PSO_BASE) - - AM_CCASFLAGS_MIPS64_LINUX = @FLAG_M64@ -g -+AM_FLAG_M3264_LOONGARCH64_LINUX = @FLAG_M64@ -+AM_CFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) -+AM_CFLAGS_PSO_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ -+ $(AM_CFLAGS_PSO_BASE) -+ -+AM_CCASFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ -g - AM_FLAG_M3264_X86_SOLARIS = @FLAG_M32@ - AM_CFLAGS_X86_SOLARIS = @FLAG_M32@ @PREFERRED_STACK_BOUNDARY_2@ \ - $(AM_CFLAGS_BASE) -fomit-frame-pointer @SOLARIS_UNDEF_LARGESOURCE@ -@@ -666,6 +672,7 @@ PRELOAD_LDFLAGS_S390X_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ - PRELOAD_LDFLAGS_MIPS32_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ - PRELOAD_LDFLAGS_NANOMIPS_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ - PRELOAD_LDFLAGS_MIPS64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ -+PRELOAD_LDFLAGS_LOONGARCH64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ - PRELOAD_LDFLAGS_X86_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M32@ - PRELOAD_LDFLAGS_AMD64_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M64@ - -@@ -756,6 +763,10 @@ TOOL_LDFLAGS_MIPS64_LINUX = \ - -static -nodefaultlibs -nostartfiles -u __start @FLAG_NO_BUILD_ID@ \ - @FLAG_M64@ - -+TOOL_LDFLAGS_LOONGARCH64_LINUX = \ -+ -static -nodefaultlibs -nostartfiles -u __start @FLAG_NO_BUILD_ID@ \ -+ @FLAG_M64@ -+ - TOOL_LDFLAGS_X86_SOLARIS = \ - $(TOOL_LDFLAGS_COMMON_SOLARIS) @FLAG_M32@ - -@@ -816,6 +827,9 @@ LIBREPLACEMALLOC_MIPS32_LINUX = \ - LIBREPLACEMALLOC_MIPS64_LINUX = \ - $(top_builddir)/coregrind/libreplacemalloc_toolpreload-mips64-linux.a - -+LIBREPLACEMALLOC_LOONGARCH64_LINUX = \ -+ $(top_builddir)/coregrind/libreplacemalloc_toolpreload-loongarch64-linux.a -+ - LIBREPLACEMALLOC_X86_SOLARIS = \ - $(top_builddir)/coregrind/libreplacemalloc_toolpreload-x86-solaris.a - -@@ -888,6 +902,11 @@ LIBREPLACEMALLOC_LDFLAGS_MIPS64_LINUX = \ - $(LIBREPLACEMALLOC_MIPS64_LINUX) \ - -Wl,--no-whole-archive - -+LIBREPLACEMALLOC_LDFLAGS_LOONGARCH64_LINUX = \ -+ -Wl,--whole-archive \ -+ $(LIBREPLACEMALLOC_LOONGARCH64_LINUX) \ -+ -Wl,--no-whole-archive -+ - LIBREPLACEMALLOC_LDFLAGS_X86_SOLARIS = \ - -Wl,--whole-archive \ - $(LIBREPLACEMALLOC_X86_SOLARIS) \ diff --git a/none/tests/Makefile.am b/none/tests/Makefile.am -index 253d4a1..c5943a0 100644 +index 043454828a99..88b4293b30ed 100644 --- a/none/tests/Makefile.am +++ b/none/tests/Makefile.am -@@ -35,7 +35,9 @@ endif +@@ -35,10 +35,14 @@ endif if VGCONF_ARCHS_INCLUDE_NANOMIPS SUBDIRS += nanomips endif -- ++ + if VGCONF_ARCHS_INCLUDE_RISCV64 + SUBDIRS += riscv64 + endif + +if VGCONF_ARCHS_INCLUDE_LOONGARCH64 +SUBDIRS += loongarch64 +endif # OS-specific tests if VGCONF_OS_IS_LINUX -@@ -75,8 +77,9 @@ SUBDIRS += x86-freebsd +@@ -78,7 +82,7 @@ SUBDIRS += x86-freebsd endif DIST_SUBDIRS = x86 amd64 ppc32 ppc64 arm arm64 s390x mips32 mips64 nanomips \ -- linux darwin solaris freebsd amd64-linux x86-linux amd64-darwin \ -- x86-darwin amd64-solaris x86-solaris x86-freebsd scripts . -+ loongarch64 linux darwin solaris freebsd amd64-linux x86-linux \ -+ amd64-darwin x86-darwin amd64-solaris x86-solaris x86-freebsd \ -+ scripts . - - dist_noinst_SCRIPTS = \ - filter_cmdline0 \ -diff --git a/none/tests/Makefile.in b/none/tests/Makefile.in -index c86429e..f33c222 100644 ---- a/none/tests/Makefile.in -+++ b/none/tests/Makefile.in -@@ -137,21 +137,22 @@ host_triplet = @host@ - @VGCONF_ARCHS_INCLUDE_MIPS32_TRUE@am__append_19 = mips32 - @VGCONF_ARCHS_INCLUDE_MIPS64_TRUE@am__append_20 = mips64 - @VGCONF_ARCHS_INCLUDE_NANOMIPS_TRUE@am__append_21 = nanomips -+@VGCONF_ARCHS_INCLUDE_LOONGARCH64_TRUE@am__append_22 = loongarch64 +- riscv64 linux darwin solaris freebsd amd64-linux x86-linux \ ++ riscv64 loongarch64 linux darwin solaris freebsd amd64-linux x86-linux \ + amd64-darwin x86-darwin amd64-solaris x86-solaris x86-freebsd \ + scripts . - # OS-specific tests --@VGCONF_OS_IS_LINUX_TRUE@am__append_22 = linux --@VGCONF_OS_IS_DARWIN_TRUE@am__append_23 = darwin --@VGCONF_OS_IS_SOLARIS_TRUE@am__append_24 = solaris --@VGCONF_OS_IS_FREEBSD_TRUE@am__append_25 = freebsd -+@VGCONF_OS_IS_LINUX_TRUE@am__append_23 = linux -+@VGCONF_OS_IS_DARWIN_TRUE@am__append_24 = darwin -+@VGCONF_OS_IS_SOLARIS_TRUE@am__append_25 = solaris -+@VGCONF_OS_IS_FREEBSD_TRUE@am__append_26 = freebsd - - # Platform-specific tests --@VGCONF_PLATFORMS_INCLUDE_AMD64_LINUX_TRUE@am__append_26 = amd64-linux --@VGCONF_PLATFORMS_INCLUDE_X86_LINUX_TRUE@am__append_27 = x86-linux --@VGCONF_PLATFORMS_INCLUDE_AMD64_DARWIN_TRUE@am__append_28 = amd64-darwin --@VGCONF_PLATFORMS_INCLUDE_X86_DARWIN_TRUE@am__append_29 = x86-darwin --@VGCONF_PLATFORMS_INCLUDE_AMD64_SOLARIS_TRUE@am__append_30 = amd64-solaris --@VGCONF_PLATFORMS_INCLUDE_X86_SOLARIS_TRUE@am__append_31 = x86-solaris --@VGCONF_PLATFORMS_INCLUDE_X86_FREEBSD_TRUE@am__append_32 = x86-freebsd -+@VGCONF_PLATFORMS_INCLUDE_AMD64_LINUX_TRUE@am__append_27 = amd64-linux -+@VGCONF_PLATFORMS_INCLUDE_X86_LINUX_TRUE@am__append_28 = x86-linux -+@VGCONF_PLATFORMS_INCLUDE_AMD64_DARWIN_TRUE@am__append_29 = amd64-darwin -+@VGCONF_PLATFORMS_INCLUDE_X86_DARWIN_TRUE@am__append_30 = x86-darwin -+@VGCONF_PLATFORMS_INCLUDE_AMD64_SOLARIS_TRUE@am__append_31 = amd64-solaris -+@VGCONF_PLATFORMS_INCLUDE_X86_SOLARIS_TRUE@am__append_32 = x86-solaris -+@VGCONF_PLATFORMS_INCLUDE_X86_FREEBSD_TRUE@am__append_33 = x86-freebsd - check_PROGRAMS = args$(EXEEXT) async-sigs$(EXEEXT) bitfield1$(EXEEXT) \ - bug129866$(EXEEXT) bug234814$(EXEEXT) closeall$(EXEEXT) \ - coolo_strlen$(EXEEXT) discard$(EXEEXT) exec-sigmask$(EXEEXT) \ -@@ -188,17 +189,17 @@ check_PROGRAMS = args$(EXEEXT) async-sigs$(EXEEXT) bitfield1$(EXEEXT) \ - gxx304$(EXEEXT) process_vm_readv_writev$(EXEEXT) \ - sigprocmask$(EXEEXT) $(am__EXEEXT_1) $(am__EXEEXT_2) \ - $(am__EXEEXT_3) $(am__EXEEXT_4) $(am__EXEEXT_5) --@HAVE_NESTED_FUNCTIONS_TRUE@am__append_33 = nestedfns -+@HAVE_NESTED_FUNCTIONS_TRUE@am__append_34 = nestedfns - - # This doesn't appear to be compilable on Darwin. --@VGCONF_OS_IS_DARWIN_OR_FREEBSD_FALSE@am__append_34 = rlimit64_nofile --@VGCONF_OS_IS_DARWIN_FALSE@am__append_35 = ppoll_alarm -+@VGCONF_OS_IS_DARWIN_OR_FREEBSD_FALSE@am__append_35 = rlimit64_nofile -+@VGCONF_OS_IS_DARWIN_FALSE@am__append_36 = ppoll_alarm - - # older (?) clang does not know -ansi --@HAVE_ANSI_TRUE@am__append_36 = ansi --@BUILD_IFUNC_TESTS_TRUE@am__append_37 = ifunc --@VGCONF_OS_IS_SOLARIS_TRUE@am__append_38 = -U_REENTRANT --@VGCONF_OS_IS_SOLARIS_TRUE@am__append_39 = -Du_int32_t=uint32_t -+@HAVE_ANSI_TRUE@am__append_37 = ansi -+@BUILD_IFUNC_TESTS_TRUE@am__append_38 = ifunc -+@VGCONF_OS_IS_SOLARIS_TRUE@am__append_39 = -U_REENTRANT -+@VGCONF_OS_IS_SOLARIS_TRUE@am__append_40 = -Du_int32_t=uint32_t - subdir = none/tests - ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 - am__aclocal_m4_deps = $(top_srcdir)/configure.ac -@@ -1109,6 +1110,12 @@ AM_CFLAGS_PSO_MIPS64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ - $(AM_CFLAGS_PSO_BASE) - - AM_CCASFLAGS_MIPS64_LINUX = @FLAG_M64@ -g -+AM_FLAG_M3264_LOONGARCH64_LINUX = @FLAG_M64@ -+AM_CFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) -+AM_CFLAGS_PSO_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ -+ $(AM_CFLAGS_PSO_BASE) -+ -+AM_CCASFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ -g - AM_FLAG_M3264_X86_SOLARIS = @FLAG_M32@ - AM_CFLAGS_X86_SOLARIS = @FLAG_M32@ @PREFERRED_STACK_BOUNDARY_2@ \ - $(AM_CFLAGS_BASE) -fomit-frame-pointer @SOLARIS_UNDEF_LARGESOURCE@ -@@ -1156,6 +1163,7 @@ PRELOAD_LDFLAGS_S390X_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ - PRELOAD_LDFLAGS_MIPS32_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ - PRELOAD_LDFLAGS_NANOMIPS_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ - PRELOAD_LDFLAGS_MIPS64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ -+PRELOAD_LDFLAGS_LOONGARCH64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ - PRELOAD_LDFLAGS_X86_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M32@ - PRELOAD_LDFLAGS_AMD64_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M64@ - AM_CPPFLAGS = -I$(top_srcdir) -I$(top_srcdir)/include \ -@@ -1184,10 +1192,12 @@ SUBDIRS = . scripts $(am__append_12) $(am__append_13) $(am__append_14) \ - $(am__append_21) $(am__append_22) $(am__append_23) \ - $(am__append_24) $(am__append_25) $(am__append_26) \ - $(am__append_27) $(am__append_28) $(am__append_29) \ -- $(am__append_30) $(am__append_31) $(am__append_32) -+ $(am__append_30) $(am__append_31) $(am__append_32) \ -+ $(am__append_33) - DIST_SUBDIRS = x86 amd64 ppc32 ppc64 arm arm64 s390x mips32 mips64 nanomips \ -- linux darwin solaris freebsd amd64-linux x86-linux amd64-darwin \ -- x86-darwin amd64-solaris x86-solaris x86-freebsd scripts . -+ loongarch64 linux darwin solaris freebsd amd64-linux x86-linux \ -+ amd64-darwin x86-darwin amd64-solaris x86-solaris x86-freebsd \ -+ scripts . - - dist_noinst_SCRIPTS = \ - filter_cmdline0 \ -@@ -1386,9 +1396,9 @@ pth_term_signal_LDADD = -lpthread - @VGCONF_OS_IS_FREEBSD_TRUE@res_search_LDADD = -lpthread - @VGCONF_OS_IS_FREEBSD_FALSE@resolv_LDADD = -lresolv -lpthread - @VGCONF_OS_IS_FREEBSD_TRUE@resolv_LDADD = -lpthread --resolv_CFLAGS = $(AM_CFLAGS) $(am__append_38) -+resolv_CFLAGS = $(AM_CFLAGS) $(am__append_39) - semlimit_LDADD = -lpthread --sha1_test_CFLAGS = $(AM_CFLAGS) $(am__append_39) -+sha1_test_CFLAGS = $(AM_CFLAGS) $(am__append_40) - sigsusp_LDADD = -lpthread - thread_exits_LDADD = -lpthread - threaded_fork_LDADD = -lpthread diff --git a/none/tests/allexec_prepare_prereq b/none/tests/allexec_prepare_prereq -index a541f42..49c45c7 100755 +index fa4d31706991..2cb4722b9a27 100755 --- a/none/tests/allexec_prepare_prereq +++ b/none/tests/allexec_prepare_prereq -@@ -28,11 +28,12 @@ pair() +@@ -28,12 +28,13 @@ pair() } @@ -39555,289 +37460,82 @@ index a541f42..49c45c7 100755 -pair arm arm64 -pair mips32 mips64 -pair nanomips nanoMIPS_unexisting_in_64bits +-pair riscv_unexisting_in_32bits riscv64 +pair x86 amd64 +pair ppc32 ppc64 +pair s390x_unexisting_in_32bits s390x +pair arm arm64 +pair mips32 mips64 +pair nanomips nanoMIPS_unexisting_in_64bits ++pair riscv_unexisting_in_32bits riscv64 +pair loongarch_unexisting_in_32bits loongarch64 exit 0 -diff --git a/none/tests/amd64-darwin/Makefile.in b/none/tests/amd64-darwin/Makefile.in -index 053b4b0..06e8bda 100644 ---- a/none/tests/amd64-darwin/Makefile.in -+++ b/none/tests/amd64-darwin/Makefile.in -@@ -570,6 +570,12 @@ AM_CFLAGS_PSO_MIPS64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ - $(AM_CFLAGS_PSO_BASE) - - AM_CCASFLAGS_MIPS64_LINUX = @FLAG_M64@ -g -+AM_FLAG_M3264_LOONGARCH64_LINUX = @FLAG_M64@ -+AM_CFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) -+AM_CFLAGS_PSO_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ -+ $(AM_CFLAGS_PSO_BASE) -+ -+AM_CCASFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ -g - AM_FLAG_M3264_X86_SOLARIS = @FLAG_M32@ - AM_CFLAGS_X86_SOLARIS = @FLAG_M32@ @PREFERRED_STACK_BOUNDARY_2@ \ - $(AM_CFLAGS_BASE) -fomit-frame-pointer @SOLARIS_UNDEF_LARGESOURCE@ -@@ -617,6 +623,7 @@ PRELOAD_LDFLAGS_S390X_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ - PRELOAD_LDFLAGS_MIPS32_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ - PRELOAD_LDFLAGS_NANOMIPS_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ - PRELOAD_LDFLAGS_MIPS64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ -+PRELOAD_LDFLAGS_LOONGARCH64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ - PRELOAD_LDFLAGS_X86_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M32@ - PRELOAD_LDFLAGS_AMD64_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M64@ - AM_CPPFLAGS = -I$(top_srcdir) -I$(top_srcdir)/include \ -diff --git a/none/tests/amd64-linux/Makefile.in b/none/tests/amd64-linux/Makefile.in -index 1bd04dc..ba1810a 100644 ---- a/none/tests/amd64-linux/Makefile.in -+++ b/none/tests/amd64-linux/Makefile.in -@@ -578,6 +578,12 @@ AM_CFLAGS_PSO_MIPS64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ - $(AM_CFLAGS_PSO_BASE) - - AM_CCASFLAGS_MIPS64_LINUX = @FLAG_M64@ -g -+AM_FLAG_M3264_LOONGARCH64_LINUX = @FLAG_M64@ -+AM_CFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) -+AM_CFLAGS_PSO_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ -+ $(AM_CFLAGS_PSO_BASE) -+ -+AM_CCASFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ -g - AM_FLAG_M3264_X86_SOLARIS = @FLAG_M32@ - AM_CFLAGS_X86_SOLARIS = @FLAG_M32@ @PREFERRED_STACK_BOUNDARY_2@ \ - $(AM_CFLAGS_BASE) -fomit-frame-pointer @SOLARIS_UNDEF_LARGESOURCE@ -@@ -625,6 +631,7 @@ PRELOAD_LDFLAGS_S390X_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ - PRELOAD_LDFLAGS_MIPS32_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ - PRELOAD_LDFLAGS_NANOMIPS_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ - PRELOAD_LDFLAGS_MIPS64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ -+PRELOAD_LDFLAGS_LOONGARCH64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ - PRELOAD_LDFLAGS_X86_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M32@ - PRELOAD_LDFLAGS_AMD64_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M64@ - AM_CPPFLAGS = -I$(top_srcdir) -I$(top_srcdir)/include \ -diff --git a/none/tests/amd64-solaris/Makefile.in b/none/tests/amd64-solaris/Makefile.in -index 6d942c7..a86893a 100644 ---- a/none/tests/amd64-solaris/Makefile.in -+++ b/none/tests/amd64-solaris/Makefile.in -@@ -583,6 +583,12 @@ AM_CFLAGS_PSO_MIPS64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ - $(AM_CFLAGS_PSO_BASE) - - AM_CCASFLAGS_MIPS64_LINUX = @FLAG_M64@ -g -+AM_FLAG_M3264_LOONGARCH64_LINUX = @FLAG_M64@ -+AM_CFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) -+AM_CFLAGS_PSO_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ -+ $(AM_CFLAGS_PSO_BASE) -+ -+AM_CCASFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ -g - AM_FLAG_M3264_X86_SOLARIS = @FLAG_M32@ - AM_CFLAGS_X86_SOLARIS = @FLAG_M32@ @PREFERRED_STACK_BOUNDARY_2@ \ - $(AM_CFLAGS_BASE) -fomit-frame-pointer @SOLARIS_UNDEF_LARGESOURCE@ -@@ -630,6 +636,7 @@ PRELOAD_LDFLAGS_S390X_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ - PRELOAD_LDFLAGS_MIPS32_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ - PRELOAD_LDFLAGS_NANOMIPS_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ - PRELOAD_LDFLAGS_MIPS64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ -+PRELOAD_LDFLAGS_LOONGARCH64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ - PRELOAD_LDFLAGS_X86_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M32@ - PRELOAD_LDFLAGS_AMD64_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M64@ - AM_CPPFLAGS = -I$(top_srcdir) -I$(top_srcdir)/include \ -diff --git a/none/tests/amd64/Makefile.in b/none/tests/amd64/Makefile.in -index 5f37f72..e1bcf12 100644 ---- a/none/tests/amd64/Makefile.in -+++ b/none/tests/amd64/Makefile.in -@@ -913,6 +913,12 @@ AM_CFLAGS_PSO_MIPS64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ - $(AM_CFLAGS_PSO_BASE) - - AM_CCASFLAGS_MIPS64_LINUX = @FLAG_M64@ -g -+AM_FLAG_M3264_LOONGARCH64_LINUX = @FLAG_M64@ -+AM_CFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) -+AM_CFLAGS_PSO_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ -+ $(AM_CFLAGS_PSO_BASE) -+ -+AM_CCASFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ -g - AM_FLAG_M3264_X86_SOLARIS = @FLAG_M32@ - AM_CFLAGS_X86_SOLARIS = @FLAG_M32@ @PREFERRED_STACK_BOUNDARY_2@ \ - $(AM_CFLAGS_BASE) -fomit-frame-pointer @SOLARIS_UNDEF_LARGESOURCE@ -@@ -960,6 +966,7 @@ PRELOAD_LDFLAGS_S390X_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ - PRELOAD_LDFLAGS_MIPS32_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ - PRELOAD_LDFLAGS_NANOMIPS_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ - PRELOAD_LDFLAGS_MIPS64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ -+PRELOAD_LDFLAGS_LOONGARCH64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ - PRELOAD_LDFLAGS_X86_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M32@ - PRELOAD_LDFLAGS_AMD64_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M64@ - AM_CPPFLAGS = -I$(top_srcdir) -I$(top_srcdir)/include \ -diff --git a/none/tests/arm/Makefile.in b/none/tests/arm/Makefile.in -index ad8ba1a..f17f02f 100644 ---- a/none/tests/arm/Makefile.in -+++ b/none/tests/arm/Makefile.in -@@ -680,6 +680,12 @@ AM_CFLAGS_PSO_MIPS64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ - $(AM_CFLAGS_PSO_BASE) - - AM_CCASFLAGS_MIPS64_LINUX = @FLAG_M64@ -g -+AM_FLAG_M3264_LOONGARCH64_LINUX = @FLAG_M64@ -+AM_CFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) -+AM_CFLAGS_PSO_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ -+ $(AM_CFLAGS_PSO_BASE) -+ -+AM_CCASFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ -g - AM_FLAG_M3264_X86_SOLARIS = @FLAG_M32@ - AM_CFLAGS_X86_SOLARIS = @FLAG_M32@ @PREFERRED_STACK_BOUNDARY_2@ \ - $(AM_CFLAGS_BASE) -fomit-frame-pointer @SOLARIS_UNDEF_LARGESOURCE@ -@@ -727,6 +733,7 @@ PRELOAD_LDFLAGS_S390X_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ - PRELOAD_LDFLAGS_MIPS32_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ - PRELOAD_LDFLAGS_NANOMIPS_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ - PRELOAD_LDFLAGS_MIPS64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ -+PRELOAD_LDFLAGS_LOONGARCH64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ - PRELOAD_LDFLAGS_X86_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M32@ - PRELOAD_LDFLAGS_AMD64_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M64@ - AM_CPPFLAGS = -I$(top_srcdir) -I$(top_srcdir)/include \ -diff --git a/none/tests/arm64/Makefile.in b/none/tests/arm64/Makefile.in -index 2ece958..652d21b 100644 ---- a/none/tests/arm64/Makefile.in -+++ b/none/tests/arm64/Makefile.in -@@ -635,6 +635,12 @@ AM_CFLAGS_PSO_MIPS64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ - $(AM_CFLAGS_PSO_BASE) - - AM_CCASFLAGS_MIPS64_LINUX = @FLAG_M64@ -g -+AM_FLAG_M3264_LOONGARCH64_LINUX = @FLAG_M64@ -+AM_CFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) -+AM_CFLAGS_PSO_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ -+ $(AM_CFLAGS_PSO_BASE) -+ -+AM_CCASFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ -g - AM_FLAG_M3264_X86_SOLARIS = @FLAG_M32@ - AM_CFLAGS_X86_SOLARIS = @FLAG_M32@ @PREFERRED_STACK_BOUNDARY_2@ \ - $(AM_CFLAGS_BASE) -fomit-frame-pointer @SOLARIS_UNDEF_LARGESOURCE@ -@@ -682,6 +688,7 @@ PRELOAD_LDFLAGS_S390X_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ - PRELOAD_LDFLAGS_MIPS32_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ - PRELOAD_LDFLAGS_NANOMIPS_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ - PRELOAD_LDFLAGS_MIPS64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ -+PRELOAD_LDFLAGS_LOONGARCH64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ - PRELOAD_LDFLAGS_X86_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M32@ - PRELOAD_LDFLAGS_AMD64_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M64@ - AM_CPPFLAGS = -I$(top_srcdir) -I$(top_srcdir)/include \ -diff --git a/none/tests/darwin/Makefile.in b/none/tests/darwin/Makefile.in -index ed42225..9818e4b 100644 ---- a/none/tests/darwin/Makefile.in -+++ b/none/tests/darwin/Makefile.in -@@ -583,6 +583,12 @@ AM_CFLAGS_PSO_MIPS64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ - $(AM_CFLAGS_PSO_BASE) +diff --git a/none/tests/filter_fdleak b/none/tests/filter_fdleak +index 2cc537df7281..fdb5c3435114 100755 +--- a/none/tests/filter_fdleak ++++ b/none/tests/filter_fdleak +@@ -68,8 +68,9 @@ sed "s/by 0x........: write (.*)/by 0x........: write/" | + sed "s/by 0x........: close (.*)/by 0x........: close/" | - AM_CCASFLAGS_MIPS64_LINUX = @FLAG_M64@ -g -+AM_FLAG_M3264_LOONGARCH64_LINUX = @FLAG_M64@ -+AM_CFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) -+AM_CFLAGS_PSO_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ -+ $(AM_CFLAGS_PSO_BASE) -+ -+AM_CCASFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ -g - AM_FLAG_M3264_X86_SOLARIS = @FLAG_M32@ - AM_CFLAGS_X86_SOLARIS = @FLAG_M32@ @PREFERRED_STACK_BOUNDARY_2@ \ - $(AM_CFLAGS_BASE) -fomit-frame-pointer @SOLARIS_UNDEF_LARGESOURCE@ -@@ -630,6 +636,7 @@ PRELOAD_LDFLAGS_S390X_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ - PRELOAD_LDFLAGS_MIPS32_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ - PRELOAD_LDFLAGS_NANOMIPS_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ - PRELOAD_LDFLAGS_MIPS64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ -+PRELOAD_LDFLAGS_LOONGARCH64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ - PRELOAD_LDFLAGS_X86_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M32@ - PRELOAD_LDFLAGS_AMD64_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M64@ - AM_CPPFLAGS = -I$(top_srcdir) -I$(top_srcdir)/include \ -diff --git a/none/tests/freebsd/Makefile.in b/none/tests/freebsd/Makefile.in -index 077b910..59d4d05 100644 ---- a/none/tests/freebsd/Makefile.in -+++ b/none/tests/freebsd/Makefile.in -@@ -617,6 +617,12 @@ AM_CFLAGS_PSO_MIPS64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ - $(AM_CFLAGS_PSO_BASE) - - AM_CCASFLAGS_MIPS64_LINUX = @FLAG_M64@ -g -+AM_FLAG_M3264_LOONGARCH64_LINUX = @FLAG_M64@ -+AM_CFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) -+AM_CFLAGS_PSO_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ -+ $(AM_CFLAGS_PSO_BASE) -+ -+AM_CCASFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ -g - AM_FLAG_M3264_X86_SOLARIS = @FLAG_M32@ - AM_CFLAGS_X86_SOLARIS = @FLAG_M32@ @PREFERRED_STACK_BOUNDARY_2@ \ - $(AM_CFLAGS_BASE) -fomit-frame-pointer @SOLARIS_UNDEF_LARGESOURCE@ -@@ -664,6 +670,7 @@ PRELOAD_LDFLAGS_S390X_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ - PRELOAD_LDFLAGS_MIPS32_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ - PRELOAD_LDFLAGS_NANOMIPS_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ - PRELOAD_LDFLAGS_MIPS64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ -+PRELOAD_LDFLAGS_LOONGARCH64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ - PRELOAD_LDFLAGS_X86_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M32@ - PRELOAD_LDFLAGS_AMD64_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M64@ - AM_CPPFLAGS = -I$(top_srcdir) -I$(top_srcdir)/include \ + # With glibc debuginfo installed we might see syscall-template.S, +-# dup2.c close.c or creat64.c ++# dup2.c close.c creat64.c or write.c + perl -p -e "s/\(syscall-template.S:[0-9]*\)/(in \/...libc...)/" | + perl -p -e "s/\(close.c:[0-9]*\)/(in \/...libc...)/" | + perl -p -e "s/\(creat(?:64)?.c:[0-9]*\)/(in \/...libc...)/" | +-perl -p -e "s/\(dup2.c:[0-9]*\)/(in \/...libc...)/" ++perl -p -e "s/\(dup2.c:[0-9]*\)/(in \/...libc...)/" | ++perl -p -e "s/\(write.c:[0-9]*\)/(in \/...libc...)/" diff --git a/none/tests/libvex_test.c b/none/tests/libvex_test.c -index 5b57a4c..3080ce6 100644 +index 6a8086aced0b..9e35cf8f0673 100644 --- a/none/tests/libvex_test.c +++ b/none/tests/libvex_test.c -@@ -76,6 +76,8 @@ __attribute__((noinline)) static void get_guest_arch(VexArch *ga) - *ga = VexArchMIPS64; - #elif defined(VGA_nanomips) +@@ -78,6 +78,8 @@ __attribute__((noinline)) static void get_guest_arch(VexArch *ga) *ga = VexArchNANOMIPS; + #elif defined(VGA_riscv64) + *ga = VexArchRISCV64; +#elif defined(VGA_loongarch64) + *ga = VexArchLOONGARCH64; #else missing arch; #endif -@@ -113,6 +115,7 @@ static VexEndness arch_endness (VexArch va) { - else +@@ -116,6 +118,7 @@ static VexEndness arch_endness (VexArch va) { return VexEndnessBE; } + case VexArchRISCV64: return VexEndnessLE; + case VexArchLOONGARCH64: return VexEndnessLE; default: failure_exit(); } } -@@ -139,6 +142,7 @@ static UInt arch_hwcaps (VexArch va) { - case VexArchMIPS64: return VEX_PRID_COMP_MIPS | VEX_MIPS_HOST_FR; +@@ -143,6 +146,7 @@ static UInt arch_hwcaps (VexArch va) { #endif case VexArchNANOMIPS: return 0; + case VexArchRISCV64: return 0; + case VexArchLOONGARCH64: return VEX_HWCAPS_LOONGARCH_ISA_64BIT; default: failure_exit(); } } -@@ -156,6 +160,7 @@ static Bool mode64 (VexArch va) { - case VexArchMIPS32: return False; +@@ -161,6 +165,7 @@ static Bool mode64 (VexArch va) { case VexArchMIPS64: return True; case VexArchNANOMIPS: return False; + case VexArchRISCV64: return True; + case VexArchLOONGARCH64: return True; default: failure_exit(); } } -@@ -275,7 +280,7 @@ int main(int argc, char **argv) +@@ -280,7 +285,7 @@ int main(int argc, char **argv) // explicitly via command line arguments. if (multiarch) { VexArch va; -- for (va = VexArchX86; va <= VexArchNANOMIPS; va++) { +- for (va = VexArchX86; va <= VexArchRISCV64; va++) { + for (va = VexArchX86; va <= VexArchLOONGARCH64; va++) { vta.arch_host = va; vta.archinfo_host.endness = arch_endness (vta.arch_host); vta.archinfo_host.hwcaps = arch_hwcaps (vta.arch_host); -diff --git a/none/tests/linux/Makefile.in b/none/tests/linux/Makefile.in -index 38d0563..8dd49c1 100644 ---- a/none/tests/linux/Makefile.in -+++ b/none/tests/linux/Makefile.in -@@ -625,6 +625,12 @@ AM_CFLAGS_PSO_MIPS64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ - $(AM_CFLAGS_PSO_BASE) - - AM_CCASFLAGS_MIPS64_LINUX = @FLAG_M64@ -g -+AM_FLAG_M3264_LOONGARCH64_LINUX = @FLAG_M64@ -+AM_CFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) -+AM_CFLAGS_PSO_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ -+ $(AM_CFLAGS_PSO_BASE) -+ -+AM_CCASFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ -g - AM_FLAG_M3264_X86_SOLARIS = @FLAG_M32@ - AM_CFLAGS_X86_SOLARIS = @FLAG_M32@ @PREFERRED_STACK_BOUNDARY_2@ \ - $(AM_CFLAGS_BASE) -fomit-frame-pointer @SOLARIS_UNDEF_LARGESOURCE@ -@@ -672,6 +678,7 @@ PRELOAD_LDFLAGS_S390X_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ - PRELOAD_LDFLAGS_MIPS32_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ - PRELOAD_LDFLAGS_NANOMIPS_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ - PRELOAD_LDFLAGS_MIPS64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ -+PRELOAD_LDFLAGS_LOONGARCH64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ - PRELOAD_LDFLAGS_X86_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M32@ - PRELOAD_LDFLAGS_AMD64_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M64@ - AM_CPPFLAGS = -I$(top_srcdir) -I$(top_srcdir)/include \ diff --git a/none/tests/loongarch64/Makefile.am b/none/tests/loongarch64/Makefile.am new file mode 100644 -index 0000000..01ec3e6 +index 000000000000..01ec3e6f4f78 --- /dev/null +++ b/none/tests/loongarch64/Makefile.am @@ -0,0 +1,43 @@ @@ -39886,7 +37584,7 @@ index 0000000..01ec3e6 +allexec_CFLAGS = $(AM_CFLAGS) @FLAG_W_NO_NONNULL@ diff --git a/none/tests/loongarch64/allexec.c b/none/tests/loongarch64/allexec.c new file mode 100644 -index 0000000..69e1208 +index 000000000000..69e12081a1f8 --- /dev/null +++ b/none/tests/loongarch64/allexec.c @@ -0,0 +1,56 @@ @@ -39948,7 +37646,7 @@ index 0000000..69e1208 +} diff --git a/none/tests/loongarch64/atomic.c b/none/tests/loongarch64/atomic.c new file mode 100644 -index 0000000..916d5f7 +index 000000000000..916d5f787b09 --- /dev/null +++ b/none/tests/loongarch64/atomic.c @@ -0,0 +1,75 @@ @@ -40029,10 +37727,10 @@ index 0000000..916d5f7 +} diff --git a/none/tests/loongarch64/atomic.stderr.exp b/none/tests/loongarch64/atomic.stderr.exp new file mode 100644 -index 0000000..e69de29 +index 000000000000..e69de29bb2d1 diff --git a/none/tests/loongarch64/atomic.stdout.exp b/none/tests/loongarch64/atomic.stdout.exp new file mode 100644 -index 0000000..7eab9eb +index 000000000000..7eab9ebd06e5 --- /dev/null +++ b/none/tests/loongarch64/atomic.stdout.exp @@ -0,0 +1,72 @@ @@ -40110,7 +37808,7 @@ index 0000000..7eab9eb +old: 6 new: 6 diff --git a/none/tests/loongarch64/atomic.vgtest b/none/tests/loongarch64/atomic.vgtest new file mode 100644 -index 0000000..8fe5ce5 +index 000000000000..8fe5ce5f3250 --- /dev/null +++ b/none/tests/loongarch64/atomic.vgtest @@ -0,0 +1,3 @@ @@ -40119,7 +37817,7 @@ index 0000000..8fe5ce5 +vgopts: -q diff --git a/none/tests/loongarch64/branch.c b/none/tests/loongarch64/branch.c new file mode 100644 -index 0000000..e702d3f +index 000000000000..e702d3fa1f19 --- /dev/null +++ b/none/tests/loongarch64/branch.c @@ -0,0 +1,148 @@ @@ -40273,10 +37971,10 @@ index 0000000..e702d3f +} diff --git a/none/tests/loongarch64/branch.stderr.exp b/none/tests/loongarch64/branch.stderr.exp new file mode 100644 -index 0000000..e69de29 +index 000000000000..e69de29bb2d1 diff --git a/none/tests/loongarch64/branch.stdout.exp b/none/tests/loongarch64/branch.stdout.exp new file mode 100644 -index 0000000..0a32d6a +index 000000000000..0a32d6ad7e2b --- /dev/null +++ b/none/tests/loongarch64/branch.stdout.exp @@ -0,0 +1,64 @@ @@ -40346,7 +38044,7 @@ index 0000000..0a32d6a +res: 1 diff --git a/none/tests/loongarch64/branch.vgtest b/none/tests/loongarch64/branch.vgtest new file mode 100644 -index 0000000..535c055 +index 000000000000..535c0559027b --- /dev/null +++ b/none/tests/loongarch64/branch.vgtest @@ -0,0 +1,2 @@ @@ -40354,7 +38052,7 @@ index 0000000..535c055 +vgopts: -q diff --git a/none/tests/loongarch64/cpucfg.c b/none/tests/loongarch64/cpucfg.c new file mode 100644 -index 0000000..f5d0570 +index 000000000000..f5d0570eb2fa --- /dev/null +++ b/none/tests/loongarch64/cpucfg.c @@ -0,0 +1,24 @@ @@ -40384,10 +38082,10 @@ index 0000000..f5d0570 +} diff --git a/none/tests/loongarch64/cpucfg.stderr.exp b/none/tests/loongarch64/cpucfg.stderr.exp new file mode 100644 -index 0000000..e69de29 +index 000000000000..e69de29bb2d1 diff --git a/none/tests/loongarch64/cpucfg.stdout.exp b/none/tests/loongarch64/cpucfg.stdout.exp new file mode 100644 -index 0000000..49e0ba7 +index 000000000000..49e0ba7b1593 --- /dev/null +++ b/none/tests/loongarch64/cpucfg.stdout.exp @@ -0,0 +1,72 @@ @@ -40465,7 +38163,7 @@ index 0000000..49e0ba7 +output: 0 diff --git a/none/tests/loongarch64/cpucfg.vgtest b/none/tests/loongarch64/cpucfg.vgtest new file mode 100644 -index 0000000..fea9644 +index 000000000000..fea964445c34 --- /dev/null +++ b/none/tests/loongarch64/cpucfg.vgtest @@ -0,0 +1,3 @@ @@ -40474,7 +38172,7 @@ index 0000000..fea9644 +vgopts: -q diff --git a/none/tests/loongarch64/fault.c b/none/tests/loongarch64/fault.c new file mode 100644 -index 0000000..2941768 +index 000000000000..29417685768c --- /dev/null +++ b/none/tests/loongarch64/fault.c @@ -0,0 +1,234 @@ @@ -40714,7 +38412,7 @@ index 0000000..2941768 +} diff --git a/none/tests/loongarch64/fault.stderr.exp b/none/tests/loongarch64/fault.stderr.exp new file mode 100644 -index 0000000..3f56668 +index 000000000000..3f566684cb6b --- /dev/null +++ b/none/tests/loongarch64/fault.stderr.exp @@ -0,0 +1,138 @@ @@ -40858,7 +38556,7 @@ index 0000000..3f56668 +code: 1 diff --git a/none/tests/loongarch64/fault.stdout.exp b/none/tests/loongarch64/fault.stdout.exp new file mode 100644 -index 0000000..d2e342d +index 000000000000..d2e342df84f4 --- /dev/null +++ b/none/tests/loongarch64/fault.stdout.exp @@ -0,0 +1,267 @@ @@ -41131,7 +38829,7 @@ index 0000000..d2e342d +input: 100 diff --git a/none/tests/loongarch64/fault.vgtest b/none/tests/loongarch64/fault.vgtest new file mode 100644 -index 0000000..24bf21a +index 000000000000..24bf21afe77a --- /dev/null +++ b/none/tests/loongarch64/fault.vgtest @@ -0,0 +1,2 @@ @@ -41139,7 +38837,7 @@ index 0000000..24bf21a +vgopts: -q diff --git a/none/tests/loongarch64/fault_fp.c b/none/tests/loongarch64/fault_fp.c new file mode 100644 -index 0000000..0d5862d +index 000000000000..0d5862dcce68 --- /dev/null +++ b/none/tests/loongarch64/fault_fp.c @@ -0,0 +1,163 @@ @@ -41308,7 +39006,7 @@ index 0000000..0d5862d +} diff --git a/none/tests/loongarch64/fault_fp.stderr.exp b/none/tests/loongarch64/fault_fp.stderr.exp new file mode 100644 -index 0000000..a983dea +index 000000000000..a983dead47d4 --- /dev/null +++ b/none/tests/loongarch64/fault_fp.stderr.exp @@ -0,0 +1,64 @@ @@ -41378,7 +39076,7 @@ index 0000000..a983dea +no fault diff --git a/none/tests/loongarch64/fault_fp.stdout.exp b/none/tests/loongarch64/fault_fp.stdout.exp new file mode 100644 -index 0000000..254a123 +index 000000000000..254a12353140 --- /dev/null +++ b/none/tests/loongarch64/fault_fp.stdout.exp @@ -0,0 +1,189 @@ @@ -41573,7 +39271,7 @@ index 0000000..254a123 +0xb8: 0x000103003b373b3a diff --git a/none/tests/loongarch64/fault_fp.vgtest b/none/tests/loongarch64/fault_fp.vgtest new file mode 100644 -index 0000000..b750af8 +index 000000000000..b750af8ea788 --- /dev/null +++ b/none/tests/loongarch64/fault_fp.vgtest @@ -0,0 +1,3 @@ @@ -41582,7 +39280,7 @@ index 0000000..b750af8 +vgopts: -q diff --git a/none/tests/loongarch64/filter_stderr b/none/tests/loongarch64/filter_stderr new file mode 100755 -index 0000000..0ae9313 +index 000000000000..0ae9313a9f3f --- /dev/null +++ b/none/tests/loongarch64/filter_stderr @@ -0,0 +1,3 @@ @@ -41591,7 +39289,7 @@ index 0000000..0ae9313 +../filter_stderr diff --git a/none/tests/loongarch64/float.c b/none/tests/loongarch64/float.c new file mode 100644 -index 0000000..7aa1b6c +index 000000000000..7aa1b6c67295 --- /dev/null +++ b/none/tests/loongarch64/float.c @@ -0,0 +1,804 @@ @@ -42401,10 +40099,10 @@ index 0000000..7aa1b6c +} diff --git a/none/tests/loongarch64/float.stderr.exp b/none/tests/loongarch64/float.stderr.exp new file mode 100644 -index 0000000..e69de29 +index 000000000000..e69de29bb2d1 diff --git a/none/tests/loongarch64/float.stdout.exp b/none/tests/loongarch64/float.stdout.exp new file mode 100644 -index 0000000..f4914ff +index 000000000000..f4914ff0ca05 --- /dev/null +++ b/none/tests/loongarch64/float.stdout.exp @@ -0,0 +1,54240 @@ @@ -96650,7 +94348,7 @@ index 0000000..f4914ff +fcsr: 0x300 diff --git a/none/tests/loongarch64/float.vgtest b/none/tests/loongarch64/float.vgtest new file mode 100644 -index 0000000..e65d969 +index 000000000000..e65d9699bf3a --- /dev/null +++ b/none/tests/loongarch64/float.vgtest @@ -0,0 +1,3 @@ @@ -96659,7 +94357,7 @@ index 0000000..e65d969 +vgopts: -q diff --git a/none/tests/loongarch64/integer.c b/none/tests/loongarch64/integer.c new file mode 100644 -index 0000000..369d628 +index 000000000000..369d6285d90b --- /dev/null +++ b/none/tests/loongarch64/integer.c @@ -0,0 +1,1311 @@ @@ -97976,10 +95674,10 @@ index 0000000..369d628 +} diff --git a/none/tests/loongarch64/integer.stderr.exp b/none/tests/loongarch64/integer.stderr.exp new file mode 100644 -index 0000000..e69de29 +index 000000000000..e69de29bb2d1 diff --git a/none/tests/loongarch64/integer.stdout.exp b/none/tests/loongarch64/integer.stdout.exp new file mode 100644 -index 0000000..a4592b7 +index 000000000000..a4592b797035 --- /dev/null +++ b/none/tests/loongarch64/integer.stdout.exp @@ -0,0 +1,2748 @@ @@ -100733,7 +98431,7 @@ index 0000000..a4592b7 +after: $r12=0xffffffffb7862239, $r13=0xb60a8f381f187bae, $r14=0x008c208cc413ff72 diff --git a/none/tests/loongarch64/integer.vgtest b/none/tests/loongarch64/integer.vgtest new file mode 100644 -index 0000000..daa0591 +index 000000000000..daa059178a49 --- /dev/null +++ b/none/tests/loongarch64/integer.vgtest @@ -0,0 +1,2 @@ @@ -100741,7 +98439,7 @@ index 0000000..daa0591 +vgopts: -q diff --git a/none/tests/loongarch64/llsc.c b/none/tests/loongarch64/llsc.c new file mode 100644 -index 0000000..fcb7e3c +index 000000000000..fcb7e3cb3bff --- /dev/null +++ b/none/tests/loongarch64/llsc.c @@ -0,0 +1,69 @@ @@ -100816,10 +98514,10 @@ index 0000000..fcb7e3c +} diff --git a/none/tests/loongarch64/llsc.stderr.exp b/none/tests/loongarch64/llsc.stderr.exp new file mode 100644 -index 0000000..e69de29 +index 000000000000..e69de29bb2d1 diff --git a/none/tests/loongarch64/llsc.stdout.exp b/none/tests/loongarch64/llsc.stdout.exp new file mode 100644 -index 0000000..dd19251 +index 000000000000..dd1925156b22 --- /dev/null +++ b/none/tests/loongarch64/llsc.stdout.exp @@ -0,0 +1,6 @@ @@ -100831,7 +98529,7 @@ index 0000000..dd19251 +res: 1 val: -10 diff --git a/none/tests/loongarch64/llsc.vgtest b/none/tests/loongarch64/llsc.vgtest new file mode 100644 -index 0000000..685c279 +index 000000000000..685c27911430 --- /dev/null +++ b/none/tests/loongarch64/llsc.vgtest @@ -0,0 +1,2 @@ @@ -100839,7 +98537,7 @@ index 0000000..685c279 +vgopts: -q diff --git a/none/tests/loongarch64/memory.c b/none/tests/loongarch64/memory.c new file mode 100644 -index 0000000..385efc0 +index 000000000000..385efc02ce6f --- /dev/null +++ b/none/tests/loongarch64/memory.c @@ -0,0 +1,345 @@ @@ -101190,10 +98888,10 @@ index 0000000..385efc0 +} diff --git a/none/tests/loongarch64/memory.stderr.exp b/none/tests/loongarch64/memory.stderr.exp new file mode 100644 -index 0000000..e69de29 +index 000000000000..e69de29bb2d1 diff --git a/none/tests/loongarch64/memory.stdout.exp b/none/tests/loongarch64/memory.stdout.exp new file mode 100644 -index 0000000..928961d +index 000000000000..928961df0bf4 --- /dev/null +++ b/none/tests/loongarch64/memory.stdout.exp @@ -0,0 +1,109 @@ @@ -101308,7 +99006,7 @@ index 0000000..928961d +0xb8: 0x000103003b373b3a diff --git a/none/tests/loongarch64/memory.vgtest b/none/tests/loongarch64/memory.vgtest new file mode 100644 -index 0000000..be6895e +index 000000000000..be6895e8fcf7 --- /dev/null +++ b/none/tests/loongarch64/memory.vgtest @@ -0,0 +1,2 @@ @@ -101316,7 +99014,7 @@ index 0000000..be6895e +vgopts: -q diff --git a/none/tests/loongarch64/move.c b/none/tests/loongarch64/move.c new file mode 100644 -index 0000000..3b7f46d +index 000000000000..3b7f46dd9c1e --- /dev/null +++ b/none/tests/loongarch64/move.c @@ -0,0 +1,112 @@ @@ -101434,10 +99132,10 @@ index 0000000..3b7f46d +} diff --git a/none/tests/loongarch64/move.stderr.exp b/none/tests/loongarch64/move.stderr.exp new file mode 100644 -index 0000000..e69de29 +index 000000000000..e69de29bb2d1 diff --git a/none/tests/loongarch64/move.stdout.exp b/none/tests/loongarch64/move.stdout.exp new file mode 100644 -index 0000000..12baf38 +index 000000000000..12baf388857a --- /dev/null +++ b/none/tests/loongarch64/move.stdout.exp @@ -0,0 +1,156 @@ @@ -101599,7 +99297,7 @@ index 0000000..12baf38 +output: 0 diff --git a/none/tests/loongarch64/move.vgtest b/none/tests/loongarch64/move.vgtest new file mode 100644 -index 0000000..358d44b +index 000000000000..358d44b7ad1a --- /dev/null +++ b/none/tests/loongarch64/move.vgtest @@ -0,0 +1,3 @@ @@ -101608,7 +99306,7 @@ index 0000000..358d44b +vgopts: -q diff --git a/none/tests/loongarch64/pc.c b/none/tests/loongarch64/pc.c new file mode 100644 -index 0000000..a493846 +index 000000000000..a4938463ae1e --- /dev/null +++ b/none/tests/loongarch64/pc.c @@ -0,0 +1,66 @@ @@ -101680,10 +99378,10 @@ index 0000000..a493846 +} diff --git a/none/tests/loongarch64/pc.stderr.exp b/none/tests/loongarch64/pc.stderr.exp new file mode 100644 -index 0000000..e69de29 +index 000000000000..e69de29bb2d1 diff --git a/none/tests/loongarch64/pc.stdout.exp b/none/tests/loongarch64/pc.stdout.exp new file mode 100644 -index 0000000..422ea40 +index 000000000000..422ea404bb75 --- /dev/null +++ b/none/tests/loongarch64/pc.stdout.exp @@ -0,0 +1,28 @@ @@ -101717,7 +99415,7 @@ index 0000000..422ea40 +test pcalau12i diff --git a/none/tests/loongarch64/pc.vgtest b/none/tests/loongarch64/pc.vgtest new file mode 100644 -index 0000000..468226d +index 000000000000..468226df2a20 --- /dev/null +++ b/none/tests/loongarch64/pc.vgtest @@ -0,0 +1,2 @@ @@ -101725,7 +99423,7 @@ index 0000000..468226d +vgopts: -q diff --git a/none/tests/loongarch64/special.c b/none/tests/loongarch64/special.c new file mode 100644 -index 0000000..e1e8c94 +index 000000000000..e1e8c94302a6 --- /dev/null +++ b/none/tests/loongarch64/special.c @@ -0,0 +1,112 @@ @@ -101843,10 +99541,10 @@ index 0000000..e1e8c94 +} diff --git a/none/tests/loongarch64/special.stderr.exp b/none/tests/loongarch64/special.stderr.exp new file mode 100644 -index 0000000..e69de29 +index 000000000000..e69de29bb2d1 diff --git a/none/tests/loongarch64/special.stdout.exp b/none/tests/loongarch64/special.stdout.exp new file mode 100644 -index 0000000..7bd523e +index 000000000000..7bd523e10c15 --- /dev/null +++ b/none/tests/loongarch64/special.stdout.exp @@ -0,0 +1,48 @@ @@ -101900,7 +99598,7 @@ index 0000000..7bd523e +res: 0 diff --git a/none/tests/loongarch64/special.vgtest b/none/tests/loongarch64/special.vgtest new file mode 100644 -index 0000000..b2f2ae9 +index 000000000000..b2f2ae95295d --- /dev/null +++ b/none/tests/loongarch64/special.vgtest @@ -0,0 +1,2 @@ @@ -101908,7 +99606,7 @@ index 0000000..b2f2ae9 +vgopts: -q diff --git a/none/tests/loongarch64/vector128.c b/none/tests/loongarch64/vector128.c new file mode 100644 -index 0000000..bfa07c2 +index 000000000000..bfa07c2334d5 --- /dev/null +++ b/none/tests/loongarch64/vector128.c @@ -0,0 +1,12 @@ @@ -101926,13 +99624,13 @@ index 0000000..bfa07c2 +} diff --git a/none/tests/loongarch64/vector128.stderr.exp b/none/tests/loongarch64/vector128.stderr.exp new file mode 100644 -index 0000000..e69de29 +index 000000000000..e69de29bb2d1 diff --git a/none/tests/loongarch64/vector128.stdout.exp b/none/tests/loongarch64/vector128.stdout.exp new file mode 100644 -index 0000000..e69de29 +index 000000000000..e69de29bb2d1 diff --git a/none/tests/loongarch64/vector128.vgtest b/none/tests/loongarch64/vector128.vgtest new file mode 100644 -index 0000000..5bfdc28 +index 000000000000..5bfdc28a661d --- /dev/null +++ b/none/tests/loongarch64/vector128.vgtest @@ -0,0 +1,3 @@ @@ -101941,7 +99639,7 @@ index 0000000..5bfdc28 +vgopts: -q diff --git a/none/tests/loongarch64/vector256.c b/none/tests/loongarch64/vector256.c new file mode 100644 -index 0000000..bfa07c2 +index 000000000000..bfa07c2334d5 --- /dev/null +++ b/none/tests/loongarch64/vector256.c @@ -0,0 +1,12 @@ @@ -101959,374 +99657,24 @@ index 0000000..bfa07c2 +} diff --git a/none/tests/loongarch64/vector256.stderr.exp b/none/tests/loongarch64/vector256.stderr.exp new file mode 100644 -index 0000000..e69de29 +index 000000000000..e69de29bb2d1 diff --git a/none/tests/loongarch64/vector256.stdout.exp b/none/tests/loongarch64/vector256.stdout.exp new file mode 100644 -index 0000000..e69de29 +index 000000000000..e69de29bb2d1 diff --git a/none/tests/loongarch64/vector256.vgtest b/none/tests/loongarch64/vector256.vgtest new file mode 100644 -index 0000000..2b32ff1 +index 000000000000..2b32ff1e81d7 --- /dev/null +++ b/none/tests/loongarch64/vector256.vgtest @@ -0,0 +1,3 @@ +prereq: ../../../tests/loongarch64_features lasx +prog: vector256 +vgopts: -q -diff --git a/none/tests/mips32/Makefile.in b/none/tests/mips32/Makefile.in -index 6ed6e3a..1bb4622 100644 ---- a/none/tests/mips32/Makefile.in -+++ b/none/tests/mips32/Makefile.in -@@ -742,6 +742,12 @@ AM_CFLAGS_PSO_MIPS64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ - $(AM_CFLAGS_PSO_BASE) - - AM_CCASFLAGS_MIPS64_LINUX = @FLAG_M64@ -g -+AM_FLAG_M3264_LOONGARCH64_LINUX = @FLAG_M64@ -+AM_CFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) -+AM_CFLAGS_PSO_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ -+ $(AM_CFLAGS_PSO_BASE) -+ -+AM_CCASFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ -g - AM_FLAG_M3264_X86_SOLARIS = @FLAG_M32@ - AM_CFLAGS_X86_SOLARIS = @FLAG_M32@ @PREFERRED_STACK_BOUNDARY_2@ \ - $(AM_CFLAGS_BASE) -fomit-frame-pointer @SOLARIS_UNDEF_LARGESOURCE@ -@@ -789,6 +795,7 @@ PRELOAD_LDFLAGS_S390X_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ - PRELOAD_LDFLAGS_MIPS32_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ - PRELOAD_LDFLAGS_NANOMIPS_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ - PRELOAD_LDFLAGS_MIPS64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ -+PRELOAD_LDFLAGS_LOONGARCH64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ - PRELOAD_LDFLAGS_X86_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M32@ - PRELOAD_LDFLAGS_AMD64_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M64@ - AM_CPPFLAGS = -I$(top_srcdir) -I$(top_srcdir)/include \ -diff --git a/none/tests/mips64/Makefile.in b/none/tests/mips64/Makefile.in -index de13b52..e0a325b 100644 ---- a/none/tests/mips64/Makefile.in -+++ b/none/tests/mips64/Makefile.in -@@ -813,6 +813,12 @@ AM_CFLAGS_PSO_MIPS64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ - $(AM_CFLAGS_PSO_BASE) - - AM_CCASFLAGS_MIPS64_LINUX = @FLAG_M64@ -g -+AM_FLAG_M3264_LOONGARCH64_LINUX = @FLAG_M64@ -+AM_CFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) -+AM_CFLAGS_PSO_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ -+ $(AM_CFLAGS_PSO_BASE) -+ -+AM_CCASFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ -g - AM_FLAG_M3264_X86_SOLARIS = @FLAG_M32@ - AM_CFLAGS_X86_SOLARIS = @FLAG_M32@ @PREFERRED_STACK_BOUNDARY_2@ \ - $(AM_CFLAGS_BASE) -fomit-frame-pointer @SOLARIS_UNDEF_LARGESOURCE@ -@@ -860,6 +866,7 @@ PRELOAD_LDFLAGS_S390X_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ - PRELOAD_LDFLAGS_MIPS32_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ - PRELOAD_LDFLAGS_NANOMIPS_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ - PRELOAD_LDFLAGS_MIPS64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ -+PRELOAD_LDFLAGS_LOONGARCH64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ - PRELOAD_LDFLAGS_X86_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M32@ - PRELOAD_LDFLAGS_AMD64_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M64@ - AM_CPPFLAGS = -I$(top_srcdir) -I$(top_srcdir)/include \ -diff --git a/none/tests/nanomips/Makefile.in b/none/tests/nanomips/Makefile.in -index 3bf14c7..7d38dd9 100644 ---- a/none/tests/nanomips/Makefile.in -+++ b/none/tests/nanomips/Makefile.in -@@ -607,6 +607,12 @@ AM_CFLAGS_PSO_MIPS64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ - $(AM_CFLAGS_PSO_BASE) - - AM_CCASFLAGS_MIPS64_LINUX = @FLAG_M64@ -g -+AM_FLAG_M3264_LOONGARCH64_LINUX = @FLAG_M64@ -+AM_CFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) -+AM_CFLAGS_PSO_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ -+ $(AM_CFLAGS_PSO_BASE) -+ -+AM_CCASFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ -g - AM_FLAG_M3264_X86_SOLARIS = @FLAG_M32@ - AM_CFLAGS_X86_SOLARIS = @FLAG_M32@ @PREFERRED_STACK_BOUNDARY_2@ \ - $(AM_CFLAGS_BASE) -fomit-frame-pointer @SOLARIS_UNDEF_LARGESOURCE@ -@@ -654,6 +660,7 @@ PRELOAD_LDFLAGS_S390X_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ - PRELOAD_LDFLAGS_MIPS32_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ - PRELOAD_LDFLAGS_NANOMIPS_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ - PRELOAD_LDFLAGS_MIPS64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ -+PRELOAD_LDFLAGS_LOONGARCH64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ - PRELOAD_LDFLAGS_X86_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M32@ - PRELOAD_LDFLAGS_AMD64_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M64@ - AM_CPPFLAGS = -I$(top_srcdir) -I$(top_srcdir)/include \ -diff --git a/none/tests/ppc32/Makefile.in b/none/tests/ppc32/Makefile.in -index 6e855d4..0c5fc01 100644 ---- a/none/tests/ppc32/Makefile.in -+++ b/none/tests/ppc32/Makefile.in -@@ -742,6 +742,12 @@ AM_CFLAGS_PSO_MIPS64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ - $(AM_CFLAGS_PSO_BASE) - - AM_CCASFLAGS_MIPS64_LINUX = @FLAG_M64@ -g -+AM_FLAG_M3264_LOONGARCH64_LINUX = @FLAG_M64@ -+AM_CFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) -+AM_CFLAGS_PSO_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ -+ $(AM_CFLAGS_PSO_BASE) -+ -+AM_CCASFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ -g - AM_FLAG_M3264_X86_SOLARIS = @FLAG_M32@ - AM_CFLAGS_X86_SOLARIS = @FLAG_M32@ @PREFERRED_STACK_BOUNDARY_2@ \ - $(AM_CFLAGS_BASE) -fomit-frame-pointer @SOLARIS_UNDEF_LARGESOURCE@ -@@ -789,6 +795,7 @@ PRELOAD_LDFLAGS_S390X_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ - PRELOAD_LDFLAGS_MIPS32_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ - PRELOAD_LDFLAGS_NANOMIPS_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ - PRELOAD_LDFLAGS_MIPS64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ -+PRELOAD_LDFLAGS_LOONGARCH64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ - PRELOAD_LDFLAGS_X86_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M32@ - PRELOAD_LDFLAGS_AMD64_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M64@ - AM_CPPFLAGS = -I$(top_srcdir) -I$(top_srcdir)/include \ -diff --git a/none/tests/ppc64/Makefile.in b/none/tests/ppc64/Makefile.in -index e9e4390..43ac01f 100644 ---- a/none/tests/ppc64/Makefile.in -+++ b/none/tests/ppc64/Makefile.in -@@ -845,6 +845,12 @@ AM_CFLAGS_PSO_MIPS64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ - $(AM_CFLAGS_PSO_BASE) - - AM_CCASFLAGS_MIPS64_LINUX = @FLAG_M64@ -g -+AM_FLAG_M3264_LOONGARCH64_LINUX = @FLAG_M64@ -+AM_CFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) -+AM_CFLAGS_PSO_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ -+ $(AM_CFLAGS_PSO_BASE) -+ -+AM_CCASFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ -g - AM_FLAG_M3264_X86_SOLARIS = @FLAG_M32@ - AM_CFLAGS_X86_SOLARIS = @FLAG_M32@ @PREFERRED_STACK_BOUNDARY_2@ \ - $(AM_CFLAGS_BASE) -fomit-frame-pointer @SOLARIS_UNDEF_LARGESOURCE@ -@@ -892,6 +898,7 @@ PRELOAD_LDFLAGS_S390X_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ - PRELOAD_LDFLAGS_MIPS32_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ - PRELOAD_LDFLAGS_NANOMIPS_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ - PRELOAD_LDFLAGS_MIPS64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ -+PRELOAD_LDFLAGS_LOONGARCH64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ - PRELOAD_LDFLAGS_X86_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M32@ - PRELOAD_LDFLAGS_AMD64_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M64@ - AM_CPPFLAGS = -I$(top_srcdir) -I$(top_srcdir)/include \ -diff --git a/none/tests/s390x/Makefile.in b/none/tests/s390x/Makefile.in -index b90cb39..72dce45 100644 ---- a/none/tests/s390x/Makefile.in -+++ b/none/tests/s390x/Makefile.in -@@ -1152,6 +1152,12 @@ AM_CFLAGS_PSO_MIPS64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ - $(AM_CFLAGS_PSO_BASE) - - AM_CCASFLAGS_MIPS64_LINUX = @FLAG_M64@ -g -+AM_FLAG_M3264_LOONGARCH64_LINUX = @FLAG_M64@ -+AM_CFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) -+AM_CFLAGS_PSO_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ -+ $(AM_CFLAGS_PSO_BASE) -+ -+AM_CCASFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ -g - AM_FLAG_M3264_X86_SOLARIS = @FLAG_M32@ - AM_CFLAGS_X86_SOLARIS = @FLAG_M32@ @PREFERRED_STACK_BOUNDARY_2@ \ - $(AM_CFLAGS_BASE) -fomit-frame-pointer @SOLARIS_UNDEF_LARGESOURCE@ -@@ -1199,6 +1205,7 @@ PRELOAD_LDFLAGS_S390X_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ - PRELOAD_LDFLAGS_MIPS32_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ - PRELOAD_LDFLAGS_NANOMIPS_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ - PRELOAD_LDFLAGS_MIPS64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ -+PRELOAD_LDFLAGS_LOONGARCH64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ - PRELOAD_LDFLAGS_X86_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M32@ - PRELOAD_LDFLAGS_AMD64_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M64@ - AM_CPPFLAGS = -I$(top_srcdir) -I$(top_srcdir)/include \ -diff --git a/none/tests/scripts/Makefile.in b/none/tests/scripts/Makefile.in -index e032753..95567b7 100644 ---- a/none/tests/scripts/Makefile.in -+++ b/none/tests/scripts/Makefile.in -@@ -529,6 +529,12 @@ AM_CFLAGS_PSO_MIPS64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ - $(AM_CFLAGS_PSO_BASE) - - AM_CCASFLAGS_MIPS64_LINUX = @FLAG_M64@ -g -+AM_FLAG_M3264_LOONGARCH64_LINUX = @FLAG_M64@ -+AM_CFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) -+AM_CFLAGS_PSO_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ -+ $(AM_CFLAGS_PSO_BASE) -+ -+AM_CCASFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ -g - AM_FLAG_M3264_X86_SOLARIS = @FLAG_M32@ - AM_CFLAGS_X86_SOLARIS = @FLAG_M32@ @PREFERRED_STACK_BOUNDARY_2@ \ - $(AM_CFLAGS_BASE) -fomit-frame-pointer @SOLARIS_UNDEF_LARGESOURCE@ -@@ -576,6 +582,7 @@ PRELOAD_LDFLAGS_S390X_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ - PRELOAD_LDFLAGS_MIPS32_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ - PRELOAD_LDFLAGS_NANOMIPS_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ - PRELOAD_LDFLAGS_MIPS64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ -+PRELOAD_LDFLAGS_LOONGARCH64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ - PRELOAD_LDFLAGS_X86_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M32@ - PRELOAD_LDFLAGS_AMD64_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M64@ - AM_CPPFLAGS = -I$(top_srcdir) -I$(top_srcdir)/include \ -diff --git a/none/tests/solaris/Makefile.in b/none/tests/solaris/Makefile.in -index 46f5282..e1f441e 100644 ---- a/none/tests/solaris/Makefile.in -+++ b/none/tests/solaris/Makefile.in -@@ -673,6 +673,12 @@ AM_CFLAGS_PSO_MIPS64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ - $(AM_CFLAGS_PSO_BASE) - - AM_CCASFLAGS_MIPS64_LINUX = @FLAG_M64@ -g -+AM_FLAG_M3264_LOONGARCH64_LINUX = @FLAG_M64@ -+AM_CFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) -+AM_CFLAGS_PSO_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ -+ $(AM_CFLAGS_PSO_BASE) -+ -+AM_CCASFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ -g - AM_FLAG_M3264_X86_SOLARIS = @FLAG_M32@ - AM_CFLAGS_X86_SOLARIS = @FLAG_M32@ @PREFERRED_STACK_BOUNDARY_2@ \ - $(AM_CFLAGS_BASE) -fomit-frame-pointer @SOLARIS_UNDEF_LARGESOURCE@ -@@ -720,6 +726,7 @@ PRELOAD_LDFLAGS_S390X_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ - PRELOAD_LDFLAGS_MIPS32_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ - PRELOAD_LDFLAGS_NANOMIPS_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ - PRELOAD_LDFLAGS_MIPS64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ -+PRELOAD_LDFLAGS_LOONGARCH64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ - PRELOAD_LDFLAGS_X86_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M32@ - PRELOAD_LDFLAGS_AMD64_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M64@ - AM_CPPFLAGS = -I$(top_srcdir) -I$(top_srcdir)/include \ -diff --git a/none/tests/x86-darwin/Makefile.in b/none/tests/x86-darwin/Makefile.in -index 6b943b3..2bc0b24 100644 ---- a/none/tests/x86-darwin/Makefile.in -+++ b/none/tests/x86-darwin/Makefile.in -@@ -574,6 +574,12 @@ AM_CFLAGS_PSO_MIPS64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ - $(AM_CFLAGS_PSO_BASE) - - AM_CCASFLAGS_MIPS64_LINUX = @FLAG_M64@ -g -+AM_FLAG_M3264_LOONGARCH64_LINUX = @FLAG_M64@ -+AM_CFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) -+AM_CFLAGS_PSO_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ -+ $(AM_CFLAGS_PSO_BASE) -+ -+AM_CCASFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ -g - AM_FLAG_M3264_X86_SOLARIS = @FLAG_M32@ - AM_CFLAGS_X86_SOLARIS = @FLAG_M32@ @PREFERRED_STACK_BOUNDARY_2@ \ - $(AM_CFLAGS_BASE) -fomit-frame-pointer @SOLARIS_UNDEF_LARGESOURCE@ -@@ -621,6 +627,7 @@ PRELOAD_LDFLAGS_S390X_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ - PRELOAD_LDFLAGS_MIPS32_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ - PRELOAD_LDFLAGS_NANOMIPS_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ - PRELOAD_LDFLAGS_MIPS64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ -+PRELOAD_LDFLAGS_LOONGARCH64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ - PRELOAD_LDFLAGS_X86_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M32@ - PRELOAD_LDFLAGS_AMD64_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M64@ - AM_CPPFLAGS = -I$(top_srcdir) -I$(top_srcdir)/include \ -diff --git a/none/tests/x86-freebsd/Makefile.in b/none/tests/x86-freebsd/Makefile.in -index 58e1161..38d9646 100644 ---- a/none/tests/x86-freebsd/Makefile.in -+++ b/none/tests/x86-freebsd/Makefile.in -@@ -566,6 +566,12 @@ AM_CFLAGS_PSO_MIPS64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ - $(AM_CFLAGS_PSO_BASE) - - AM_CCASFLAGS_MIPS64_LINUX = @FLAG_M64@ -g -+AM_FLAG_M3264_LOONGARCH64_LINUX = @FLAG_M64@ -+AM_CFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) -+AM_CFLAGS_PSO_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ -+ $(AM_CFLAGS_PSO_BASE) -+ -+AM_CCASFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ -g - AM_FLAG_M3264_X86_SOLARIS = @FLAG_M32@ - AM_CFLAGS_X86_SOLARIS = @FLAG_M32@ @PREFERRED_STACK_BOUNDARY_2@ \ - $(AM_CFLAGS_BASE) -fomit-frame-pointer @SOLARIS_UNDEF_LARGESOURCE@ -@@ -613,6 +619,7 @@ PRELOAD_LDFLAGS_S390X_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ - PRELOAD_LDFLAGS_MIPS32_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ - PRELOAD_LDFLAGS_NANOMIPS_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ - PRELOAD_LDFLAGS_MIPS64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ -+PRELOAD_LDFLAGS_LOONGARCH64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ - PRELOAD_LDFLAGS_X86_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M32@ - PRELOAD_LDFLAGS_AMD64_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M64@ - AM_CPPFLAGS = -I$(top_srcdir) -I$(top_srcdir)/include \ -diff --git a/none/tests/x86-linux/Makefile.in b/none/tests/x86-linux/Makefile.in -index 0c55ea2..2d79442 100644 ---- a/none/tests/x86-linux/Makefile.in -+++ b/none/tests/x86-linux/Makefile.in -@@ -588,6 +588,12 @@ AM_CFLAGS_PSO_MIPS64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ - $(AM_CFLAGS_PSO_BASE) - - AM_CCASFLAGS_MIPS64_LINUX = @FLAG_M64@ -g -+AM_FLAG_M3264_LOONGARCH64_LINUX = @FLAG_M64@ -+AM_CFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) -+AM_CFLAGS_PSO_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ -+ $(AM_CFLAGS_PSO_BASE) -+ -+AM_CCASFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ -g - AM_FLAG_M3264_X86_SOLARIS = @FLAG_M32@ - AM_CFLAGS_X86_SOLARIS = @FLAG_M32@ @PREFERRED_STACK_BOUNDARY_2@ \ - $(AM_CFLAGS_BASE) -fomit-frame-pointer @SOLARIS_UNDEF_LARGESOURCE@ -@@ -635,6 +641,7 @@ PRELOAD_LDFLAGS_S390X_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ - PRELOAD_LDFLAGS_MIPS32_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ - PRELOAD_LDFLAGS_NANOMIPS_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ - PRELOAD_LDFLAGS_MIPS64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ -+PRELOAD_LDFLAGS_LOONGARCH64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ - PRELOAD_LDFLAGS_X86_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M32@ - PRELOAD_LDFLAGS_AMD64_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M64@ - AM_CPPFLAGS = -I$(top_srcdir) -I$(top_srcdir)/include \ -diff --git a/none/tests/x86-solaris/Makefile.in b/none/tests/x86-solaris/Makefile.in -index a008c19..f4c7fd3 100644 ---- a/none/tests/x86-solaris/Makefile.in -+++ b/none/tests/x86-solaris/Makefile.in -@@ -582,6 +582,12 @@ AM_CFLAGS_PSO_MIPS64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ - $(AM_CFLAGS_PSO_BASE) - - AM_CCASFLAGS_MIPS64_LINUX = @FLAG_M64@ -g -+AM_FLAG_M3264_LOONGARCH64_LINUX = @FLAG_M64@ -+AM_CFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) -+AM_CFLAGS_PSO_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ -+ $(AM_CFLAGS_PSO_BASE) -+ -+AM_CCASFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ -g - AM_FLAG_M3264_X86_SOLARIS = @FLAG_M32@ - AM_CFLAGS_X86_SOLARIS = @FLAG_M32@ @PREFERRED_STACK_BOUNDARY_2@ \ - $(AM_CFLAGS_BASE) -fomit-frame-pointer @SOLARIS_UNDEF_LARGESOURCE@ -@@ -629,6 +635,7 @@ PRELOAD_LDFLAGS_S390X_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ - PRELOAD_LDFLAGS_MIPS32_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ - PRELOAD_LDFLAGS_NANOMIPS_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ - PRELOAD_LDFLAGS_MIPS64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ -+PRELOAD_LDFLAGS_LOONGARCH64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ - PRELOAD_LDFLAGS_X86_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M32@ - PRELOAD_LDFLAGS_AMD64_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M64@ - AM_CPPFLAGS = -I$(top_srcdir) -I$(top_srcdir)/include \ -diff --git a/none/tests/x86/Makefile.in b/none/tests/x86/Makefile.in -index ead5ce4..c43ae96 100644 ---- a/none/tests/x86/Makefile.in -+++ b/none/tests/x86/Makefile.in -@@ -813,6 +813,12 @@ AM_CFLAGS_PSO_MIPS64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ - $(AM_CFLAGS_PSO_BASE) - - AM_CCASFLAGS_MIPS64_LINUX = @FLAG_M64@ -g -+AM_FLAG_M3264_LOONGARCH64_LINUX = @FLAG_M64@ -+AM_CFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) -+AM_CFLAGS_PSO_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ -+ $(AM_CFLAGS_PSO_BASE) -+ -+AM_CCASFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ -g - AM_FLAG_M3264_X86_SOLARIS = @FLAG_M32@ - AM_CFLAGS_X86_SOLARIS = @FLAG_M32@ @PREFERRED_STACK_BOUNDARY_2@ \ - $(AM_CFLAGS_BASE) -fomit-frame-pointer @SOLARIS_UNDEF_LARGESOURCE@ -@@ -860,6 +866,7 @@ PRELOAD_LDFLAGS_S390X_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ - PRELOAD_LDFLAGS_MIPS32_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ - PRELOAD_LDFLAGS_NANOMIPS_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ - PRELOAD_LDFLAGS_MIPS64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ -+PRELOAD_LDFLAGS_LOONGARCH64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ - PRELOAD_LDFLAGS_X86_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M32@ - PRELOAD_LDFLAGS_AMD64_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M64@ - AM_CPPFLAGS = -I$(top_srcdir) -I$(top_srcdir)/include \ -diff --git a/perf/Makefile.in b/perf/Makefile.in -index aa93d3b..5809ff6 100644 ---- a/perf/Makefile.in -+++ b/perf/Makefile.in -@@ -616,6 +616,12 @@ AM_CFLAGS_PSO_MIPS64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ - $(AM_CFLAGS_PSO_BASE) - - AM_CCASFLAGS_MIPS64_LINUX = @FLAG_M64@ -g -+AM_FLAG_M3264_LOONGARCH64_LINUX = @FLAG_M64@ -+AM_CFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) -+AM_CFLAGS_PSO_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ -+ $(AM_CFLAGS_PSO_BASE) -+ -+AM_CCASFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ -g - AM_FLAG_M3264_X86_SOLARIS = @FLAG_M32@ - AM_CFLAGS_X86_SOLARIS = @FLAG_M32@ @PREFERRED_STACK_BOUNDARY_2@ \ - $(AM_CFLAGS_BASE) -fomit-frame-pointer @SOLARIS_UNDEF_LARGESOURCE@ -@@ -663,6 +669,7 @@ PRELOAD_LDFLAGS_S390X_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ - PRELOAD_LDFLAGS_MIPS32_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ - PRELOAD_LDFLAGS_NANOMIPS_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ - PRELOAD_LDFLAGS_MIPS64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ -+PRELOAD_LDFLAGS_LOONGARCH64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ - PRELOAD_LDFLAGS_X86_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M32@ - PRELOAD_LDFLAGS_AMD64_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M64@ - AM_CPPFLAGS = -I$(top_srcdir) -I$(top_srcdir)/include \ diff --git a/tests/Makefile.am b/tests/Makefile.am -index 916e508..e21f68b 100644 +index efe3546ac7f3..778cd9922e0a 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am -@@ -52,7 +52,8 @@ check_PROGRAMS = \ +@@ -55,7 +55,8 @@ check_PROGRAMS = \ power_insn_available \ is_ppc64_BE \ min_power_isa \ @@ -102336,129 +99684,22 @@ index 916e508..e21f68b 100644 AM_CFLAGS += $(AM_FLAG_M3264_PRI) -diff --git a/tests/Makefile.in b/tests/Makefile.in -index bf7d5a1..846b98c 100644 ---- a/tests/Makefile.in -+++ b/tests/Makefile.in -@@ -129,7 +129,8 @@ check_PROGRAMS = arch_test$(EXEEXT) os_test$(EXEEXT) \ - libc_test$(EXEEXT) true$(EXEEXT) x86_amd64_features$(EXEEXT) \ - s390x_features$(EXEEXT) mips_features$(EXEEXT) \ - power_insn_available$(EXEEXT) is_ppc64_BE$(EXEEXT) \ -- min_power_isa$(EXEEXT) arm64_features$(EXEEXT) -+ min_power_isa$(EXEEXT) arm64_features$(EXEEXT) \ -+ loongarch64_features$(EXEEXT) - subdir = tests - ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 - am__aclocal_m4_deps = $(top_srcdir)/configure.ac -@@ -153,6 +154,9 @@ is_ppc64_BE_LDADD = $(LDADD) - libc_test_SOURCES = libc_test.c - libc_test_OBJECTS = libc_test.$(OBJEXT) - libc_test_LDADD = $(LDADD) -+loongarch64_features_SOURCES = loongarch64_features.c -+loongarch64_features_OBJECTS = loongarch64_features.$(OBJEXT) -+loongarch64_features_LDADD = $(LDADD) - min_power_isa_SOURCES = min_power_isa.c - min_power_isa_OBJECTS = min_power_isa-min_power_isa.$(OBJEXT) - min_power_isa_LDADD = $(LDADD) -@@ -197,7 +201,7 @@ depcomp = $(SHELL) $(top_srcdir)/depcomp - am__maybe_remake_depfiles = depfiles - am__depfiles_remade = ./$(DEPDIR)/arch_test.Po \ - ./$(DEPDIR)/arm64_features.Po ./$(DEPDIR)/is_ppc64_BE.Po \ -- ./$(DEPDIR)/libc_test.Po \ -+ ./$(DEPDIR)/libc_test.Po ./$(DEPDIR)/loongarch64_features.Po \ - ./$(DEPDIR)/min_power_isa-min_power_isa.Po \ - ./$(DEPDIR)/mips_features.Po ./$(DEPDIR)/os_test.Po \ - ./$(DEPDIR)/power_insn_available.Po \ -@@ -221,12 +225,12 @@ am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) - am__v_CCLD_0 = @echo " CCLD " $@; - am__v_CCLD_1 = - SOURCES = arch_test.c arm64_features.c is_ppc64_BE.c libc_test.c \ -- min_power_isa.c mips_features.c os_test.c \ -- power_insn_available.c s390x_features.c true.c \ -+ loongarch64_features.c min_power_isa.c mips_features.c \ -+ os_test.c power_insn_available.c s390x_features.c true.c \ - x86_amd64_features.c - DIST_SOURCES = arch_test.c arm64_features.c is_ppc64_BE.c libc_test.c \ -- min_power_isa.c mips_features.c os_test.c \ -- power_insn_available.c s390x_features.c true.c \ -+ loongarch64_features.c min_power_isa.c mips_features.c \ -+ os_test.c power_insn_available.c s390x_features.c true.c \ - x86_amd64_features.c - am__can_run_installinfo = \ - case $$AM_UPDATE_INFO_DIR in \ -@@ -626,6 +630,12 @@ AM_CFLAGS_PSO_MIPS64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ - $(AM_CFLAGS_PSO_BASE) - - AM_CCASFLAGS_MIPS64_LINUX = @FLAG_M64@ -g -+AM_FLAG_M3264_LOONGARCH64_LINUX = @FLAG_M64@ -+AM_CFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) -+AM_CFLAGS_PSO_LOONGARCH64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) \ -+ $(AM_CFLAGS_PSO_BASE) -+ -+AM_CCASFLAGS_LOONGARCH64_LINUX = @FLAG_M64@ -g - AM_FLAG_M3264_X86_SOLARIS = @FLAG_M32@ - AM_CFLAGS_X86_SOLARIS = @FLAG_M32@ @PREFERRED_STACK_BOUNDARY_2@ \ - $(AM_CFLAGS_BASE) -fomit-frame-pointer @SOLARIS_UNDEF_LARGESOURCE@ -@@ -673,6 +683,7 @@ PRELOAD_LDFLAGS_S390X_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ - PRELOAD_LDFLAGS_MIPS32_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ - PRELOAD_LDFLAGS_NANOMIPS_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@ - PRELOAD_LDFLAGS_MIPS64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ -+PRELOAD_LDFLAGS_LOONGARCH64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@ - PRELOAD_LDFLAGS_X86_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M32@ - PRELOAD_LDFLAGS_AMD64_SOLARIS = $(PRELOAD_LDFLAGS_COMMON_SOLARIS) @FLAG_M64@ - AM_CPPFLAGS = -I$(top_srcdir) -I$(top_srcdir)/include \ -@@ -785,6 +796,10 @@ libc_test$(EXEEXT): $(libc_test_OBJECTS) $(libc_test_DEPENDENCIES) $(EXTRA_libc_ - @rm -f libc_test$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(libc_test_OBJECTS) $(libc_test_LDADD) $(LIBS) - -+loongarch64_features$(EXEEXT): $(loongarch64_features_OBJECTS) $(loongarch64_features_DEPENDENCIES) $(EXTRA_loongarch64_features_DEPENDENCIES) -+ @rm -f loongarch64_features$(EXEEXT) -+ $(AM_V_CCLD)$(LINK) $(loongarch64_features_OBJECTS) $(loongarch64_features_LDADD) $(LIBS) -+ - min_power_isa$(EXEEXT): $(min_power_isa_OBJECTS) $(min_power_isa_DEPENDENCIES) $(EXTRA_min_power_isa_DEPENDENCIES) - @rm -f min_power_isa$(EXEEXT) - $(AM_V_CCLD)$(min_power_isa_LINK) $(min_power_isa_OBJECTS) $(min_power_isa_LDADD) $(LIBS) -@@ -823,6 +838,7 @@ distclean-compile: - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/arm64_features.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/is_ppc64_BE.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libc_test.Po@am__quote@ # am--include-marker -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/loongarch64_features.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/min_power_isa-min_power_isa.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mips_features.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/os_test.Po@am__quote@ # am--include-marker -@@ -1010,6 +1026,7 @@ distclean: distclean-am - -rm -f ./$(DEPDIR)/arm64_features.Po - -rm -f ./$(DEPDIR)/is_ppc64_BE.Po - -rm -f ./$(DEPDIR)/libc_test.Po -+ -rm -f ./$(DEPDIR)/loongarch64_features.Po - -rm -f ./$(DEPDIR)/min_power_isa-min_power_isa.Po - -rm -f ./$(DEPDIR)/mips_features.Po - -rm -f ./$(DEPDIR)/os_test.Po -@@ -1066,6 +1083,7 @@ maintainer-clean: maintainer-clean-am - -rm -f ./$(DEPDIR)/arm64_features.Po - -rm -f ./$(DEPDIR)/is_ppc64_BE.Po - -rm -f ./$(DEPDIR)/libc_test.Po -+ -rm -f ./$(DEPDIR)/loongarch64_features.Po - -rm -f ./$(DEPDIR)/min_power_isa-min_power_isa.Po - -rm -f ./$(DEPDIR)/mips_features.Po - -rm -f ./$(DEPDIR)/os_test.Po diff --git a/tests/arch_test.c b/tests/arch_test.c -index 37cc1bc..97b6bc7 100644 +index 84b1f130791a..c11902033e6f 100644 --- a/tests/arch_test.c +++ b/tests/arch_test.c -@@ -34,6 +34,7 @@ char* all_archs[] = { - "mips32", +@@ -35,6 +35,7 @@ char* all_archs[] = { "mips64", "nanomips", + "riscv64", + "loongarch64", NULL }; -@@ -79,6 +80,10 @@ static Bool go(char* arch) +@@ -84,6 +85,9 @@ static Bool go(char* arch) + #elif defined(VGP_riscv64_linux) + if ( 0 == strcmp( arch, "riscv64" ) ) return True; - #elif defined(VGP_nanomips_linux) - if ( 0 == strcmp( arch, "nanomips" ) ) return True; -+ +#elif defined(VGP_loongarch64_linux) + if ( 0 == strcmp( arch, "loongarch64" ) ) return True; + @@ -102467,7 +99708,7 @@ index 37cc1bc..97b6bc7 100644 #endif // VGP_* diff --git a/tests/loongarch64_features.c b/tests/loongarch64_features.c new file mode 100644 -index 0000000..45ba2d1 +index 000000000000..45ba2d1c03f7 --- /dev/null +++ b/tests/loongarch64_features.c @@ -0,0 +1,81 @@ @@ -102553,17 +99794,18 @@ index 0000000..45ba2d1 + return go(argv[1]); +} diff --git a/tests/platform_test b/tests/platform_test -index c23a4f6..a1eaf8f 100644 +index 9762d0c09b38..0becf6533483 100644 --- a/tests/platform_test +++ b/tests/platform_test -@@ -14,6 +14,7 @@ all_platforms= +@@ -14,7 +14,7 @@ all_platforms= all_platforms="$all_platforms x86-linux amd64-linux ppc32-linux ppc64-linux" all_platforms="$all_platforms arm-linux arm64-linux" all_platforms="$all_platforms s390x-linux mips32-linux mips64-linux" -+all_platforms="$all_platforms loongarch64-linux" +-all_platforms="$all_platforms riscv64-linux" ++all_platforms="$all_platforms riscv64-linux loongarch64-linux" all_platforms="$all_platforms x86-darwin amd64-darwin" all_platforms="$all_platforms x86-solaris amd64-solaris" all_platforms="$all_platforms x86-freebsd amd64-freebsd" -- -2.33.0 +2.43.0 diff --git a/valgrind-3.16.0-some-Wl-z-now.patch b/valgrind-3.16.0-some-Wl-z-now.patch new file mode 100644 index 0000000000000000000000000000000000000000..f6001d22935f743f30cc28026f81fae92945ac17 --- /dev/null +++ b/valgrind-3.16.0-some-Wl-z-now.patch @@ -0,0 +1,59 @@ +commit d3c977726064ba09fed6dfc7daf22b16824c97b4 +Author: Mark Wielaard +Date: Fri May 24 18:24:56 2019 +0200 + + Add -Wl,-z,now to some binaries. + +diff --git a/auxprogs/Makefile.am b/auxprogs/Makefile.am +index 1b7842b..e211eec 100644 +--- a/auxprogs/Makefile.am ++++ b/auxprogs/Makefile.am +@@ -32,7 +32,7 @@ valgrind_listener_SOURCES = valgrind-listener.c + valgrind_listener_CPPFLAGS = $(AM_CPPFLAGS_PRI) -I$(top_srcdir)/coregrind + valgrind_listener_CFLAGS = $(AM_CFLAGS_PRI) -fstack-protector-strong + valgrind_listener_CCASFLAGS = $(AM_CCASFLAGS_PRI) +-valgrind_listener_LDFLAGS = $(AM_CFLAGS_PRI) ++valgrind_listener_LDFLAGS = $(AM_CFLAGS_PRI) -Wl,-z,now + if VGCONF_PLATVARIANT_IS_ANDROID + valgrind_listener_CFLAGS += -static + endif +@@ -51,7 +51,7 @@ valgrind_di_server_SOURCES = valgrind-di-server.c + valgrind_di_server_CPPFLAGS = $(AM_CPPFLAGS_PRI) -I$(top_srcdir)/coregrind + valgrind_di_server_CFLAGS = $(AM_CFLAGS_PRI) -fstack-protector-strong + valgrind_di_server_CCASFLAGS = $(AM_CCASFLAGS_PRI) +-valgrind_di_server_LDFLAGS = $(AM_CFLAGS_PRI) ++valgrind_di_server_LDFLAGS = $(AM_CFLAGS_PRI) -Wl,-z,now + if VGCONF_PLATVARIANT_IS_ANDROID + valgrind_di_server_CFLAGS += -static + endif +@@ -86,7 +86,7 @@ getoff_@VGCONF_ARCH_PRI@_@VGCONF_OS@_SOURCES = getoff.c + getoff_@VGCONF_ARCH_PRI@_@VGCONF_OS@_CPPFLAGS = $(AM_CPPFLAGS_@VGCONF_PLATFORM_PRI_CAPS@) + getoff_@VGCONF_ARCH_PRI@_@VGCONF_OS@_CFLAGS = $(AM_CFLAGS_@VGCONF_PLATFORM_PRI_CAPS@) -fstack-protector-strong + getoff_@VGCONF_ARCH_PRI@_@VGCONF_OS@_CCASFLAGS = $(AM_CCASFLAGS_PRI) +-getoff_@VGCONF_ARCH_PRI@_@VGCONF_OS@_LDFLAGS = $(AM_CFLAGS_PRI) @LIB_UBSAN@ ++getoff_@VGCONF_ARCH_PRI@_@VGCONF_OS@_LDFLAGS = $(AM_CFLAGS_PRI) @LIB_UBSAN@ -Wl,-z,now + if HAVE_DLINFO_RTLD_DI_TLS_MODID + getoff_@VGCONF_ARCH_PRI@_@VGCONF_OS@_LDADD = $(LDADD) -ldl + endif +diff --git a/coregrind/Makefile.am b/coregrind/Makefile.am +index 3c73210..fb6b7bb 100644 +--- a/coregrind/Makefile.am ++++ b/coregrind/Makefile.am +@@ -57,7 +57,7 @@ RANLIB = ${LTO_RANLIB} + valgrind_CPPFLAGS = $(AM_CPPFLAGS_PRI) + valgrind_CFLAGS = $(AM_CFLAGS_PRI) $(LTO_CFLAGS) -fstack-protector-strong + valgrind_CCASFLAGS = $(AM_CCASFLAGS_PRI) +-valgrind_LDFLAGS = $(AM_CFLAGS_PRI) @LIB_UBSAN@ ++valgrind_LDFLAGS = $(AM_CFLAGS_PRI) @LIB_UBSAN@ -Wl,-z,now + # If there is no secondary platform, and the platforms include x86-darwin, + # then the primary platform must be x86-darwin. Hence: + if ! VGCONF_HAVE_PLATFORM_SEC +@@ -104,7 +104,7 @@ + vgdb_CPPFLAGS = $(AM_CPPFLAGS_PRI) $(GDB_SCRIPTS_DIR) + vgdb_CFLAGS = $(AM_CFLAGS_PRI) $(LTO_CFLAGS) -fstack-protector-strong + vgdb_CCASFLAGS = $(AM_CCASFLAGS_PRI) +-vgdb_LDFLAGS = $(AM_CFLAGS_PRI) @LIB_UBSAN@ ++vgdb_LDFLAGS = $(AM_CFLAGS_PRI) @LIB_UBSAN@ -Wl,-z,now + if VGCONF_PLATVARIANT_IS_ANDROID + vgdb_CFLAGS += -static + endif diff --git a/valgrind-3.16.0-some-stack-protector.patch b/valgrind-3.16.0-some-stack-protector.patch new file mode 100644 index 0000000000000000000000000000000000000000..751cf3967b9822c7e810b9615d8a002fc7b9a627 --- /dev/null +++ b/valgrind-3.16.0-some-stack-protector.patch @@ -0,0 +1,105 @@ +commit b73fb7a614e1b5d60af23fb0752b5cead995e02e +Author: Mark Wielaard +Date: Sun Apr 14 00:30:05 2019 +0200 + + Remove no-stack-protector, add stack-protector-strong to some. + +diff --git a/auxprogs/Makefile.am b/auxprogs/Makefile.am +index 56cc5ef..1b7842b 100644 +--- a/auxprogs/Makefile.am ++++ b/auxprogs/Makefile.am +@@ -30,7 +30,7 @@ bin_PROGRAMS = valgrind-listener valgrind-di-server + + valgrind_listener_SOURCES = valgrind-listener.c + valgrind_listener_CPPFLAGS = $(AM_CPPFLAGS_PRI) -I$(top_srcdir)/coregrind +-valgrind_listener_CFLAGS = $(AM_CFLAGS_PRI) ++valgrind_listener_CFLAGS = $(AM_CFLAGS_PRI) -fstack-protector-strong + valgrind_listener_CCASFLAGS = $(AM_CCASFLAGS_PRI) + valgrind_listener_LDFLAGS = $(AM_CFLAGS_PRI) + if VGCONF_PLATVARIANT_IS_ANDROID +@@ -49,7 +49,7 @@ endif + + valgrind_di_server_SOURCES = valgrind-di-server.c + valgrind_di_server_CPPFLAGS = $(AM_CPPFLAGS_PRI) -I$(top_srcdir)/coregrind +-valgrind_di_server_CFLAGS = $(AM_CFLAGS_PRI) ++valgrind_di_server_CFLAGS = $(AM_CFLAGS_PRI) -fstack-protector-strong + valgrind_di_server_CCASFLAGS = $(AM_CCASFLAGS_PRI) + valgrind_di_server_LDFLAGS = $(AM_CFLAGS_PRI) + if VGCONF_PLATVARIANT_IS_ANDROID +@@ -84,7 +84,7 @@ endif + + getoff_@VGCONF_ARCH_PRI@_@VGCONF_OS@_SOURCES = getoff.c + getoff_@VGCONF_ARCH_PRI@_@VGCONF_OS@_CPPFLAGS = $(AM_CPPFLAGS_@VGCONF_PLATFORM_PRI_CAPS@) +-getoff_@VGCONF_ARCH_PRI@_@VGCONF_OS@_CFLAGS = $(AM_CFLAGS_@VGCONF_PLATFORM_PRI_CAPS@) ++getoff_@VGCONF_ARCH_PRI@_@VGCONF_OS@_CFLAGS = $(AM_CFLAGS_@VGCONF_PLATFORM_PRI_CAPS@) -fstack-protector-strong + getoff_@VGCONF_ARCH_PRI@_@VGCONF_OS@_CCASFLAGS = $(AM_CCASFLAGS_PRI) + getoff_@VGCONF_ARCH_PRI@_@VGCONF_OS@_LDFLAGS = $(AM_CFLAGS_PRI) @LIB_UBSAN@ + if HAVE_DLINFO_RTLD_DI_TLS_MODID +diff --git a/configure.ac b/configure.ac +index f8c798b..ccc8f52 100755 +--- a/configure.ac ++++ b/configure.ac +@@ -2352,24 +2352,24 @@ + AM_CONDITIONAL([HAVE_ALIGNED_CXX_ALLOC], [test x$ac_have_aligned_cxx_alloc = xyes]) + + # does this compiler support -fno-stack-protector ? +-AC_MSG_CHECKING([if gcc accepts -fno-stack-protector]) +- +-safe_CFLAGS=$CFLAGS +-CFLAGS="-fno-stack-protector -Werror" +- +-AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ +- return 0; +-]])], [ +-no_stack_protector=yes +-FLAG_FNO_STACK_PROTECTOR="-fno-stack-protector" +-AC_MSG_RESULT([yes]) +-], [ +-no_stack_protector=no ++#AC_MSG_CHECKING([if gcc accepts -fno-stack-protector]) ++# ++#safe_CFLAGS=$CFLAGS ++#CFLAGS="-fno-stack-protector -Werror" ++# ++#AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ ++# return 0; ++#]])], [ ++#no_stack_protector=yes ++#FLAG_FNO_STACK_PROTECTOR="-fno-stack-protector" ++#AC_MSG_RESULT([yes]) ++#], [ ++#no_stack_protector=no + FLAG_FNO_STACK_PROTECTOR="" +-AC_MSG_RESULT([no]) +-]) +-CFLAGS=$safe_CFLAGS +- ++#AC_MSG_RESULT([no]) ++#]) ++#CFLAGS=$safe_CFLAGS ++# + AC_SUBST(FLAG_FNO_STACK_PROTECTOR) + + # does this compiler support -finline-functions ? +diff --git a/coregrind/Makefile.am b/coregrind/Makefile.am +index 94030fd..3c73210 100644 +--- a/coregrind/Makefile.am ++++ b/coregrind/Makefile.am +@@ -55,7 +55,7 @@ AR = ${LTO_AR} + RANLIB = ${LTO_RANLIB} + + valgrind_CPPFLAGS = $(AM_CPPFLAGS_PRI) +-valgrind_CFLAGS = $(AM_CFLAGS_PRI) $(LTO_CFLAGS) ++valgrind_CFLAGS = $(AM_CFLAGS_PRI) $(LTO_CFLAGS) -fstack-protector-strong + valgrind_CCASFLAGS = $(AM_CCASFLAGS_PRI) + valgrind_LDFLAGS = $(AM_CFLAGS_PRI) @LIB_UBSAN@ + # If there is no secondary platform, and the platforms include x86-darwin, +@@ -102,7 +102,7 @@ + endif + + vgdb_CPPFLAGS = $(AM_CPPFLAGS_PRI) $(GDB_SCRIPTS_DIR) +-vgdb_CFLAGS = $(AM_CFLAGS_PRI) $(LTO_CFLAGS) ++vgdb_CFLAGS = $(AM_CFLAGS_PRI) $(LTO_CFLAGS) -fstack-protector-strong + vgdb_CCASFLAGS = $(AM_CCASFLAGS_PRI) + vgdb_LDFLAGS = $(AM_CFLAGS_PRI) @LIB_UBSAN@ + if VGCONF_PLATVARIANT_IS_ANDROID diff --git a/valgrind-3.22.0-fchmodat2.patch b/valgrind-3.22.0-fchmodat2.patch deleted file mode 100644 index b1ba313b1805cd41e42f1b833ea139d5de15cd95..0000000000000000000000000000000000000000 --- a/valgrind-3.22.0-fchmodat2.patch +++ /dev/null @@ -1,206 +0,0 @@ -From a43e62dddcf51ec6578a90c5988a41e856b44b05 Mon Sep 17 00:00:00 2001 -From: Mark Wielaard -Date: Sat, 18 Nov 2023 21:17:02 +0100 -Subject: [PATCH] Add fchmodat2 syscall on linux - -fchmodat2 is a new syscall on linux 6.6. It is a variant of fchmodat -that takes an extra flags argument. - -https://bugs.kde.org/show_bug.cgi?id=477198 - -(cherry picked from commit 372d09fd9a8d76847c81092ebff71c80fd6c145d) ---- - NEWS | 1 + - coregrind/m_syswrap/priv_syswrap-linux.h | 3 +++ - coregrind/m_syswrap/syswrap-amd64-linux.c | 2 ++ - coregrind/m_syswrap/syswrap-arm-linux.c | 2 ++ - coregrind/m_syswrap/syswrap-arm64-linux.c | 2 ++ - coregrind/m_syswrap/syswrap-linux.c | 11 +++++++++++ - coregrind/m_syswrap/syswrap-mips32-linux.c | 2 ++ - coregrind/m_syswrap/syswrap-mips64-linux.c | 1 + - coregrind/m_syswrap/syswrap-nanomips-linux.c | 1 + - coregrind/m_syswrap/syswrap-ppc32-linux.c | 2 ++ - coregrind/m_syswrap/syswrap-ppc64-linux.c | 2 ++ - coregrind/m_syswrap/syswrap-s390x-linux.c | 2 ++ - coregrind/m_syswrap/syswrap-x86-linux.c | 2 ++ - include/vki/vki-scnums-shared-linux.h | 2 ++ - 14 files changed, 35 insertions(+) - -diff --git a/coregrind/m_syswrap/priv_syswrap-linux.h b/coregrind/m_syswrap/priv_syswrap-linux.h -index 7c9decf5a..798c456c9 100644 ---- a/coregrind/m_syswrap/priv_syswrap-linux.h -+++ b/coregrind/m_syswrap/priv_syswrap-linux.h -@@ -331,6 +331,9 @@ DECL_TEMPLATE(linux, sys_openat2); - // Linux-specific (new in Linux 5.14) - DECL_TEMPLATE(linux, sys_memfd_secret); - -+// Since Linux 6.6 -+DECL_TEMPLATE(linux, sys_fchmodat2); -+ - /* --------------------------------------------------------------------- - Wrappers for sockets and ipc-ery. These are split into standalone - procedures because x86-linux hides them inside multiplexors -diff --git a/coregrind/m_syswrap/syswrap-amd64-linux.c b/coregrind/m_syswrap/syswrap-amd64-linux.c -index 008600798..fe17d118b 100644 ---- a/coregrind/m_syswrap/syswrap-amd64-linux.c -+++ b/coregrind/m_syswrap/syswrap-amd64-linux.c -@@ -886,6 +886,8 @@ static SyscallTableEntry syscall_table[] = { - LINXY(__NR_epoll_pwait2, sys_epoll_pwait2), // 441 - - LINXY(__NR_memfd_secret, sys_memfd_secret), // 447 -+ -+ LINX_(__NR_fchmodat2, sys_fchmodat2), // 452 - }; - - SyscallTableEntry* ML_(get_linux_syscall_entry) ( UInt sysno ) -diff --git a/coregrind/m_syswrap/syswrap-arm-linux.c b/coregrind/m_syswrap/syswrap-arm-linux.c -index 9a7a1e0d2..811931d3b 100644 ---- a/coregrind/m_syswrap/syswrap-arm-linux.c -+++ b/coregrind/m_syswrap/syswrap-arm-linux.c -@@ -1059,6 +1059,8 @@ static SyscallTableEntry syscall_main_table[] = { - LINX_(__NR_faccessat2, sys_faccessat2), // 439 - - LINXY(__NR_epoll_pwait2, sys_epoll_pwait2), // 441 -+ -+ LINX_(__NR_fchmodat2, sys_fchmodat2), // 452 - }; - - -diff --git a/coregrind/m_syswrap/syswrap-arm64-linux.c b/coregrind/m_syswrap/syswrap-arm64-linux.c -index 6af7bab83..3307bc2ca 100644 ---- a/coregrind/m_syswrap/syswrap-arm64-linux.c -+++ b/coregrind/m_syswrap/syswrap-arm64-linux.c -@@ -840,6 +840,8 @@ static SyscallTableEntry syscall_main_table[] = { - LINXY(__NR_epoll_pwait2, sys_epoll_pwait2), // 441 - - LINXY(__NR_memfd_secret, sys_memfd_secret), // 447 -+ -+ LINX_(__NR_fchmodat2, sys_fchmodat2), // 452 - }; - - -diff --git a/coregrind/m_syswrap/syswrap-linux.c b/coregrind/m_syswrap/syswrap-linux.c -index d571fc327..efa47f2e6 100644 ---- a/coregrind/m_syswrap/syswrap-linux.c -+++ b/coregrind/m_syswrap/syswrap-linux.c -@@ -6059,6 +6059,17 @@ PRE(sys_fchmodat) - PRE_MEM_RASCIIZ( "fchmodat(path)", ARG2 ); - } - -+PRE(sys_fchmodat2) -+{ -+ PRINT("sys_fchmodat2 ( %ld, %#" FMT_REGWORD "x(%s), %" FMT_REGWORD "u, %" -+ FMT_REGWORD "u )", -+ SARG1, ARG2, (HChar*)(Addr)ARG2, ARG3, ARG4); -+ PRE_REG_READ4(long, "fchmodat2", -+ int, dfd, const char *, path, vki_mode_t, mode, -+ unsigned int, flags); -+ PRE_MEM_RASCIIZ( "fchmodat2(pathname)", ARG2 ); -+} -+ - PRE(sys_faccessat) - { - PRINT("sys_faccessat ( %ld, %#" FMT_REGWORD "x(%s), %ld )", -diff --git a/coregrind/m_syswrap/syswrap-mips32-linux.c b/coregrind/m_syswrap/syswrap-mips32-linux.c -index 6268a00dd..74a1f6eac 100644 ---- a/coregrind/m_syswrap/syswrap-mips32-linux.c -+++ b/coregrind/m_syswrap/syswrap-mips32-linux.c -@@ -1143,6 +1143,8 @@ static SyscallTableEntry syscall_main_table[] = { - LINX_ (__NR_faccessat2, sys_faccessat2), // 439 - - LINXY(__NR_epoll_pwait2, sys_epoll_pwait2), // 441 -+ -+ LINX_(__NR_fchmodat2, sys_fchmodat2), // 452 - }; - - SyscallTableEntry* ML_(get_linux_syscall_entry) (UInt sysno) -diff --git a/coregrind/m_syswrap/syswrap-mips64-linux.c b/coregrind/m_syswrap/syswrap-mips64-linux.c -index 6cdf25893..4e8508b7a 100644 ---- a/coregrind/m_syswrap/syswrap-mips64-linux.c -+++ b/coregrind/m_syswrap/syswrap-mips64-linux.c -@@ -820,6 +820,7 @@ static SyscallTableEntry syscall_main_table[] = { - LINXY (__NR_close_range, sys_close_range), - LINX_ (__NR_faccessat2, sys_faccessat2), - LINXY(__NR_epoll_pwait2, sys_epoll_pwait2), -+ LINX_ (__NR_fchmodat2, sys_fchmodat2), - }; - - SyscallTableEntry * ML_(get_linux_syscall_entry) ( UInt sysno ) -diff --git a/coregrind/m_syswrap/syswrap-nanomips-linux.c b/coregrind/m_syswrap/syswrap-nanomips-linux.c -index d724cde74..7859900c1 100644 ---- a/coregrind/m_syswrap/syswrap-nanomips-linux.c -+++ b/coregrind/m_syswrap/syswrap-nanomips-linux.c -@@ -829,6 +829,7 @@ static SyscallTableEntry syscall_main_table[] = { - LINXY (__NR_close_range, sys_close_range), - LINX_ (__NR_faccessat2, sys_faccessat2), - LINXY (__NR_epoll_pwait2, sys_epoll_pwait2), -+ LINX_ (__NR_fchmodat2, sys_fchmodat2), - }; - - SyscallTableEntry* ML_(get_linux_syscall_entry) (UInt sysno) -diff --git a/coregrind/m_syswrap/syswrap-ppc32-linux.c b/coregrind/m_syswrap/syswrap-ppc32-linux.c -index c0cfef235..1e19116ee 100644 ---- a/coregrind/m_syswrap/syswrap-ppc32-linux.c -+++ b/coregrind/m_syswrap/syswrap-ppc32-linux.c -@@ -1063,6 +1063,8 @@ static SyscallTableEntry syscall_table[] = { - LINX_(__NR_faccessat2, sys_faccessat2), // 439 - - LINXY (__NR_epoll_pwait2, sys_epoll_pwait2), // 441 -+ -+ LINX_ (__NR_fchmodat2, sys_fchmodat2), // 452 - }; - - SyscallTableEntry* ML_(get_linux_syscall_entry) ( UInt sysno ) -diff --git a/coregrind/m_syswrap/syswrap-ppc64-linux.c b/coregrind/m_syswrap/syswrap-ppc64-linux.c -index f5976f30c..1097212a4 100644 ---- a/coregrind/m_syswrap/syswrap-ppc64-linux.c -+++ b/coregrind/m_syswrap/syswrap-ppc64-linux.c -@@ -1032,6 +1032,8 @@ static SyscallTableEntry syscall_table[] = { - LINX_(__NR_faccessat2, sys_faccessat2), // 439 - - LINXY (__NR_epoll_pwait2, sys_epoll_pwait2), // 441 -+ -+ LINX_ (__NR_fchmodat2, sys_fchmodat2), // 452 - }; - - SyscallTableEntry* ML_(get_linux_syscall_entry) ( UInt sysno ) -diff --git a/coregrind/m_syswrap/syswrap-s390x-linux.c b/coregrind/m_syswrap/syswrap-s390x-linux.c -index afba154e7..3588672c7 100644 ---- a/coregrind/m_syswrap/syswrap-s390x-linux.c -+++ b/coregrind/m_syswrap/syswrap-s390x-linux.c -@@ -873,6 +873,8 @@ static SyscallTableEntry syscall_table[] = { - LINX_(__NR_faccessat2, sys_faccessat2), // 439 - - LINXY(__NR_epoll_pwait2, sys_epoll_pwait2), // 441 -+ -+ LINX_ (__NR_fchmodat2, sys_fchmodat2), // 452 - }; - - SyscallTableEntry* ML_(get_linux_syscall_entry) ( UInt sysno ) -diff --git a/coregrind/m_syswrap/syswrap-x86-linux.c b/coregrind/m_syswrap/syswrap-x86-linux.c -index da4fd8fa2..58badc6b0 100644 ---- a/coregrind/m_syswrap/syswrap-x86-linux.c -+++ b/coregrind/m_syswrap/syswrap-x86-linux.c -@@ -1658,6 +1658,8 @@ static SyscallTableEntry syscall_table[] = { - LINXY(__NR_epoll_pwait2, sys_epoll_pwait2), // 441 - - LINXY(__NR_memfd_secret, sys_memfd_secret), // 447 -+ -+ LINX_(__NR_fchmodat2, sys_fchmodat2), // 452 - }; - - SyscallTableEntry* ML_(get_linux_syscall_entry) ( UInt sysno ) -diff --git a/include/vki/vki-scnums-shared-linux.h b/include/vki/vki-scnums-shared-linux.h -index 542382b53..a4cd87149 100644 ---- a/include/vki/vki-scnums-shared-linux.h -+++ b/include/vki/vki-scnums-shared-linux.h -@@ -50,4 +50,6 @@ - - #define __NR_memfd_secret 447 - -+#define __NR_fchmodat2 452 -+ - #endif --- -2.39.3 - diff --git a/valgrind-3.22.0-rodata.patch b/valgrind-3.22.0-rodata.patch deleted file mode 100644 index 47f31edebe292c87991213cafa49a5e2d62c0306..0000000000000000000000000000000000000000 --- a/valgrind-3.22.0-rodata.patch +++ /dev/null @@ -1,122 +0,0 @@ -commit 1d00e5ce0fb069911c4b525ec38289fb5d9021b0 -Author: Paul Floyd -Date: Sat Nov 18 08:49:34 2023 +0100 - - Bug 476548 - valgrind 3.22.0 fails on assertion when loading debuginfo file produced by mold - - (cherry picked from commit 9ea4ae66707a4dcc6f4328e11911652e4418c585) - -diff --git a/coregrind/m_debuginfo/image.c b/coregrind/m_debuginfo/image.c -index 02e509071..445f95555 100644 ---- a/coregrind/m_debuginfo/image.c -+++ b/coregrind/m_debuginfo/image.c -@@ -1221,6 +1221,20 @@ Int ML_(img_strcmp_c)(DiImage* img, DiOffT off1, const HChar* str2) - } - } - -+Int ML_(img_strcmp_n)(DiImage* img, DiOffT off1, const HChar* str2, Word n) -+{ -+ ensure_valid(img, off1, 1, "ML_(img_strcmp_c)"); -+ while (n) { -+ UChar c1 = get(img, off1); -+ UChar c2 = *(const UChar*)str2; -+ if (c1 < c2) return -1; -+ if (c1 > c2) return 1; -+ if (c1 == 0) return 0; -+ off1++; str2++; --n; -+ } -+ return 0; -+} -+ - UChar ML_(img_get_UChar)(DiImage* img, DiOffT offset) - { - ensure_valid(img, offset, 1, "ML_(img_get_UChar)"); -diff --git a/coregrind/m_debuginfo/priv_image.h b/coregrind/m_debuginfo/priv_image.h -index a49846f14..c91e49f01 100644 ---- a/coregrind/m_debuginfo/priv_image.h -+++ b/coregrind/m_debuginfo/priv_image.h -@@ -115,6 +115,10 @@ Int ML_(img_strcmp)(DiImage* img, DiOffT off1, DiOffT off2); - cast to HChar before comparison. */ - Int ML_(img_strcmp_c)(DiImage* img, DiOffT off1, const HChar* str2); - -+/* Do strncmp of a C string in the image vs a normal one. Chars are -+ cast to HChar before comparison. */ -+Int ML_(img_strcmp_n)(DiImage* img, DiOffT off1, const HChar* str2, Word n); -+ - /* Do strlen of a C string in the image. */ - SizeT ML_(img_strlen)(DiImage* img, DiOffT off); - -diff --git a/coregrind/m_debuginfo/readelf.c b/coregrind/m_debuginfo/readelf.c -index fb64ed976..46f8c8343 100644 ---- a/coregrind/m_debuginfo/readelf.c -+++ b/coregrind/m_debuginfo/readelf.c -@@ -2501,8 +2501,7 @@ Bool ML_(read_elf_object) ( struct _DebugInfo* di ) - di->rodata_avma += inrw1->bias; - di->rodata_bias = inrw1->bias; - di->rodata_debug_bias = inrw1->bias; -- } -- else { -+ } else { - BAD(".rodata"); /* should not happen? */ - } - di->rodata_present = True; -@@ -2977,6 +2976,46 @@ Bool ML_(read_elf_object) ( struct _DebugInfo* di ) - return retval; - } - -+static void find_rodata(Word i, Word shnum, DiImage* dimg, struct _DebugInfo* di, DiOffT shdr_dioff, -+ UWord shdr_dent_szB, DiOffT shdr_strtab_dioff, PtrdiffT rw_dbias) -+{ -+ ElfXX_Shdr a_shdr; -+ ElfXX_Shdr a_extra_shdr; -+ ML_(img_get)(&a_shdr, dimg, -+ INDEX_BIS(shdr_dioff, i, shdr_dent_szB), -+ sizeof(a_shdr)); -+ if (di->rodata_present && -+ 0 == ML_(img_strcmp_c)(dimg, shdr_strtab_dioff -+ + a_shdr.sh_name, ".rodata")) { -+ Word sh_size = a_shdr.sh_size; -+ Word j; -+ Word next_addr = a_shdr.sh_addr + a_shdr.sh_size; -+ for (j = i + 1; j < shnum; ++j) { -+ ML_(img_get)(&a_extra_shdr, dimg, -+ INDEX_BIS(shdr_dioff, j, shdr_dent_szB), -+ sizeof(a_shdr)); -+ if (0 == ML_(img_strcmp_n)(dimg, shdr_strtab_dioff -+ + a_extra_shdr.sh_name, ".rodata", 7)) { -+ if (a_extra_shdr.sh_addr == -+ VG_ROUNDUP(next_addr, a_extra_shdr.sh_addralign)) { -+ sh_size = VG_ROUNDUP(sh_size, a_extra_shdr.sh_addralign) + a_extra_shdr.sh_size; -+ } -+ next_addr = a_extra_shdr.sh_addr + a_extra_shdr.sh_size; -+ } else { -+ break; -+ } -+ } -+ vg_assert(di->rodata_size == sh_size); -+ vg_assert(di->rodata_avma + a_shdr.sh_addr + rw_dbias); -+ di->rodata_debug_svma = a_shdr.sh_addr; -+ di->rodata_debug_bias = di->rodata_bias + -+ di->rodata_svma - di->rodata_debug_svma; -+ TRACE_SYMTAB("acquiring .rodata debug svma = %#lx .. %#lx\n", -+ di->rodata_debug_svma, -+ di->rodata_debug_svma + di->rodata_size - 1); -+ TRACE_SYMTAB("acquiring .rodata debug bias = %#lx\n", (UWord)di->rodata_debug_bias); -+ } -+} - Bool ML_(read_elf_debug) ( struct _DebugInfo* di ) - { - Word i, j; -@@ -3391,7 +3430,11 @@ Bool ML_(read_elf_debug) ( struct _DebugInfo* di ) - FIND(text, rx) - FIND(data, rw) - FIND(sdata, rw) -- FIND(rodata, rw) -+ // https://bugs.kde.org/show_bug.cgi?id=476548 -+ // special handling for rodata as adjacent -+ // rodata sections may have been merged in ML_(read_elf_object) -+ //FIND(rodata, rw) -+ find_rodata(i, ehdr_dimg.e_shnum, dimg, di, shdr_dioff, shdr_dent_szB, shdr_strtab_dioff, rw_dbias); - FIND(bss, rw) - FIND(sbss, rw) - diff --git a/valgrind-3.22.0-valgrind-monitor-python-re.patch b/valgrind-3.22.0-valgrind-monitor-python-re.patch deleted file mode 100644 index 61d26cd660211a7675708c7354c4b4d8a269c0e2..0000000000000000000000000000000000000000 --- a/valgrind-3.22.0-valgrind-monitor-python-re.patch +++ /dev/null @@ -1,32 +0,0 @@ -commit 0fbfbe05028ad18efda786a256a2738d2c231ed4 -Author: Mark Wielaard -Date: Fri Nov 17 13:31:52 2023 +0100 - - valgrind-monitor.py regular expressions should use raw strings - - With python 3.12 gdb will produce the following SyntaxWarning when - loading valgrind-monitor-def.py: - - /usr/share/gdb/auto-load/valgrind-monitor-def.py:214: - SyntaxWarning: invalid escape sequence '\[' - if re.fullmatch("^0x[0123456789ABCDEFabcdef]+\[[^\[\]]+\]$", arg_str): - - In a future python version this will become an SyntaxError. - - Use a raw strings for the regular expression. - - https://bugs.kde.org/show_bug.cgi?id=476708 - -diff --git a/coregrind/m_gdbserver/valgrind-monitor-def.py b/coregrind/m_gdbserver/valgrind-monitor-def.py -index b4e7b992d..d74b1590c 100644 ---- a/coregrind/m_gdbserver/valgrind-monitor-def.py -+++ b/coregrind/m_gdbserver/valgrind-monitor-def.py -@@ -211,7 +211,7 @@ class Valgrind_ADDR_LEN_opt(Valgrind_Command): - For compatibility reason with the Valgrind gdbserver monitor command, - we detect and accept usages such as 0x1234ABCD[10].""" - def invoke(self, arg_str : str, from_tty : bool) -> None: -- if re.fullmatch("^0x[0123456789ABCDEFabcdef]+\[[^\[\]]+\]$", arg_str): -+ if re.fullmatch(r"^0x[0123456789ABCDEFabcdef]+\[[^\[\]]+\]$", arg_str): - arg_str = arg_str.replace("[", " ") - arg_str = arg_str.replace("]", " ") - eval_execute_2(self, arg_str, diff --git a/valgrind-3.22.0.tar.bz2 b/valgrind-3.22.0.tar.bz2 deleted file mode 100644 index 1ed54bd50d6c370f818eefd08a4c8f18efba7b62..0000000000000000000000000000000000000000 Binary files a/valgrind-3.22.0.tar.bz2 and /dev/null differ diff --git a/valgrind-3.25.1.tar.bz2 b/valgrind-3.25.1.tar.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..76dbd205ad7a30e9b36c4f276d88bba2fa5b223b --- /dev/null +++ b/valgrind-3.25.1.tar.bz2 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:61deb8d0727b45c268efdc1b3b6c9e679cd97cbf5ee4b28d1dead7c8b7a271af +size 16888334 diff --git a/valgrind.spec b/valgrind.spec index fa8601fada47df1368aa3629c1ffe016ba12ee27..2f8bf1473199c52051455bac5924ccd4c629ae01 100644 --- a/valgrind.spec +++ b/valgrind.spec @@ -1,3 +1,7 @@ +# LTO triggers undefined symbols in valgrind. But valgrind has a +# --enable-lto configure time option that we will use instead. +%define _lto_cflags %{nil} + %ifarch %{ix86} %define arch_val x86 %define arch_old_val %{nil} @@ -18,35 +22,33 @@ %define arch_val ppc64le %define arch_old_val %{nil} %endif +%ifarch riscv64 +%define arch_val riscv64 +%define arch_old_val %{nil} +%endif Name: valgrind -Version: 3.22.0 +Version: 3.25.1 Release: 4 Epoch: 1 Summary: An instrumentation framework for building dynamic analysis tools -License: GPLv2+ -URL: http://www.valgrind.org/ +License: GPL-2.0-or-later +URL: https://www.valgrind.org/ Source0: https://sourceware.org/pub/%{name}/%{name}-%{version}.tar.bz2 Patch1: valgrind-3.9.0-cachegrind-improvements.patch Patch2: valgrind-3.9.0-ldso-supp.patch +Patch3: Add-AArch64-clang-longjmp-support.patch # Add LOONGARCH64 support -Patch3: Add-LOONGARCH64-Linux-support.patch -%if "%{toolchain}" == "clang" -Patch4: Add-AArch64-clang-longjmp-support.patch -%endif -# valgrind-monitor.py regular expressions should use raw strings -# https://bugs.kde.org/show_bug.cgi?id=476708 -Patch5: valgrind-3.22.0-valgrind-monitor-python-re.patch -# valgrind 3.22.0 fails on assertion when loading debuginfo -# https://bugs.kde.org/show_bug.cgi?id=476548 -Patch6: valgrind-3.22.0-rodata.patch -# Add fchmodat2 syscall on linux -# https://bugs.kde.org/show_bug.cgi?id=477198 -Patch7: valgrind-3.22.0-fchmodat2.patch +Patch4: Add-LOONGARCH64-Linux-support.patch +# # Add some stack-protector +Patch5: valgrind-3.16.0-some-stack-protector.patch +# Add some -Wl,z,now. +Patch6: valgrind-3.16.0-some-Wl-z-now.patch BuildRequires: glibc glibc-devel gdb procps gcc-c++ perl(Getopt::Long) BuildRequires: automake autoconf +ExclusiveArch: %{ix86} x86_64 ppc ppc64 ppc64le s390x armv7hl aarch64 loongarch64 riscv64 %description Valgrind is an instrumentation framework for building dynamic analysis tools. There are @@ -77,12 +79,19 @@ ar r shared/libgcc/libgcc_s_32.a CC="%{__cc} -B `pwd`/shared/libgcc/" %endif -%undefine _hardened_build %undefine _strict_symbol_defs_build -optflags="`echo " %{optflags} -Wl,-z,now -fPIE -fPIC"`" -OPTFLAGS="`echo " $optflags " | sed 's/ -m\(64\|3[21]\) / /g;s/ -fexceptions / /g;s/ -fstack-protector\([-a-z]*\) / / g;s/ -Wp,-D_FORTIFY_SOURCE=2 / /g;s/ -O2 / /g;s/ -mcpu=\([a-z0-9]\+\) / /g;s/^ //;s/ $//'`" +optflags="`echo " %{optflags} -fPIE -fPIC"`" +%ifarch ppc64 +CFLAGS="`echo " %{optflags} " | sed 's/ -fstack-protector\([-a-z]*\) / / g;s/ -O2 / /g;s/ -fexceptions / /g;'`" +%else +CFLAGS="`echo " %{optflags} " | sed 's/ -fstack-protector\([-a-z]*\) / / g;s/ -O2 / /g;'`" +%endif +export CFLAGS + +LDFLAGS="`echo " %{build_ldflags} " | sed 's/ -Wl,-z,now / / g;'`" +export LDFLAGS -%configure CC="$CC" CFLAGS="$OPTFLAGS" CXXFLAGS="$OPTFLAGS" --with-mpicc=/bin/false GDB=%{_bindir}/gdb +%configure CC="$CC" --with-mpicc=/bin/false GDB=%{_bindir}/gdb --enable-lto %make_build %install @@ -97,7 +106,8 @@ rm -rf config.h libvex*h pub_tool_*h vki/ popd %files -%license COPYING AUTHORS +%license COPYING +%doc AUTHORS %doc %{_datadir}/doc/%{name}/{html,*.pdf} %exclude %{_datadir}/doc/%{name}/*.ps %{_bindir}/* @@ -114,12 +124,33 @@ popd %{_mandir}/man1/* %changelog -* Thu Aug 28 2025 jchzhou - 1:3.22.0-4 -- Refresh and reorder patch Add-AArch64-clang-longjmp-support.patch to avoid confliction with other patches in some cases +* Tue Sep 16 2025 yaoxin <1024769339@qq.com> - 1:3.25.1-4 +- Add some stack-protector + +* Wed Aug 27 2025 Funda Wang - 1:3.25.1-3 +- add some -Wl,z,now -* Tue Jan 14 2025 Ge Wang - 1:3.22.0-3 +* Thu Jun 05 2025 laokz - 1:3.25.1-2 +- riscv64: add missing arch_val macro + +* Tue May 20 2025 Funda Wang - 1:3.25.1-1 +- update to 3.25.1 + +* Thu May 15 2025 Binbin Zhou - 1:3.25.0-2 +- Add LOONGARCH64/Linux support base on v3.25.0 + +* Sun Apr 27 2025 Funda Wang - 1:3.25.0-1 +- update to 3.25.0 with riscv64 support + +* Fri Apr 11 2025 Ge Wang - 1:3.24.0-1 +- Upgrade to 3.24.0 + +* Tue Jan 14 2025 Ge Wang - 1:3.22.0-4 - Remove empty soft link file +* Sun Oct 06 2024 Funda Wang - 1:3.22.0-3 +- Use package's own lto option instead of hardcode LTO flags + * Mon Jan 22 2024 peng.zou - 1:3.22.0-2 - Add ppc64le support diff --git a/valgrind.yaml b/valgrind.yaml index 37e54de6bea9310c255ab00df8290751491ffc02..0884add74b492233bdc7127e4b2be6b4618b6adb 100644 --- a/valgrind.yaml +++ b/valgrind.yaml @@ -1,4 +1,4 @@ version_control: git -src_repo: https://sourceware.org/git/?p=valgrind.git +src_repo: https://sourceware.org/git/valgrind.git tag_prefix: ^VALGRIND_ -seperator: _ +separator: _