Initial commit

This commit is contained in:
Your Name
2026-04-23 17:07:55 +08:00
commit b7e39e063b
16725 changed files with 1625565 additions and 0 deletions
@@ -0,0 +1,182 @@
From 2155c1b2cf00e744e280c493eb74bf457dfcc3b1 Mon Sep 17 00:00:00 2001
From: Randy MacLeod <Randy.MacLeod@windriver.com>
Date: Sun, 21 Oct 2018 15:09:31 -0400
Subject: [PATCH] Make local functions static to avoid assembler error
Avoid mips32 x-compiler warnings such as:
| ../../../valgrind-3.14.0/helgrind/tests/annotate_hbefore.c:360:6: warning: no previous prototype for 'do_signal' [-Wmissing-prototypes]
| void do_signal ( UWord* w )
| ^~~~~~~~~
by making functions and global variables that are file scope be static
and more importantly also avoid an assembler error:
/tmp/cce22iiw.s: Assembler messages:
/tmp/cce22iiw.s:446: Error: symbol `exit_0' is already defined
/tmp/cce22iiw.s:448: Error: symbol `exit' is already defined
/tmp/cce22iiw.s:915: Error: symbol `exit_0' is already defined
/tmp/cce22iiw.s:917: Error: symbol `exit' is already defined
Upstream-Status: Submitted https://bugs.kde.org/show_bug.cgi?id=400164
Signed-off-by: Randy MacLeod <Randy.MacLeod@windriver.com>
---
helgrind/tests/annotate_hbefore.c | 34 +++++++++++++++----------------
1 file changed, 17 insertions(+), 17 deletions(-)
diff --git a/helgrind/tests/annotate_hbefore.c b/helgrind/tests/annotate_hbefore.c
index e311714f7..f55514e45 100644
--- a/helgrind/tests/annotate_hbefore.c
+++ b/helgrind/tests/annotate_hbefore.c
@@ -24,7 +24,7 @@ typedef unsigned long int UWord;
// ppc64
/* return 1 if success, 0 if failure */
-UWord do_acasW ( UWord* addr, UWord expected, UWord nyu )
+static UWord do_acasW ( UWord* addr, UWord expected, UWord nyu )
{
UWord old, success;
@@ -57,7 +57,7 @@ UWord do_acasW ( UWord* addr, UWord expected, UWord nyu )
// ppc32
/* return 1 if success, 0 if failure */
-UWord do_acasW ( UWord* addr, UWord expected, UWord nyu )
+static UWord do_acasW ( UWord* addr, UWord expected, UWord nyu )
{
UWord old, success;
@@ -90,7 +90,7 @@ UWord do_acasW ( UWord* addr, UWord expected, UWord nyu )
// amd64
/* return 1 if success, 0 if failure */
-UWord do_acasW ( UWord* addr, UWord expected, UWord nyu )
+static UWord do_acasW ( UWord* addr, UWord expected, UWord nyu )
{
UWord block[4] = { (UWord)addr, expected, nyu, 2 };
__asm__ __volatile__(
@@ -113,7 +113,7 @@ UWord do_acasW ( UWord* addr, UWord expected, UWord nyu )
// x86
/* return 1 if success, 0 if failure */
-UWord do_acasW ( UWord* addr, UWord expected, UWord nyu )
+static UWord do_acasW ( UWord* addr, UWord expected, UWord nyu )
{
UWord block[4] = { (UWord)addr, expected, nyu, 2 };
__asm__ __volatile__(
@@ -138,7 +138,7 @@ UWord do_acasW ( UWord* addr, UWord expected, UWord nyu )
// arm
/* return 1 if success, 0 if failure */
-UWord do_acasW ( UWord* addr, UWord expected, UWord nyu )
+static UWord do_acasW ( UWord* addr, UWord expected, UWord nyu )
{
UWord old, success;
UWord block[2] = { (UWord)addr, nyu };
@@ -171,7 +171,7 @@ UWord do_acasW ( UWord* addr, UWord expected, UWord nyu )
// arm64
/* return 1 if success, 0 if failure */
-UWord do_acasW ( UWord* addr, UWord expected, UWord nyu )
+static UWord do_acasW ( UWord* addr, UWord expected, UWord nyu )
{
UWord old, success;
UWord block[2] = { (UWord)addr, nyu };
@@ -204,7 +204,7 @@ UWord do_acasW ( UWord* addr, UWord expected, UWord nyu )
// s390x
/* return 1 if success, 0 if failure */
-UWord do_acasW(UWord* addr, UWord expected, UWord nyu )
+static UWord do_acasW(UWord* addr, UWord expected, UWord nyu )
{
int cc;
@@ -223,7 +223,7 @@ UWord do_acasW(UWord* addr, UWord expected, UWord nyu )
// mips32
/* return 1 if success, 0 if failure */
-UWord do_acasW ( UWord* addr, UWord expected, UWord nyu )
+static UWord do_acasW ( UWord* addr, UWord expected, UWord nyu )
{
UWord success;
UWord block[3] = { (UWord)addr, nyu, expected};
@@ -256,7 +256,7 @@ UWord do_acasW ( UWord* addr, UWord expected, UWord nyu )
// mips64
/* return 1 if success, 0 if failure */
-UWord do_acasW ( UWord* addr, UWord expected, UWord nyu )
+static UWord do_acasW ( UWord* addr, UWord expected, UWord nyu )
{
UWord success;
UWord block[3] = { (UWord)addr, nyu, expected};
@@ -287,7 +287,7 @@ UWord do_acasW ( UWord* addr, UWord expected, UWord nyu )
#endif
-void atomic_incW ( UWord* w )
+static void atomic_incW ( UWord* w )
{
while (1) {
UWord old = *w;
@@ -301,7 +301,7 @@ void atomic_incW ( UWord* w )
#define NNN 1000000
-void* thread_fn ( void* arg )
+static void* thread_fn ( void* arg )
{
UWord* w = (UWord*)arg;
int i;
@@ -331,10 +331,10 @@ int main ( void )
#endif
-int shared_var = 0; // is not raced upon
+static int shared_var = 0; // is not raced upon
-void delayXms ( int i )
+static void delayXms ( int i )
{
struct timespec ts = { 0, 1 * 1000 * 1000 };
// We do the sleep in small pieces to have scheduling
@@ -348,7 +348,7 @@ void delayXms ( int i )
}
}
-void do_wait ( UWord* w )
+static void do_wait ( UWord* w )
{
UWord w0 = *w;
UWord volatile * wV = w;
@@ -357,7 +357,7 @@ void do_wait ( UWord* w )
ANNOTATE_HAPPENS_AFTER(w);
}
-void do_signal ( UWord* w )
+static void do_signal ( UWord* w )
{
ANNOTATE_HAPPENS_BEFORE(w);
atomic_incW(w);
@@ -365,7 +365,7 @@ void do_signal ( UWord* w )
-void* thread_fn1 ( void* arg )
+static void* thread_fn1 ( void* arg )
{
UWord* w = (UWord*)arg;
delayXms(500); // ensure t2 gets to its wait first
@@ -376,7 +376,7 @@ void* thread_fn1 ( void* arg )
return NULL;
}
-void* thread_fn2 ( void* arg )
+static void* thread_fn2 ( void* arg )
{
UWord* w = (UWord*)arg;
do_wait(w); // wait for h-b edge from first thread
--
2.17.0
@@ -0,0 +1,27 @@
From 5eebdefd2251803e7d21081745018fcb16b2ba71 Mon Sep 17 00:00:00 2001
From: Randy MacLeod <Randy.MacLeod@windriver.com>
Date: Wed, 8 May 2019 20:16:52 -0400
Subject: [PATCH] Return a valid exit_code from vg_regtest
Upstream-Status: Pending
Signed-off-by: Randy MacLeod <Randy.MacLeod@windriver.com>
---
tests/vg_regtest.in | 1 +
1 file changed, 1 insertion(+)
diff --git a/tests/vg_regtest.in b/tests/vg_regtest.in
index 909af3be8..f2799c4e3 100755
--- a/tests/vg_regtest.in
+++ b/tests/vg_regtest.in
@@ -403,6 +403,7 @@ sub mysystem($)
exit 1;
}
}
+ return $exit_code;
}
# if $keepunfiltered, copies $1 to $1.unfiltered.out
# renames $0 tp $1
--
2.17.0
@@ -0,0 +1,36 @@
From 99fc6fe9b66becac3c94068129e84217330a71a6 Mon Sep 17 00:00:00 2001
From: Khem Raj <raj.khem@gmail.com>
Date: Thu, 13 Jan 2022 18:26:02 -0800
Subject: [PATCH] docs: Disable manual validation
validating manual and manpages, this task involves calling xmllint which
accesses network and --nonet option also does not disable this,
therefore disable it.
Fixes
| error : Resource temporarily unavailable
| ../callgrind/docs/cl-manual.xml:4: warning: failed to load external entity "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd"
| <!ENTITY % vg-entities SYSTEM "../../docs/xml/vg-entities.xml"> %vg-entities; ]
Upstream-Status: Inappropriate [OE-Specific]
Signed-off-by: Khem Raj <raj.khem@gmail.com>
---
docs/Makefile.am | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/docs/Makefile.am b/docs/Makefile.am
index d4250e8..c500306 100644
--- a/docs/Makefile.am
+++ b/docs/Makefile.am
@@ -192,7 +192,7 @@ valid-manpages: $(MANPAGES_XML_FILES)
touch $@; \
fi
-check-local: valid-manual valid-manpages
+check-local:
# The text version of the FAQ.
FAQ.txt:
--
2.34.1
@@ -0,0 +1,82 @@
From fb5362f205b37c5060fcd764a7ed393abe4f2f3d Mon Sep 17 00:00:00 2001
From: Hongxu Jia <hongxu.jia@windriver.com>
Date: Fri, 27 Jul 2018 17:39:37 +0800
Subject: [PATCH 1/2] fix opcode not supported on mips32-linux
While build tests(`make check') on mips32-linux, there are
serial failures such as:
[snip]
| mips-wrsmllib32-linux-gcc -meb -mabi=32 -mhard-float -c
-o atomic_incs-atomic_incs.o `test -f 'atomic_incs.c' || echo
'../../../valgrind-3.13.0/memcheck/tests/'`atomic_incs.c
| /tmp/ccqrmINN.s: Assembler messages:
| /tmp/ccqrmINN.s:247: Error: opcode not supported on this
processor: mips1 (mips1) `ll $t3,0($t1)'
| /tmp/ccqrmINN.s:249: Error: opcode not supported on this
processor: mips1 (mips1) `sc $t3,0($t1)'
[snip]
Since the following commit applied, it defines CLFAGS for mips32,
but missed to pass them to tests which caused the above failure
...
3e344c57f Merge in a port for mips32-linux
...
Upstream-Status: Submitted [https://bugs.kde.org/show_bug.cgi?id=396905]
Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
---
helgrind/tests/Makefile.am | 5 +++++
memcheck/tests/Makefile.am | 5 +++++
none/tests/mips32/Makefile.am | 4 ++++
3 files changed, 14 insertions(+)
diff --git a/helgrind/tests/Makefile.am b/helgrind/tests/Makefile.am
index ad1af191a..6209d35a7 100644
--- a/helgrind/tests/Makefile.am
+++ b/helgrind/tests/Makefile.am
@@ -214,6 +214,11 @@ check_PROGRAMS += annotate_rwlock
endif
AM_CFLAGS += $(AM_FLAG_M3264_PRI)
+
+if VGCONF_PLATFORMS_INCLUDE_MIPS32_LINUX
+AM_CFLAGS += $(AM_CFLAGS_MIPS32_LINUX)
+endif
+
AM_CXXFLAGS += $(AM_FLAG_M3264_PRI)
LDADD = -lpthread
diff --git a/memcheck/tests/Makefile.am b/memcheck/tests/Makefile.am
index 84e49405f..aff861a32 100644
--- a/memcheck/tests/Makefile.am
+++ b/memcheck/tests/Makefile.am
@@ -443,6 +443,11 @@ check_PROGRAMS += reach_thread_register
endif
AM_CFLAGS += $(AM_FLAG_M3264_PRI)
+
+if VGCONF_PLATFORMS_INCLUDE_MIPS32_LINUX
+AM_CFLAGS += $(AM_CFLAGS_MIPS32_LINUX)
+endif
+
AM_CXXFLAGS += $(AM_FLAG_M3264_PRI)
if VGCONF_PLATFORMS_INCLUDE_ARM_LINUX
diff --git a/none/tests/mips32/Makefile.am b/none/tests/mips32/Makefile.am
index d11591d45..602cd26f6 100644
--- a/none/tests/mips32/Makefile.am
+++ b/none/tests/mips32/Makefile.am
@@ -99,6 +99,10 @@ check_PROGRAMS = \
round_fpu64 \
fpu_branches
+if VGCONF_PLATFORMS_INCLUDE_MIPS32_LINUX
+AM_CFLAGS += $(AM_CFLAGS_MIPS32_LINUX)
+endif
+
AM_CFLAGS += @FLAG_M32@
AM_CXXFLAGS += @FLAG_M32@
AM_CCASFLAGS += @FLAG_M32@
--
2.17.1
@@ -0,0 +1,108 @@
From 715cf122388f3527afa5649cebf9f1522c240693 Mon Sep 17 00:00:00 2001
From: Khem Raj <raj.khem@gmail.com>
Date: Thu, 20 Apr 2017 10:11:16 -0700
Subject: [PATCH] makefiles: Drop setting -mcpu to cortex-a8 on arm
architecture
We can not assume that all arches armv7+ are cortex-a8 only
it fails to build for rpi which is armv7ve based (cortex-a8) cpu
implementation.
Fixes
| cc1: warning: switch -mcpu=cortex-a8 conflicts with -march=armv7ve switch
Upstream-Status: Submitted [https://bugs.kde.org/show_bug.cgi?id=454346]
Signed-off-by: Khem Raj <raj.khem@gmail.com>
---
Makefile.all.am | 6 +++---
helgrind/tests/Makefile.am | 6 +++---
none/tests/arm/Makefile.am | 18 +++++++++---------
3 files changed, 15 insertions(+), 15 deletions(-)
diff --git a/Makefile.all.am b/Makefile.all.am
index 02059a3..c7c4700 100644
--- a/Makefile.all.am
+++ b/Makefile.all.am
@@ -197,11 +197,11 @@ AM_CCASFLAGS_PPC64LE_LINUX = @FLAG_M64@ -g
AM_FLAG_M3264_ARM_LINUX = @FLAG_M32@
AM_CFLAGS_ARM_LINUX = @FLAG_M32@ \
- $(AM_CFLAGS_BASE) -marm -mcpu=cortex-a8
+ $(AM_CFLAGS_BASE) -marm
AM_CFLAGS_PSO_ARM_LINUX = @FLAG_M32@ $(AM_CFLAGS_BASE) \
- -marm -mcpu=cortex-a8 $(AM_CFLAGS_PSO_BASE)
+ -marm $(AM_CFLAGS_PSO_BASE)
AM_CCASFLAGS_ARM_LINUX = @FLAG_M32@ \
- -marm -mcpu=cortex-a8 -g
+ -marm -g
AM_FLAG_M3264_ARM64_LINUX = @FLAG_M64@
AM_CFLAGS_ARM64_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE)
diff --git a/helgrind/tests/Makefile.am b/helgrind/tests/Makefile.am
index df82169..07eb66a 100644
--- a/helgrind/tests/Makefile.am
+++ b/helgrind/tests/Makefile.am
@@ -189,9 +189,9 @@ if ! VGCONF_PLATFORMS_INCLUDE_X86_DARWIN
endif
if VGCONF_PLATFORMS_INCLUDE_ARM_LINUX
-annotate_hbefore_CFLAGS = $(AM_CFLAGS) -mcpu=cortex-a8
-tc07_hbl1_CFLAGS = $(AM_CFLAGS) -mcpu=cortex-a8
-tc08_hbl2_CFLAGS = $(AM_CFLAGS) -mcpu=cortex-a8
+annotate_hbefore_CFLAGS = $(AM_CFLAGS)
+tc07_hbl1_CFLAGS = $(AM_CFLAGS)
+tc08_hbl2_CFLAGS = $(AM_CFLAGS)
else
annotate_hbefore_CFLAGS = $(AM_CFLAGS)
tc07_hbl1_CFLAGS = $(AM_CFLAGS)
diff --git a/none/tests/arm/Makefile.am b/none/tests/arm/Makefile.am
index 024eb6d..ccecb90 100644
--- a/none/tests/arm/Makefile.am
+++ b/none/tests/arm/Makefile.am
@@ -52,10 +52,10 @@ allexec_CFLAGS = $(AM_CFLAGS) @FLAG_W_NO_NONNULL@
# need special helping w.r.t -mfpu and -mfloat-abi, though.
# Also force -O0 since -O takes hundreds of MB of memory
# for v6intThumb.c.
-v6intARM_CFLAGS = $(AM_CFLAGS) -g -O0 -mcpu=cortex-a8 -marm
-v6intThumb_CFLAGS = $(AM_CFLAGS) -g -O0 -mcpu=cortex-a8 -mthumb
+v6intARM_CFLAGS = $(AM_CFLAGS) -g -O0 -marm
+v6intThumb_CFLAGS = $(AM_CFLAGS) -g -O0 -mthumb
-v6media_CFLAGS = $(AM_CFLAGS) -g -O0 -mcpu=cortex-a8 -mthumb
+v6media_CFLAGS = $(AM_CFLAGS) -g -O0 -mthumb
v8crypto_a_CFLAGS = $(AM_CFLAGS) -g -O0 -mfpu=crypto-neon-fp-armv8 -marm
v8crypto_t_CFLAGS = $(AM_CFLAGS) -g -O0 -mfpu=crypto-neon-fp-armv8 -mthumb
@@ -65,23 +65,23 @@ v8memory_a_CFLAGS = $(AM_CFLAGS) -g -O0 \
v8memory_t_CFLAGS = $(AM_CFLAGS) -g -O0 \
-march=armv8-a -mfpu=crypto-neon-fp-armv8 -mthumb
-vfp_CFLAGS = $(AM_CFLAGS) -g -O0 -mcpu=cortex-a8 \
+vfp_CFLAGS = $(AM_CFLAGS) -g -O0 \
-mfpu=neon \
-mthumb
-neon128_CFLAGS = $(AM_CFLAGS) -g -O0 -mcpu=cortex-a8 \
+neon128_CFLAGS = $(AM_CFLAGS) -g -O0 \
-mfpu=neon \
-mthumb
-neon64_CFLAGS = $(AM_CFLAGS) -g -O0 -mcpu=cortex-a8 \
+neon64_CFLAGS = $(AM_CFLAGS) -g -O0 \
-mfpu=neon \
-mthumb
intdiv_CFLAGS = $(AM_CFLAGS) -g -march=armv7ve -mcpu=cortex-a15 -mthumb
-ldrt_CFLAGS = $(AM_CFLAGS) -g -mcpu=cortex-a8 -mthumb
-ldrt_arm_CFLAGS = $(AM_CFLAGS) -g -mcpu=cortex-a8 -marm
+ldrt_CFLAGS = $(AM_CFLAGS) -g -mthumb
+ldrt_arm_CFLAGS = $(AM_CFLAGS) -g -marm
-vcvt_fixed_float_VFP_CFLAGS = $(AM_CFLAGS) -g -mcpu=cortex-a8 -mfpu=vfpv3
+vcvt_fixed_float_VFP_CFLAGS = $(AM_CFLAGS) -g -mfpu=vfpv3
vfpv4_fma_CFLAGS = $(AM_CFLAGS) -g -O0 -march=armv7ve -mcpu=cortex-a15 -mfpu=vfpv4 -marm
--
2.12.2
@@ -0,0 +1,98 @@
From 5d411fd147d652e9d7bb259f4048693c6e4742aa Mon Sep 17 00:00:00 2001
From: Khem Raj <raj.khem@gmail.com>
Date: Mon, 9 Mar 2020 16:30:19 -0700
Subject: [PATCH] memcheck/tests: Fix timerfd syscall test
modern libc provides these functions, moreover this also ensures that we
are 64bit time_t safe. Fallback to existing definitions if libc does not
have the implementation or syscall is not defined
Upstream-Status: Submitted [https://sourceforge.net/p/valgrind/mailman/message/36943897/]
Signed-off-by: Khem Raj <raj.khem@gmail.com>
---
config.h.in | 9 +++++++++
configure.ac | 3 +++
memcheck/tests/linux/timerfd-syscall.c | 10 ++++++++--
5 files changed, 32 insertions(+), 2 deletions(-)
--- a/config.h.in
+++ b/config.h.in
@@ -301,6 +301,9 @@
/* Define to 1 if you have the <sys/sysnvl.h> header file. */
#undef HAVE_SYS_SYSNVL_H
+/* Define to 1 if you have the <sys/timerfd.h> header file. */
+#undef HAVE_SYS_TIMERFD_H
+
/* Define to 1 if you have the <sys/time.h> header file. */
#undef HAVE_SYS_TIME_H
--- a/configure.ac
+++ b/configure.ac
@@ -4098,6 +4098,7 @@ AC_CHECK_HEADERS([ \
sys/syscall.h \
sys/sysnvl.h \
sys/time.h \
+ sys/timerfd.h \
sys/types.h \
])
--- a/memcheck/tests/linux/timerfd-syscall.c
+++ b/memcheck/tests/linux/timerfd-syscall.c
@@ -45,6 +45,9 @@
#if defined(HAVE_SYS_TIME_H)
#include <sys/time.h>
#endif
+#if defined(HAVE_SYS_TIMERFD_H)
+#include <sys/timerfd.h>
+#endif
#if defined(HAVE_SYS_TYPES_H)
#include <sys/types.h>
#endif
@@ -54,7 +57,8 @@
* timerfd_* system call numbers introduced in 2.6.23. These constants are
* not yet in the glibc 2.7 headers, that is why they are defined here.
*/
-#ifndef __NR_timerfd_create
+#if !defined(HAVE_SYS_TIMERFD_H)
+#if !defined(__NR_timerfd_create)
#if defined(__x86_64__)
#define __NR_timerfd_create 283
#elif defined(__i386__)
@@ -67,8 +71,10 @@
#error Cannot detect your architecture!
#endif
#endif
+#endif
-#ifndef __NR_timerfd_settime
+#if !defined(HAVE_SYS_TIMERFD_H)
+#if !defined(__NR_timerfd_settime)
#if defined(__x86_64__)
#define __NR_timerfd_settime 286
#define __NR_timerfd_gettime 287
@@ -85,7 +91,7 @@
#error Cannot detect your architecture!
#endif
#endif
-
+#endif
/* Definitions from include/linux/timerfd.h */
@@ -127,6 +133,7 @@ void set_timespec(struct timespec *tmr,
tmr->tv_nsec = (long) (1000ULL * (ustime % 1000000ULL));
}
+#if !defined(HAVE_SYS_TIMERFD_H)
int timerfd_create(int clockid, int flags)
{
return syscall(__NR_timerfd_create, clockid, flags);
@@ -142,6 +149,7 @@ int timerfd_gettime(int ufc, struct itim
{
return syscall(__NR_timerfd_gettime, ufc, otmr);
}
+#endif
long waittmr(int tfd, int timeo)
{
@@ -0,0 +1,42 @@
From 3ff82dcb844f98dbf67c69f11f6516bc234725a9 Mon Sep 17 00:00:00 2001
From: Stacy Gaikovaia <Stacy.Gaikovaia@windriver.com>
Date: Wed, 16 Sep 2020 13:45:07 -0400
Subject: [PATCH] memcheck vgtests remove fullpath-after flags
Test executables produced when cross-compiling can contain
relative paths containing version number, such as:
coregrind/tests/../../../valgrind-3.16.1/coregrind
Remove the --fullpath-after option so yocto project doesn't
have to upgrade patch every valgrind uprev. Upgrade test stderr
paths in corresponding tests .bb script.
Upstream-Status: Inappropriate [embedded specific]
Signed-off-by: Stacy Gaikovaia <Stacy.Gaikovaia@windriver.com>
---
memcheck/tests/badfree3.vgtest | 2 +-
memcheck/tests/varinfo5.vgtest | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/memcheck/tests/badfree3.vgtest b/memcheck/tests/badfree3.vgtest
index 3dfc5fd8a..4ee03f00a 100644
--- a/memcheck/tests/badfree3.vgtest
+++ b/memcheck/tests/badfree3.vgtest
@@ -1,3 +1,3 @@
prog: badfree
-vgopts: -q --fullpath-after=memcheck/ --fullpath-after=coregrind/
+vgopts: -q
stderr_filter_args: badfree.c
diff --git a/memcheck/tests/varinfo5.vgtest b/memcheck/tests/varinfo5.vgtest
index 063d00dce..79c4a72a4 100644
--- a/memcheck/tests/varinfo5.vgtest
+++ b/memcheck/tests/varinfo5.vgtest
@@ -1,3 +1,3 @@
prog: varinfo5
-vgopts: --fullpath-after=memcheck/ --fullpath-after=coregrind/ --read-var-info=yes --read-inline-info=yes -q
+vgopts: --read-var-info=yes --read-inline-info=yes -q
stderr_filter: filter_varinfo3
--
2.25.1
@@ -0,0 +1,34 @@
From f405297d3382cd98391d02f397e2387da1f42879 Mon Sep 17 00:00:00 2001
From: Alexander Kanavin <alex.kanavin@gmail.com>
Date: Fri, 24 Jan 2020 17:55:39 +0100
Subject: [PATCH] none/tests/fdleak_cmsg.stderr.exp: adjust /tmp paths
In oe-core, /tmp is linked to /var/volatile/tmp and
valgrind output changes accordingly
Upstream-Status: Inappropriate [oe-core specific]
Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
---
none/tests/fdleak_cmsg.stderr.exp | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/none/tests/fdleak_cmsg.stderr.exp b/none/tests/fdleak_cmsg.stderr.exp
index 6e5a797b9..0ede1ab18 100644
--- a/none/tests/fdleak_cmsg.stderr.exp
+++ b/none/tests/fdleak_cmsg.stderr.exp
@@ -25,10 +25,10 @@ Open file descriptor ...: /dev/null
FILE DESCRIPTORS: 6 open (3 std) at exit.
-Open file descriptor ...: /tmp/data2
+Open file descriptor ...: ...
...
-Open file descriptor ...: /tmp/data1
+Open file descriptor ...: ...
...
Open AF_UNIX socket ...: <unknown>
--
2.17.1
@@ -0,0 +1,30 @@
From 978d9ed7f857f2cdcd2a8632f3c2feb56b99c825 Mon Sep 17 00:00:00 2001
From: Alexander Kanavin <alex@linutronix.de>
Date: Mon, 8 May 2023 11:56:35 +0200
Subject: [PATCH] none/tests/x86-linux/seg_override.c: add missing include for
musl builds
Otherwise SYS_modify_ldt is undefined.
Upstream-Status: Submitted [https://bugs.kde.org/show_bug.cgi?id=382034]
Signed-off-by: Alexander Kanavin <alex@linutronix.de>
---
none/tests/x86-linux/seg_override.c | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/none/tests/x86-linux/seg_override.c b/none/tests/x86-linux/seg_override.c
index ca8fbfe..4ef4394 100644
--- a/none/tests/x86-linux/seg_override.c
+++ b/none/tests/x86-linux/seg_override.c
@@ -3,6 +3,10 @@
#include <errno.h>
#include <string.h>
#include "../../../config.h"
+#if defined(MUSL_LIBC)
+#include <syscall.h>
+#include <unistd.h>
+#endif
/* Stuff from Wine. */
@@ -0,0 +1,31 @@
From 64ad2744acfb4fa40b1c114633a053f87125a203 Mon Sep 17 00:00:00 2001
From: Khem Raj <raj.khem@gmail.com>
Date: Sat, 10 Jun 2017 00:46:39 -0700
Subject: [PATCH 1/6] sigqueue: Rename _sifields to __si_fields on musl
Upstream-Status: Pending
Signed-off-by: Khem Raj <raj.khem@gmail.com>
---
memcheck/tests/linux/sigqueue.c | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/memcheck/tests/linux/sigqueue.c b/memcheck/tests/linux/sigqueue.c
index d18bd72..acb7cba 100644
--- a/memcheck/tests/linux/sigqueue.c
+++ b/memcheck/tests/linux/sigqueue.c
@@ -8,6 +8,11 @@
#include <syscall.h>
#include <unistd.h>
+/* musl libc defines siginfo_t __si_fields instead of _sifields */
+#if defined(__linux__) && !defined(__GLIBC__)
+#define _sifields __si_fields
+#endif
+
int main(int argc, char **argv)
{
siginfo_t *si;
--
2.13.1
@@ -0,0 +1,39 @@
From d1dea3c2bcf1e22baab39e2c0b8ca59db8a5bc37 Mon Sep 17 00:00:00 2001
From: Randy MacLeod <Randy.MacLeod@windriver.com>
Date: Mon, 13 May 2019 17:12:21 -0400
Subject: [PATCH 1/2] valgrind: filter_xml_frames: do not filter /usr
filter_xml_frames is intended to filter system paths under
'/usr' that vary from platform to platform. In the ptest case
for Yocto's valgrind, the ptest executables are placed under:
/usr/lib/valgrind/ptest
and if these frames are filtered out, then the 'drd' tests fail
the comparision between exepected and actual output.
Changing this filter allows the comparison to succeed without
any negative impact.
Upstream-Status: Inappropriate [Yocto specific]
Signed-off-by: Randy MacLeod <Randy.MacLeod@windriver.com>
---
tests/filter_xml_frames | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/tests/filter_xml_frames b/tests/filter_xml_frames
index f1fa3f070..04fbc82de 100755
--- a/tests/filter_xml_frames
+++ b/tests/filter_xml_frames
@@ -47,7 +47,8 @@ while (my $line = <>)
$has_function_name = 1 if ($line =~ /<fn>/);
# This may require tweaking; currently /lib and /usr/lib are matched
$has_system_obj = 1 if ($line =~ /<obj>\/lib/);
- $has_system_obj = 1 if ($line =~ /<obj>\/usr\/lib/);
+# for Yocto, skip /usr since tests are under /usr/lib/...
+# $has_system_obj = 1 if ($line =~ /<obj>\/usr\/lib/);
}
}
--
2.17.0
@@ -0,0 +1,92 @@
From 26c104adf6c5162572b7aa2fac89d0835b7f8f0b Mon Sep 17 00:00:00 2001
From: Randy MacLeod <Randy.MacLeod@windriver.com>
Date: Tue, 16 Oct 2018 21:27:46 -0400
Subject: [PATCH] context APIs are not available on musl
Updated patch for valgrind-3.14
Signed-off-by: Khem Raj <raj.khem@gmail.com>
Signed-off-by: Randy MacLeod <Randy.MacLeod@windriver.com>
Apply same patch to drd/tests/swapcontext.c
for valgrind-3.17.
Upstream-Status: Submitted [https://bugs.kde.org/show_bug.cgi?id=434775]
Signed-off-by: Yi Fan Yu <yifan.yu@windriver.com>
---
drd/tests/swapcontext.c | 6 ++++++
memcheck/tests/linux/stack_changes.c | 7 ++++++-
2 files changed, 12 insertions(+), 1 deletion(-)
diff --git a/drd/tests/swapcontext.c b/drd/tests/swapcontext.c
index 622c70bc5..5e72bb0f3 100644
--- a/drd/tests/swapcontext.c
+++ b/drd/tests/swapcontext.c
@@ -20,6 +20,7 @@
#define STACKSIZE (PTHREAD_STACK_MIN + 4096)
+#ifdef __GLIBC__
typedef struct thread_local {
ucontext_t uc[3];
size_t nrsw;
@@ -67,9 +68,11 @@ void *worker(void *data)
swapcontext(&tlocal->uc[0], &tlocal->uc[1]);
return NULL;
}
+#endif
int main(int argc, char *argv[])
{
+#ifdef __GLIBC__
enum { NR = 32 };
thread_local_t tlocal[NR];
pthread_t thread[NR];
@@ -94,6 +97,9 @@ int main(int argc, char *argv[])
for (i = 0; i < NR; i++)
pthread_join(thread[i], NULL);
+#else
+ printf("libc context call APIs e.g. getcontext() are deprecated by posix\n");
+#endif
return 0;
}
diff --git a/memcheck/tests/linux/stack_changes.c b/memcheck/tests/linux/stack_changes.c
index 7f97b90a5..a26cb4ae6 100644
--- a/memcheck/tests/linux/stack_changes.c
+++ b/memcheck/tests/linux/stack_changes.c
@@ -10,6 +10,7 @@
// This test is checking the libc context calls (setcontext, etc.) and
// checks that Valgrind notices their stack changes properly.
+#ifdef __GLIBC__
typedef ucontext_t mycontext;
mycontext ctx1, ctx2, oldc;
@@ -51,9 +52,11 @@ int init_context(mycontext *uc)
return ret;
}
+#endif
int main(int argc, char **argv)
{
+#ifdef __GLIBC__
int c1 = init_context(&ctx1);
int c2 = init_context(&ctx2);
@@ -66,6 +69,8 @@ int main(int argc, char **argv)
//free(ctx1.uc_stack.ss_sp);
VALGRIND_STACK_DEREGISTER(c2);
//free(ctx2.uc_stack.ss_sp);
-
+#else
+ printf("libc context call APIs e.g. getcontext() are deprecated by posix\n");
+#endif
return 0;
}
--
2.17.1
@@ -0,0 +1,45 @@
From ecbdea7bd8b08205f1bc3f6b72d4b4a80f313fcb Mon Sep 17 00:00:00 2001
From: Khem Raj <raj.khem@gmail.com>
Date: Sat, 10 Jun 2017 01:03:17 -0700
Subject: [PATCH 3/6] correct include directive path for config.h
when building out of source tree, it can not find
the generated config.h otherwise
Upstream-Status: Pending
Signed-off-by: Khem Raj <raj.khem@gmail.com>
---
memcheck/tests/linux/syscalls-2007.c | 2 +-
memcheck/tests/linux/syslog-syscall.c | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/memcheck/tests/linux/syscalls-2007.c b/memcheck/tests/linux/syscalls-2007.c
index b61c6d5..cc3fd62 100644
--- a/memcheck/tests/linux/syscalls-2007.c
+++ b/memcheck/tests/linux/syscalls-2007.c
@@ -10,7 +10,7 @@
#define _GNU_SOURCE
-#include "../../config.h"
+#include "config.h"
#include <fcntl.h>
#include <signal.h>
#include <stdint.h>
diff --git a/memcheck/tests/linux/syslog-syscall.c b/memcheck/tests/linux/syslog-syscall.c
index 1143722..21e758b 100644
--- a/memcheck/tests/linux/syslog-syscall.c
+++ b/memcheck/tests/linux/syslog-syscall.c
@@ -6,7 +6,7 @@
* klogctl().
*/
-#include "../../config.h"
+#include "config.h"
#include <stdio.h>
#if defined(HAVE_SYS_KLOG_H)
#include <sys/klog.h>
--
2.13.1
@@ -0,0 +1,257 @@
From e244a72c6f8803550f37e81f72bbae039651013b Mon Sep 17 00:00:00 2001
From: Alexander Kanavin <alex.kanavin@gmail.com>
Date: Tue, 15 Dec 2015 15:50:44 +0200
Subject: [PATCH] Modify vg_test wrapper to support PTEST formats
Change the valgrind regression test script vg_regtest to
support the yocto ptest stdout reporting format. The commit adds
'--yocto-ptest' as an optional argument to vg_regtest, which alters
the output to use the ptest infrastructure reporting format:
"[PASS|SKIP|FAIL]: testname"
instead of valgrind's internal test reporting format. Without the added
option, --yocto-ptest, the valgrind regression test output is unchanged.
Enforce 30 seconds limit for the test.
This resume execution of the remaining tests when valgrind hangs.
Upstream-Status: Inappropriate [oe-core specific]
Signed-off-by: Dave Lerner <dave.lerner@windriver.com>
Signed-off-by: Tudor Florea <tudor.florea@enea.com>
Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
Increase time limit to 90 s.
(double of the expected time of drd/tests/std_list on qemuarm64)
Signed-off-by: Yi Fan Yu <yifan.yu@windriver.com>
---
tests/vg_regtest.in | 75 +++++++++++++++++++++++++++++++++------------
1 file changed, 55 insertions(+), 20 deletions(-)
diff --git a/tests/vg_regtest.in b/tests/vg_regtest.in
index ad18800..e4bd8cb 100755
--- a/tests/vg_regtest.in
+++ b/tests/vg_regtest.in
@@ -47,6 +47,7 @@
# --loop-till-fail: loops on the test(s) till one fail, then exit
# This is useful to obtain detailed trace or --keep-unfiltered
# output of a non deterministic test failure
+# --yocto-ptest: output in yocto ptest format
#
# The easiest way is to run all tests in valgrind/ with (assuming you installed
# in $PREFIX):
@@ -139,7 +140,7 @@ my $usage="\n"
. "Usage:\n"
. " vg_regtest [--all, --valgrind, --valgrind-lib, --keep-unfiltered\n"
. " --outer-valgrind, --outer-tool, --outer-args\n"
- . " --loop-till-fail]\n"
+ . " --loop-till-fail, --yocto-ptest]\n"
. " Use EXTRA_REGTEST_OPTS to supply extra args for all tests\n"
. "\n";
@@ -187,6 +188,7 @@ my $run_outer_args = "";
my $valgrind_lib = "$tests_dir/.in_place";
my $keepunfiltered = 0;
my $looptillfail = 0;
+my $yoctoptest = 0;
# default filter is the one named "filter_stderr" in the test's directory
my $default_stderr_filter = "filter_stderr";
@@ -245,6 +247,8 @@ sub process_command_line()
$keepunfiltered = 1;
} elsif ($arg =~ /^--loop-till-fail$/) {
$looptillfail = 1;
+ } elsif ($arg =~ /^--yocto-ptest$/) {
+ $yoctoptest = 1;
} else {
die $usage;
}
@@ -376,13 +380,28 @@ sub read_vgtest_file($)
#----------------------------------------------------------------------------
# Since most of the program time is spent in system() calls, need this to
# propagate a Ctrl-C enabling us to quit.
-sub mysystem($)
+# Enforce 90 seconds limit for the test.
+# This resume execution of the remaining tests if valgrind hangs.
+sub mysystem($)
{
- my $exit_code = system($_[0]);
- ($exit_code == 2) and exit 1; # 2 is SIGINT
- return $exit_code;
+ my $exit_code=0;
+ eval {
+ local $SIG{'ALRM'} = sub { die "timed out\n" };
+ alarm(90);
+ $exit_code = system($_[0]);
+ alarm (0);
+ ($exit_code == 2) and die "SIGINT\n"; # 2 is SIGINT
+ };
+ if ($@) {
+ if ($@ eq "timed out\n") {
+ print "timed out\n";
+ return 1;
+ }
+ if ($@ eq "SIGINT\n") {
+ exit 1;
+ }
+ }
}
-
# if $keepunfiltered, copies $1 to $1.unfiltered.out
# renames $0 tp $1
sub filtered_rename($$)
@@ -430,23 +449,25 @@ sub do_diffs($$$$)
# A match; remove .out and any previously created .diff files.
unlink("$name.$mid.out");
unlink(<$name.$mid.diff*>);
- return;
+ return 0;
}
}
}
# If we reach here, none of the .exp files matched.
- print "*** $name failed ($mid) ***\n";
+ print "*** $name failed ($mid) ***\n" if ($yoctoptest == 0) ;
push(@failures, sprintf("%-40s ($mid)", "$fullname"));
$num_failures{$mid}++;
if ($looptillfail == 1) {
print "Failure encountered, stopping to loop\n";
exit 1
}
+ return 1;
}
sub do_one_test($$)
{
my ($dir, $vgtest) = @_;
+ my $diffStatus = 0;
$vgtest =~ /^(.*)\.vgtest/;
my $name = $1;
my $fullname = "$dir/$name";
@@ -465,7 +486,11 @@ sub do_one_test($$)
} elsif (256 == $prereq_res) {
# Nb: weird Perl-ism -- exit code of '1' is seen by Perl as 256...
# Prereq failed, skip.
- printf("%-16s (skipping, prereq failed: $prereq)\n", "$name:");
+ if ($yoctoptest == 0) {
+ printf("%-16s (skipping, prereq failed: $prereq)\n", "$name:");
+ } else {
+ printf("SKIP: $fullname\n");
+ }
return;
} else {
# Bad prereq; abort.
@@ -483,7 +508,7 @@ sub do_one_test($$)
}
# If there is a progB, let's start it in background:
printf("%-16s valgrind $extraopts $vgopts $prog $args (progB: $progB $argsB)\n",
- "$name:");
+ "$name:") if ($yoctoptest == 0);
# progB.done used to detect child has finished. See below.
# Note: redirection of stdout and stderr is before $progB to allow argsB
# to e.g. redirect stdoutB to stderrB
@@ -499,7 +524,8 @@ sub do_one_test($$)
. "touch progB.done) &");
}
} else {
- printf("%-16s valgrind $extraopts $vgopts $prog $args\n", "$name:");
+ printf("%-16s valgrind $extraopts $vgopts $prog $args\n", "$name:")
+ if ($yoctoptest == 0);
}
# Collect environment variables, if any.
@@ -540,7 +566,7 @@ sub do_one_test($$)
# Find all the .stdout.exp files. If none, use /dev/null.
my @stdout_exps = <$name.stdout.exp*>;
@stdout_exps = ( "/dev/null" ) if (0 == scalar @stdout_exps);
- do_diffs($fullname, $name, "stdout", \@stdout_exps);
+ $diffStatus |= do_diffs($fullname, $name, "stdout", \@stdout_exps);
# Filter stderr
$stderr_filter_args = $name if (! defined $stderr_filter_args);
@@ -549,7 +575,7 @@ sub do_one_test($$)
# Find all the .stderr.exp files. At least one must exist.
my @stderr_exps = <$name.stderr.exp*>;
(0 != scalar @stderr_exps) or die "Could not find `$name.stderr.exp*'\n";
- do_diffs($fullname, $name, "stderr", \@stderr_exps);
+ $diffStatus |= do_diffs($fullname, $name, "stderr", \@stderr_exps);
if (defined $progB) {
# wait for the child to be finished
@@ -573,7 +599,7 @@ sub do_one_test($$)
# Find all the .stdoutB.exp files. If none, use /dev/null.
my @stdoutB_exps = <$name.stdoutB.exp*>;
@stdoutB_exps = ( "/dev/null" ) if (0 == scalar @stdoutB_exps);
- do_diffs($fullname, $name, "stdoutB", \@stdoutB_exps);
+ $diffStatus |= do_diffs($fullname, $name, "stdoutB", \@stdoutB_exps);
# Filter stderr
$stderrB_filter_args = $name if (! defined $stderrB_filter_args);
@@ -582,7 +608,7 @@ sub do_one_test($$)
# Find all the .stderrB.exp files. At least one must exist.
my @stderrB_exps = <$name.stderrB.exp*>;
(0 != scalar @stderrB_exps) or die "Could not find `$name.stderrB.exp*'\n";
- do_diffs($fullname, $name, "stderrB", \@stderrB_exps);
+ $diffStatus |= do_diffs($fullname, $name, "stderrB", \@stderrB_exps);
}
# Maybe do post-test check
@@ -594,7 +620,7 @@ sub do_one_test($$)
# Find all the .post.exp files. If none, use /dev/null.
my @post_exps = <$name.post.exp*>;
@post_exps = ( "/dev/null" ) if (0 == scalar @post_exps);
- do_diffs($fullname, $name, "post", \@post_exps);
+ $diffStatus |= do_diffs($fullname, $name, "post", \@post_exps);
}
}
@@ -603,6 +629,13 @@ sub do_one_test($$)
print("(cleanup operation failed: $cleanup)\n");
}
+ if ($yoctoptest == 1) {
+ if ($diffStatus == 0) {
+ print("PASS: $fullname\n");
+ } else {
+ print("FAIL: $fullname\n");
+ }
+ }
$num_tests_done++;
}
@@ -643,7 +676,7 @@ sub test_one_dir($$)
my $tests_start_time = time;
if ($found_tests) {
- print "-- Running tests in $full_dir $dashes\n";
+ print "-- Running tests in $full_dir $dashes\n" if ($yoctoptest == 0);
}
foreach my $f (@fs) {
if (-d $f) {
@@ -657,7 +690,7 @@ sub test_one_dir($$)
my $end_time = "(in $tests_cost_time sec)";
my $end_dashes = "-" x (50 - (length $full_dir)
- (length $end_time) - 1);
- print "-- Finished tests in $full_dir $end_time $end_dashes\n";
+ print "-- Finished tests in $full_dir $dashes\n" if ($yoctoptest == 0);
}
chdir("..");
@@ -683,10 +716,12 @@ sub summarise_results
$num_failures{"stdout"}, plural($num_failures{"stdout"}),
$num_failures{"stderrB"}, plural($num_failures{"stderrB"}),
$num_failures{"stdoutB"}, plural($num_failures{"stdoutB"}),
- $num_failures{"post"}, plural($num_failures{"post"}));
+ $num_failures{"post"}, plural($num_failures{"post"}))
+ if ($yoctoptest == 0);
foreach my $failure (@failures) {
- print "$failure\n";
+ print "$failure\n"
+ if ($yoctoptest == 0);
}
print "\n";
}
--
2.30.2
@@ -0,0 +1,96 @@
From 0bf4b0ac18d1ea41b32ad781d214b295ca1998f3 Mon Sep 17 00:00:00 2001
From: Aneesh Bansal <aneesh.bansal@freescale.com>
Date: Mon, 21 Nov 2011 17:31:39 +0530
Subject: [PATCH] Added support for PPC instructions mfatbu, mfatbl.
Currently Valgrind 3.7.0 does not have support for PPC instructions mfatbu and mfatbl. When we run a USDPAA application with VALGRIND, the following error is given by valgrind :
dis_proc_ctl(ppc)(mfspr,SPR)(0x20F)
disInstr(ppc): unhandled instruction: 0x7C0F82A6
Upstream-Status: Submitted [https://bugs.kde.org/show_bug.cgi?id=289836]
Signed-off-by: Aneesh Bansal <aneesh.bansal@freescale.com>
---
VEX/priv/guest_ppc_defs.h | 2 ++
VEX/priv/guest_ppc_helpers.c | 18 ++++++++++++++++++
VEX/priv/guest_ppc_toIR.c | 22 ++++++++++++++++++++++
3 files changed, 42 insertions(+), 0 deletions(-)
diff --git a/VEX/priv/guest_ppc_defs.h b/VEX/priv/guest_ppc_defs.h
index dd3c62e..11a34aa 100644
--- a/VEX/priv/guest_ppc_defs.h
+++ b/VEX/priv/guest_ppc_defs.h
@@ -146,6 +146,8 @@ extern UInt ppc32g_dirtyhelper_MFSPR_268_269 ( UInt );
extern UInt ppc32g_dirtyhelper_MFSPR_287 ( void );
+extern UInt ppc32g_dirtyhelper_MFSPR_526_527 ( UInt );
+
extern void ppc32g_dirtyhelper_LVS ( VexGuestPPC32State* gst,
UInt vD_idx, UInt sh,
UInt shift_right );
diff --git a/VEX/priv/guest_ppc_helpers.c b/VEX/priv/guest_ppc_helpers.c
index 11aa428..b49ea3f 100644
--- a/VEX/priv/guest_ppc_helpers.c
+++ b/VEX/priv/guest_ppc_helpers.c
@@ -119,6 +119,24 @@ UInt ppc32g_dirtyhelper_MFSPR_287 ( void )
# endif
}
+/* CALLED FROM GENERATED CODE */
+/* DIRTY HELPER (non-referentially transparent) */
+UInt ppc32g_dirtyhelper_MFSPR_526_527 ( UInt r527 )
+{
+# if defined(__powerpc__) || defined(_AIX)
+ UInt spr;
+ if (r527) {
+ __asm__ __volatile__("mfspr %0,527" : "=b"(spr));
+ } else {
+ __asm__ __volatile__("mfspr %0,526" : "=b"(spr));
+ }
+ return spr;
+# else
+ return 0;
+# endif
+}
+
+
/* CALLED FROM GENERATED CODE */
/* DIRTY HELPER (reads guest state, writes guest mem) */
diff --git a/VEX/priv/guest_ppc_toIR.c b/VEX/priv/guest_ppc_toIR.c
index f8d220d..37c8974 100644
--- a/VEX/priv/guest_ppc_toIR.c
+++ b/VEX/priv/guest_ppc_toIR.c
@@ -5657,6 +5657,28 @@ static Bool dis_proc_ctl ( VexAbiInfo* vbi, UInt theInstr )
break;
}
+
+ case 526 /* 0x20E */:
+ case 527 /* 0x20F */: {
+ UInt arg = SPR==526 ? 0 : 1;
+ IRTemp val = newTemp(Ity_I32);
+ IRExpr** args = mkIRExprVec_1( mkU32(arg) );
+ IRDirty* d = unsafeIRDirty_1_N(
+ val,
+ 0/*regparms*/,
+ "ppc32g_dirtyhelper_MFSPR_526_527",
+ fnptr_to_fnentry
+ (vbi, &ppc32g_dirtyhelper_MFSPR_526_527),
+ args
+ );
+ /* execute the dirty call, dumping the result in val. */
+ stmt( IRStmt_Dirty(d) );
+ putIReg( rD_addr,
+ mkWidenFrom32(ty, mkexpr(val), False/*unsigned*/) );
+ DIP("mfspr r%u,%u", rD_addr, (UInt)SPR);
+ break;
+ }
+
default:
vex_printf("dis_proc_ctl(ppc)(mfspr,SPR)(0x%x)\n", SPR);
return False;
--
1.7.0.4
@@ -0,0 +1,33 @@
From 8facc29c3c56e6cf9cfef70986cf73876044a3fb Mon Sep 17 00:00:00 2001
From: Andre McCurdy <armccurdy@gmail.com>
Date: Tue, 19 Jan 2016 16:42:36 -0800
Subject: [PATCH] avoid neon for targets which don't support it
The sh-mem-random.c test app tries to use neon loads and stores to
test 64-bit float copies when building for ARM. Allow it to do so if
possible, but fallback to C when building for ARM targets which don't
support neon.
Upstream-Status: Submitted [https://bugs.kde.org/show_bug.cgi?id=454346]
Signed-off-by: Andre McCurdy <armccurdy@gmail.com>
---
memcheck/tests/sh-mem-random.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/memcheck/tests/sh-mem-random.c b/memcheck/tests/sh-mem-random.c
index ae82248..816e139 100644
--- a/memcheck/tests/sh-mem-random.c
+++ b/memcheck/tests/sh-mem-random.c
@@ -191,7 +191,7 @@ void do_test_at ( U1* arr )
"emms"
: : "r"(arr+dst), "r"(arr+src) : "memory"
);
-#elif defined(__linux__) && defined(__arm__) && !defined(__aarch64__)
+#elif defined(__linux__) && defined(__arm__) && defined(__ARM_NEON__) && !defined(__aarch64__)
/* On arm32, many compilers generate a 64-bit float move
using two 32 bit integer registers, which completely
defeats this test. Hence force a 64-bit NEON load and
--
1.9.1
@@ -0,0 +1,56 @@
From beaa5b64c60d501fa9cd59fdc563e5f5bccf6882 Mon Sep 17 00:00:00 2001
From: Qing He <qing.he@intel.com>
Date: Tue, 31 Aug 2010 22:51:58 +0800
Subject: [PATCH] valgrind: fix perl scripts
this is a temporary patch to workaround cross compilation.
otherwise @PERL@ will be replaced to perl-native binary,
this creates unusable scripts and fails FILERDEPENDS mechanism
(esp. rpm)
a better fix would need:
1. configure.ac should differentiate PERL and HOSTPERL
2. optionally remove ${STAGING_DIR} in #! line before do_install
8/31/2010 - created by Qing He <qing.he@intel.com>
Upstream-Status: Inappropriate [configuration]
Signed-off-by: Maxin B. John <maxin.john@intel.com>
---
massif/ms_print.in | 2 +-
perf/vg_perf.in | 2 +-
tests/vg_regtest.in | 2 +-
3 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/massif/ms_print.in b/massif/ms_print.in
index a206ce4..df1bc31 100755
--- a/massif/ms_print.in
+++ b/massif/ms_print.in
@@ -1,4 +1,4 @@
-#! @PERL@
+#! /usr/bin/perl
##--------------------------------------------------------------------##
##--- Massif's results printer ms_print.in ---##
diff --git a/perf/vg_perf.in b/perf/vg_perf.in
index 90ee1d2..c585096 100644
--- a/perf/vg_perf.in
+++ b/perf/vg_perf.in
@@ -1,4 +1,4 @@
-#! @PERL@
+#! /usr/bin/perl
##--------------------------------------------------------------------##
##--- Valgrind performance testing script vg_perf ---##
##--------------------------------------------------------------------##
diff --git a/tests/vg_regtest.in b/tests/vg_regtest.in
index 7152765..ad18800 100755
--- a/tests/vg_regtest.in
+++ b/tests/vg_regtest.in
@@ -1,4 +1,4 @@
-#! @PERL@
+#! /usr/bin/perl
##--------------------------------------------------------------------##
##--- Valgrind regression testing script vg_regtest ---##
##--------------------------------------------------------------------##
@@ -0,0 +1,13 @@
drd/tests/boost_thread
gdbserver_tests/hgtls
memcheck/tests/dw4
memcheck/tests/leak_cpp_interior
memcheck/tests/varinfo1
memcheck/tests/varinfo2
memcheck/tests/varinfo3
memcheck/tests/varinfo4
memcheck/tests/varinfo5
memcheck/tests/varinfo6
memcheck/tests/varinforestrict
helgrind/tests/hg05_race2
helgrind/tests/tc20_verifywrap
@@ -0,0 +1,11 @@
none/tests/amd64/fb_test_amd64
gdbserver_tests/hginfo
memcheck/tests/supp_unknown
helgrind/tests/tls_threads
helgrind/tests/pth_mempcpy_false_races
drd/tests/bar_bad
drd/tests/bar_bad_xml
drd/tests/pth_barrier_thr_cr
drd/tests/std_thread2
drd/tests/thread_name_xml
massif/tests/deep-D
+96
View File
@@ -0,0 +1,96 @@
#!/bin/sh
# run-ptest - 'ptest' test infrastructure shell script that
# wraps the valgrind regression script vg_regtest.
#
# Dave Lerner <dave.lerner@windriver.com>
# Randy MacLeod <Randy.MacLeod@windriver.com>
###############################################################
VALGRIND_LIB=@libdir@/valgrind
VALGRIND_LIBEXECDIR=@libexecdir@/valgrind
VALGRIND_BIN=@bindir@/valgrind
LOG="${VALGRIND_LIB}/ptest/valgrind_ptest_$(date +%Y%m%d-%H%M%S).log"
TOOLS="memcheck cachegrind callgrind helgrind drd massif dhat lackey none"
EXP_TOOLS="exp-bbv"
GDB_BIN=@bindir@/gdb
cd ${VALGRIND_LIB}/ptest && ./gdbserver_tests/make_local_links ${GDB_BIN}
echo "Hide valgrind tests that are non-deterministic"
echo "Reported at https://bugs.kde.org/show_bug.cgi?id=430321"
for i in `cat remove-for-all`; do
mv $i.vgtest $i.IGNORE;
done
arch=`arch`
if [ "$arch" = "aarch64" ]; then
echo "Aarch64: Hide valgrind tests that result in defunct process and then out of memory"
for i in `cat remove-for-aarch64`; do
mv $i.vgtest $i.IGNORE;
done
fi
echo "Run non-deterministic tests using taskset to limit them to a single core."
for i in `cat taskset_nondeterministic_tests`; do
# The remove-for-aarch64 and taskset_nondeterministic_tests may overlap so
# check if a file exist.
if test -f "${i}.vgtest"; then
taskset 0x00000001 perl tests/vg_regtest --valgrind=${VALGRIND_BIN} --valgrind-lib=${VALGRIND_LIBEXECDIR} --yocto-ptest $i 2>&1|tee -a ${LOG}
mv $i.vgtest $i.IGNORE
fi
done
cd ${VALGRIND_LIB}/ptest && ./tests/vg_regtest \
--valgrind=${VALGRIND_BIN} \
--valgrind-lib=${VALGRIND_LIBEXECDIR} \
--yocto-ptest \
gdbserver_tests ${TOOLS} ${EXP_TOOLS} \
2>&1|tee -a ${LOG}
cd ${VALGRIND_LIB}/ptest && \
./tests/post_regtest_checks $(pwd) \
gdbserver_tests ${TOOLS} ${EXP_TOOLS} \
2>&1|tee -a ${LOG}
echo "Restore non-deterministic tests"
for i in `cat taskset_nondeterministic_tests`; do
if test -f "${i}.vgtest.IGNORE"; then
mv $i.IGNORE $i.vgtest;
fi
done
if [ "$arch" = "aarch64" ]; then
echo "Aarch64: Restore valgrind tests that result in defunct process and then out of memory"
for i in `cat remove-for-aarch64`; do
mv $i.IGNORE $i.vgtest;
done
fi
echo "Restore valgrind tests that are non-deterministc"
for i in `cat remove-for-all`; do
mv $i.IGNORE $i.vgtest;
done
echo "Failed test details..."
failed_tests=`grep FAIL: ${LOG} | awk '{print $2}'`
for test in $failed_tests; do
for diff_results in `ls $test*.diff`; do
echo $diff_results
echo '************'
cat $diff_results
done
done
passed=`grep PASS: ${LOG}|wc -l`
failed=`grep FAIL: ${LOG}|wc -l`
skipped=`grep SKIP: ${LOG}|wc -l`
all=$((passed + failed + skipped))
( echo "=== Test Summary ==="
echo "TOTAL: ${all}"
echo "PASSED: ${passed}"
echo "FAILED: ${failed}"
echo "SKIPPED: ${skipped}"
) | tee -a /${LOG}
@@ -0,0 +1,35 @@
From 8154d38bac5cdb3675cfdaf562ab9da01988b263 Mon Sep 17 00:00:00 2001
From: Yi Fan Yu <yifan.yu@windriver.com>
Date: Wed, 17 Mar 2021 12:16:31 -0400
Subject: [PATCH 19/20] remove s390x_vec_op_t
s390x_vec_op_t is not needed anywhere, only elements of enum are accessed
removing it ensures that valgrind can be built with -fno-common option
Fixes
ld: ../../VEX/libvex-amd64-linux.a(libvex_amd64_linux_a-guest_s390_helpers.o):/usr/src/debug/valgrind/3.15.0-r0/build/VEX/../../valgrind-3.15.0/VEX/priv/guest_s390_defs.h:289: multiple definition of `s390x_vec_op_t'; ../../VEX/libvexmultiarch-amd64-linux.a(libvexmultiarch_amd64_linux_a-multiarch_main_main.o):/usr/src/debug/valgrind/3.15.0-r0/build/VEX/../../valgrind-3.15.0/VEX/priv/guest_s390_defs.h:289: first defined here
Upstream-Status: Pending
Signed-off-by: Khem Raj <raj.khem@gmail.com>
Signed-off-by: Yi Fan Yu <yifan.yu@windriver.com>
---
VEX/priv/guest_s390_defs.h | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/VEX/priv/guest_s390_defs.h b/VEX/priv/guest_s390_defs.h
index 9054290..dab8002 100644
--- a/VEX/priv/guest_s390_defs.h
+++ b/VEX/priv/guest_s390_defs.h
@@ -284,7 +284,7 @@ typedef enum {
S390_VEC_OP_VBPERM,
S390_VEC_OP_VMSL,
S390_VEC_OP_LAST // supposed to be the last element in enum
-} s390x_vec_op_t;
+};
/* Arguments of s390x_dirtyhelper_vec_op(...) which are packed into one
ULong variable.
--
2.29.2
@@ -0,0 +1,2 @@
helgrind/tests/hg05_race2
helgrind/tests/tc09_bad_unlock
@@ -0,0 +1,44 @@
From d134dafc2f11e0d247420a0ba360bcdef77b4093 Mon Sep 17 00:00:00 2001
From: Andre McCurdy <armccurdy@gmail.com>
Date: Tue, 19 Jan 2016 16:00:00 -0800
Subject: [PATCH] use appropriate -march/-mcpu/-mfpu for ARM test apps
Ensure that test apps in none/tests/arm are compiled with appropriate
-march/-mcpu/-mfpu flags to support the instructions being tested.
The aim is to build all tests, even ones which may not run correctly
on all target CPUs.
For tests requiring armv7ve instructions, ensure that we set both
-march=armv7ve and -mcpu=cortex-a15 (since some TUNE_CCARGS may set
-march=armv7-a and adding -mcpu=cortex-a15 alone is not enough to
over-ride that).
See similar cases in none/tests/arm/Makefile.am
Upstream-Status: Submitted [https://bugs.kde.org/show_bug.cgi?id=454346]
Signed-off-by: Andre McCurdy <armccurdy@gmail.com>
---
none/tests/arm/Makefile.am | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
diff --git a/none/tests/arm/Makefile.am b/none/tests/arm/Makefile.am
index 4507a20..825290f 100644
--- a/none/tests/arm/Makefile.am
+++ b/none/tests/arm/Makefile.am
@@ -62,8 +62,10 @@ neon64_CFLAGS = $(AM_CFLAGS) -g -O0 -mcpu=cortex-a8 \
-mfpu=neon \
-mthumb
-intdiv_CFLAGS = $(AM_CFLAGS) -g -mcpu=cortex-a15 -mthumb
+intdiv_CFLAGS = $(AM_CFLAGS) -g -march=armv7ve -mcpu=cortex-a15 -mthumb
ldrt_CFLAGS = $(AM_CFLAGS) -g -mcpu=cortex-a8 -mthumb
ldrt_arm_CFLAGS = $(AM_CFLAGS) -g -mcpu=cortex-a8 -marm
-vfpv4_fma_CFLAGS = $(AM_CFLAGS) -g -O0 -mcpu=cortex-a15 -mfpu=vfpv4 -marm
+vcvt_fixed_float_VFP_CFLAGS = $(AM_CFLAGS) -g -mcpu=cortex-a8 -mfpu=vfpv3
+
+vfpv4_fma_CFLAGS = $(AM_CFLAGS) -g -O0 -march=armv7ve -mcpu=cortex-a15 -mfpu=vfpv4 -marm
--
1.9.1
@@ -0,0 +1,45 @@
From 005bd11809a1ce65e9f2c28e884354a4741650b9 Mon Sep 17 00:00:00 2001
From: Andre McCurdy <armccurdy@gmail.com>
Date: Tue, 13 Dec 2016 11:29:55 +0800
Subject: [PATCH] make ld-XXX.so strlen intercept optional
Hack: Depending on how glibc was compiled (e.g. optimised for size or
built with _FORTIFY_SOURCE enabled) the strlen symbol might not be
found in ld-XXX.so. Therefore although we should still try to
intercept it, don't make it mandatory to do so.
Upstream-Status: Inappropriate
Signed-off-by: Andre McCurdy <armccurdy@gmail.com>
Signed-off-by: Jackie Huang <jackie.huang@windriver.com>
---
coregrind/m_redir.c | 13 ++++++++++++-
1 file changed, 12 insertions(+), 1 deletion(-)
diff --git a/coregrind/m_redir.c b/coregrind/m_redir.c
index ff35009..d7d6816 100644
--- a/coregrind/m_redir.c
+++ b/coregrind/m_redir.c
@@ -1275,7 +1275,18 @@ static void add_hardwired_spec (const HChar* sopatt, const HChar* fnpatt,
spec->to_addr = to_addr;
spec->isWrap = False;
spec->isGlobal = False;
- spec->mandatory = mandatory;
+
+ /* Hack: Depending on how glibc was compiled (e.g. optimised for size or
+ built with _FORTIFY_SOURCE enabled) the strlen symbol might not be found.
+ Therefore although we should still try to intercept it, don't make it
+ mandatory to do so. We over-ride "mandatory" here to avoid the need to
+ patch the many different architecture specific callers to
+ add_hardwired_spec(). */
+ if (0==VG_(strcmp)("strlen", fnpatt))
+ spec->mandatory = NULL;
+ else
+ spec->mandatory = mandatory;
+
/* VARIABLE PARTS */
spec->mark = False; /* not significant */
spec->done = False; /* not significant */
--
1.9.1
@@ -0,0 +1,254 @@
SUMMARY = "Valgrind memory debugger and instrumentation framework"
HOMEPAGE = "http://valgrind.org/"
DESCRIPTION = "Valgrind is an instrumentation framework for building dynamic analysis tools. There are Valgrind tools that can automatically detect many memory management and threading bugs, and profile your programs in detail."
BUGTRACKER = "http://valgrind.org/support/bug_reports.html"
LICENSE = "GPL-2.0-only & GPL-2.0-or-later & BSD-3-Clause"
LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263 \
file://include/pub_tool_basics.h;beginline=6;endline=29;md5=41c410e8d3f305aee7aaa666b2e4f366 \
file://include/valgrind.h;beginline=1;endline=56;md5=ad3b317f3286b6b704575d9efe6ca5df \
file://COPYING.DOCS;md5=24ea4c7092233849b4394699333b5c56"
DEPENDS = " \
${@bb.utils.contains('DISTRO_FEATURES', 'ptest', 'boost', '', d)} \
"
SRC_URI = "https://sourceware.org/pub/valgrind/valgrind-${PV}.tar.bz2 \
file://fixed-perl-path.patch \
file://Added-support-for-PPC-instructions-mfatbu-mfatbl.patch \
file://run-ptest \
file://remove-for-aarch64 \
file://remove-for-all \
file://taskset_nondeterministic_tests \
file://0005-Modify-vg_test-wrapper-to-support-PTEST-formats.patch \
file://use-appropriate-march-mcpu-mfpu-for-ARM-test-apps.patch \
file://avoid-neon-for-targets-which-don-t-support-it.patch \
file://valgrind-make-ld-XXX.so-strlen-intercept-optional.patch \
file://0001-makefiles-Drop-setting-mcpu-to-cortex-a8-on-arm-arch.patch \
file://0001-sigqueue-Rename-_sifields-to-__si_fields-on-musl.patch \
file://0002-context-APIs-are-not-available-on-musl.patch \
file://0003-correct-include-directive-path-for-config.h.patch \
file://0001-fix-opcode-not-supported-on-mips32-linux.patch \
file://0001-Make-local-functions-static-to-avoid-assembler-error.patch \
file://0001-Return-a-valid-exit_code-from-vg_regtest.patch \
file://0001-valgrind-filter_xml_frames-do-not-filter-usr.patch \
file://0001-memcheck-vgtests-remove-fullpath-after-flags.patch \
file://s390x_vec_op_t.patch \
file://0001-none-tests-fdleak_cmsg.stderr.exp-adjust-tmp-paths.patch \
file://0001-memcheck-tests-Fix-timerfd-syscall-test.patch \
file://0001-docs-Disable-manual-validation.patch \
file://0001-none-tests-x86-linux-seg_override.c-add-missing-incl.patch \
"
SRC_URI[sha256sum] = "10ce1618bb3e33fad16eb79552b0a3e1211762448a0d7fce11c8a6243b9ac971"
UPSTREAM_CHECK_REGEX = "valgrind-(?P<pver>\d+(\.\d+)+)\.tar"
COMPATIBLE_HOST = '(i.86|x86_64|arm|aarch64|mips|powerpc|powerpc64).*-linux'
# patch 0001-memcheck-vgtests-remove-fullpath-after-flags.patch removes relative path
# argument. Change expected stderr files accordingly.
do_patch:append() {
bb.build.exec_func('do_sed_paths', d)
}
do_sed_paths() {
sed -i -e 's|tests/||' ${S}/memcheck/tests/badfree3.stderr.exp
sed -i -e 's|tests/||' ${S}/memcheck/tests/varinfo5.stderr.exp
}
# valgrind supports armv7 and above
COMPATIBLE_HOST:armv4 = 'null'
COMPATIBLE_HOST:armv5 = 'null'
COMPATIBLE_HOST:armv6 = 'null'
# valgrind fails with powerpc soft-float
COMPATIBLE_HOST:powerpc = "${@bb.utils.contains('TARGET_FPU', 'soft', 'null', '.*-linux', d)}"
# X32 isn't supported by valgrind at this time
COMPATIBLE_HOST:linux-gnux32 = 'null'
COMPATIBLE_HOST:linux-muslx32 = 'null'
# Disable for some MIPS variants
COMPATIBLE_HOST:mipsarchr6 = 'null'
COMPATIBLE_HOST:linux-gnun32 = 'null'
# Disable for powerpc64 with musl
COMPATIBLE_HOST:libc-musl:powerpc64 = 'null'
# brokenseip is unfortunately required by ptests to pass
inherit autotools-brokensep ptest multilib_header
EXTRA_OECONF = "--enable-tls --without-mpicc"
EXTRA_OECONF += "${@['--enable-only32bit','--enable-only64bit'][d.getVar('SITEINFO_BITS') != '32']}"
# valgrind checks host_cpu "armv7*)", so we need to over-ride the autotools.bbclass default --host option
EXTRA_OECONF:append:arm = " --host=armv7${HOST_VENDOR}-${HOST_OS}"
EXTRA_OEMAKE = "-w"
CACHED_CONFIGUREVARS += "ac_cv_path_PERL='/usr/bin/env perl'"
# valgrind likes to control its own optimisation flags. It generally defaults
# to -O2 but uses -O0 for some specific test apps etc. Passing our own flags
# (via CFLAGS) means we interfere with that. Only pass DEBUG_FLAGS to it
# which fixes build path issue in DWARF.
SELECTED_OPTIMIZATION = "${DEBUG_FLAGS}"
do_configure:prepend () {
rm -rf ${S}/config.h
sed -i -e 's:$(abs_top_builddir):$(pkglibdir)/ptest:g' ${S}/none/tests/Makefile.am
sed -i -e 's:$(top_builddir):$(pkglibdir)/ptest:g' ${S}/memcheck/tests/Makefile.am
}
do_install:append () {
install -m 644 ${B}/default.supp ${D}/${libexecdir}/valgrind/
oe_multilib_header valgrind/config.h
}
VALGRINDARCH ?= "${TARGET_ARCH}"
VALGRINDARCH:aarch64 = "arm64"
VALGRINDARCH:x86-64 = "amd64"
VALGRINDARCH:x86 = "x86"
VALGRINDARCH:mips = "mips32"
VALGRINDARCH:mipsel = "mips32"
VALGRINDARCH:mips64el = "mips64"
VALGRINDARCH:powerpc = "ppc"
VALGRINDARCH:powerpc64 = "ppc64"
VALGRINDARCH:powerpc64le = "ppc64le"
INHIBIT_PACKAGE_STRIP_FILES = "${PKGD}${libexecdir}/valgrind/vgpreload_memcheck-${VALGRINDARCH}-linux.so"
RDEPENDS:${PN} += "perl"
# valgrind needs debug information for ld.so at runtime in order to
# redirect functions like strlen.
RRECOMMENDS:${PN} += "${TCLIBC}-dbg"
RDEPENDS:${PN}-ptest += " bash coreutils curl file \
gdb libgomp \
perl \
perl-module-file-basename perl-module-file-glob perl-module-getopt-long \
perl-module-overloading perl-module-cwd perl-module-ipc-open3 \
perl-module-carp perl-module-symbol \
procps sed ${PN}-dbg ${PN}-src ${TCLIBC}-src gcc-runtime-dbg \
util-linux-taskset"
RDEPENDS:${PN}-ptest:append:libc-glibc = " glibc-utils glibc-gconv-utf-32"
# One of the tests contains a bogus interpreter path on purpose.
# Skip file dependency check
SKIP_FILEDEPS:${PN}-ptest = '1'
INSANE_SKIP:${PN}-ptest = "debug-deps"
do_compile_ptest() {
oe_runmake check
}
do_install_ptest() {
chmod +x ${B}/tests/vg_regtest
# The test application binaries are not automatically installed.
# Grab them from the build directory.
#
# The regression tests require scripts and data files that are not
# copied to the build directory. They must be copied from the
# source directory.
saved_dir=$PWD
for parent_dir in ${S} ${B} ; do
cd $parent_dir
subdirs=" \
.in_place \
cachegrind/tests \
callgrind/tests \
dhat/tests \
drd/tests \
gdbserver_tests \
helgrind/tests \
lackey/tests \
massif/tests \
memcheck/tests \
none/tests \
tests \
exp-bbv/tests \
"
# Get the vg test scripts, filters, and expected files
for dir in $subdirs ; do
find $dir | cpio -pvdu ${D}${PTEST_PATH}
done
cd $saved_dir
done
# The scripts reference config.h so add it to the top ptest dir.
cp ${B}/config.h ${D}${PTEST_PATH}
install -D ${WORKDIR}/remove-for-aarch64 ${D}${PTEST_PATH}
install -D ${WORKDIR}/remove-for-all ${D}${PTEST_PATH}
install -D ${WORKDIR}/taskset_nondeterministic_tests ${D}${PTEST_PATH}
# Add an executable need by none/tests/bigcode
mkdir ${D}${PTEST_PATH}/perf
cp ${B}/perf/bigcode ${D}${PTEST_PATH}/perf
# Add an executable needed by memcheck/tests/vcpu_bz2
cp ${B}/perf/bz2 ${D}${PTEST_PATH}/perf
# Make the ptest dir look like the top level valgrind src dir
# This is checked by the gdbserver_tests/make_local_links script
mkdir ${D}${PTEST_PATH}/coregrind
cp ${B}/coregrind/vgdb ${D}${PTEST_PATH}/coregrind
# Add an executable needed by massif tests
cp ${B}/massif/ms_print ${D}${PTEST_PATH}/massif/ms_print
find ${D}${PTEST_PATH} \
\( \
-name "Makefile*" \
-o -name "*.o" \
\) \
-exec rm {} \;
sed -i s:\.\./\.\./callgrind/callgrind_annotate:${bindir}/callgrind_annotate: ${D}${PTEST_PATH}/callgrind/tests/ann1.vgtest
sed -i s:\.\./\.\./callgrind/callgrind_annotate:${bindir}/callgrind_annotate: ${D}${PTEST_PATH}/callgrind/tests/ann2.vgtest
# point the expanded @abs_top_builddir@ of the host to PTEST_PATH
sed -i s:${S}:${PTEST_PATH}:g \
${D}${PTEST_PATH}/memcheck/tests/linux/debuginfod-check.vgtest
# handle multilib
sed -i s:@libdir@:${libdir}:g ${D}${PTEST_PATH}/run-ptest
sed -i s:@libexecdir@:${libexecdir}:g ${D}${PTEST_PATH}/run-ptest
sed -i s:@bindir@:${bindir}:g ${D}${PTEST_PATH}/run-ptest
# This test fails on the host as well, using both 3.15 and git master (as of Jan 24 2020)
# https://bugs.kde.org/show_bug.cgi?id=402833
rm ${D}${PTEST_PATH}/memcheck/tests/overlap.vgtest
# This is known failure see https://bugs.kde.org/show_bug.cgi?id=435732
rm ${D}${PTEST_PATH}/memcheck/tests/leak_cpp_interior.vgtest
# https://bugs.kde.org/show_bug.cgi?id=445743
rm ${D}${PTEST_PATH}/drd/tests/pth_mutex_signal
# As the binary isn't stripped or debug-splitted, the source file isn't fetched
# via dwarfsrcfiles either, so it needs to be installed manually.
mkdir -p ${D}/usr/src/debug/${PN}/${EXTENDPE}${PV}-${PR}/none/tests/
install ${S}/none/tests/tls.c ${D}/usr/src/debug/${PN}/${EXTENDPE}${PV}-${PR}/none/tests/
}
do_install_ptest:append:x86-64 () {
# https://bugs.kde.org/show_bug.cgi?id=463456
rm ${D}${PTEST_PATH}/memcheck/tests/origin6-fp.vgtest
# https://bugs.kde.org/show_bug.cgi?id=463458
rm ${D}${PTEST_PATH}/memcheck/tests/vcpu_fnfns.vgtest
# https://bugs.kde.org/show_bug.cgi?id=463463
rm ${D}${PTEST_PATH}/none/tests/amd64/fma.vgtest
}
# avoid stripping some generated binaries otherwise some of the tests will fail
# run-strip-reloc.sh, run-strip-strmerge.sh and so on will fail
INHIBIT_PACKAGE_STRIP_FILES += "\
${PKGD}${PTEST_PATH}/none/tests/tls \
${PKGD}${PTEST_PATH}/none/tests/tls.so \
${PKGD}${PTEST_PATH}/none/tests/tls2.so \
${PKGD}${PTEST_PATH}/helgrind/tests/tc09_bad_unlock \
${PKGD}${PTEST_PATH}/memcheck/tests/manuel1 \
${PKGD}${PTEST_PATH}/drd/tests/pth_detached3 \
"