summaryrefslogtreecommitdiffstats
path: root/meta/recipes-devtools/valgrind/valgrind_3.16.1.bb
diff options
context:
space:
mode:
Diffstat (limited to 'meta/recipes-devtools/valgrind/valgrind_3.16.1.bb')
-rw-r--r--meta/recipes-devtools/valgrind/valgrind_3.16.1.bb247
1 files changed, 0 insertions, 247 deletions
diff --git a/meta/recipes-devtools/valgrind/valgrind_3.16.1.bb b/meta/recipes-devtools/valgrind/valgrind_3.16.1.bb
deleted file mode 100644
index d0aefdf39a..0000000000
--- a/meta/recipes-devtools/valgrind/valgrind_3.16.1.bb
+++ /dev/null
@@ -1,247 +0,0 @@
1SUMMARY = "Valgrind memory debugger and instrumentation framework"
2HOMEPAGE = "http://valgrind.org/"
3DESCRIPTION = "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."
4BUGTRACKER = "http://valgrind.org/support/bug_reports.html"
5LICENSE = "GPLv2 & GPLv2+ & BSD"
6LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263 \
7 file://include/pub_tool_basics.h;beginline=6;endline=29;md5=41c410e8d3f305aee7aaa666b2e4f366 \
8 file://include/valgrind.h;beginline=1;endline=56;md5=ad3b317f3286b6b704575d9efe6ca5df \
9 file://COPYING.DOCS;md5=24ea4c7092233849b4394699333b5c56"
10
11DEPENDS = " \
12 ${@bb.utils.contains('DISTRO_FEATURES', 'ptest', 'boost', '', d)} \
13 "
14
15SRC_URI = "https://sourceware.org/pub/valgrind/valgrind-${PV}.tar.bz2 \
16 file://fixed-perl-path.patch \
17 file://Added-support-for-PPC-instructions-mfatbu-mfatbl.patch \
18 file://run-ptest \
19 file://remove-for-aarch64 \
20 file://remove-for-all \
21 file://0004-Fix-out-of-tree-builds.patch \
22 file://0005-Modify-vg_test-wrapper-to-support-PTEST-formats.patch \
23 file://0001-Remove-tests-that-fail-to-build-on-some-PPC32-config.patch \
24 file://use-appropriate-march-mcpu-mfpu-for-ARM-test-apps.patch \
25 file://avoid-neon-for-targets-which-don-t-support-it.patch \
26 file://valgrind-make-ld-XXX.so-strlen-intercept-optional.patch \
27 file://0001-makefiles-Drop-setting-mcpu-to-cortex-a8-on-arm-arch.patch \
28 file://0001-str_tester.c-Limit-rawmemchr-test-to-glibc.patch \
29 file://0001-sigqueue-Rename-_sifields-to-__si_fields-on-musl.patch \
30 file://0002-context-APIs-are-not-available-on-musl.patch \
31 file://0003-correct-include-directive-path-for-config.h.patch \
32 file://0005-tc20_verifywrap.c-Fake-__GLIBC_PREREQ-with-musl.patch \
33 file://0001-memcheck-arm64-Define-__THROW-if-not-already-defined.patch \
34 file://0002-memcheck-x86-Define-__THROW-if-not-defined.patch \
35 file://0003-tests-seg_override-Replace-__modify_ldt-with-syscall.patch \
36 file://0001-fix-opcode-not-supported-on-mips32-linux.patch \
37 file://0001-Guard-against-__GLIBC_PREREQ-for-musl-libc.patch \
38 file://0001-Make-local-functions-static-to-avoid-assembler-error.patch \
39 file://0001-Return-a-valid-exit_code-from-vg_regtest.patch \
40 file://0001-valgrind-filter_xml_frames-do-not-filter-usr.patch \
41 file://0001-memcheck-vgtests-remove-fullpath-after-flags.patch \
42 file://s390x_vec_op_t.patch \
43 file://0001-none-tests-fdleak_cmsg.stderr.exp-adjust-tmp-paths.patch \
44 file://0001-memcheck-tests-Fix-timerfd-syscall-test.patch \
45 file://0001-drd-Port-to-Fedora-33.patch \
46 file://0001-drd-musl-fix.patch \
47 file://0001-helgrind-Intercept-libc-functions.patch \
48 file://0001-gdbserver_tests-Disable-nlcontrolc.vgtest-for-x86-64.patch \
49 "
50SRC_URI[md5sum] = "d1b153f1ab17cf1f311705e7a83ef589"
51SRC_URI[sha256sum] = "c91f3a2f7b02db0f3bc99479861656154d241d2fdb265614ba918cc6720a33ca"
52UPSTREAM_CHECK_REGEX = "valgrind-(?P<pver>\d+(\.\d+)+)\.tar"
53
54COMPATIBLE_HOST = '(i.86|x86_64|arm|aarch64|mips|powerpc|powerpc64).*-linux'
55
56# patch 0001-memcheck-vgtests-remove-fullpath-after-flags.patch removes relative path
57# argument. Change expected stderr files accordingly.
58do_patch_append() {
59 bb.build.exec_func('do_sed_paths', d)
60}
61
62do_sed_paths() {
63 sed -i -e 's|tests/||' ${S}/memcheck/tests/badfree3.stderr.exp
64 sed -i -e 's|tests/||' ${S}/memcheck/tests/varinfo5.stderr.exp
65}
66
67# valgrind supports armv7 and above
68COMPATIBLE_HOST_armv4 = 'null'
69COMPATIBLE_HOST_armv5 = 'null'
70COMPATIBLE_HOST_armv6 = 'null'
71
72# valgrind fails with powerpc soft-float
73COMPATIBLE_HOST_powerpc = "${@bb.utils.contains('TARGET_FPU', 'soft', 'null', '.*-linux', d)}"
74
75# X32 isn't supported by valgrind at this time
76COMPATIBLE_HOST_linux-gnux32 = 'null'
77COMPATIBLE_HOST_linux-muslx32 = 'null'
78
79# Disable for some MIPS variants
80COMPATIBLE_HOST_mipsarchr6 = 'null'
81COMPATIBLE_HOST_linux-gnun32 = 'null'
82
83# Disable for powerpc64 with musl
84COMPATIBLE_HOST_libc-musl_powerpc64 = 'null'
85
86# brokenseip is unfortunately required by ptests to pass
87inherit autotools-brokensep ptest multilib_header
88
89EXTRA_OECONF = "--enable-tls --without-mpicc"
90EXTRA_OECONF += "${@['--enable-only32bit','--enable-only64bit'][d.getVar('SITEINFO_BITS') != '32']}"
91
92# valgrind checks host_cpu "armv7*)", so we need to over-ride the autotools.bbclass default --host option
93EXTRA_OECONF_append_arm = " --host=armv7${HOST_VENDOR}-${HOST_OS}"
94
95EXTRA_OEMAKE = "-w"
96
97CACHED_CONFIGUREVARS += "ac_cv_path_PERL='/usr/bin/env perl'"
98
99# valgrind likes to control its own optimisation flags. It generally defaults
100# to -O2 but uses -O0 for some specific test apps etc. Passing our own flags
101# (via CFLAGS) means we interfere with that. Only pass DEBUG_FLAGS to it
102# which fixes build path issue in DWARF.
103SELECTED_OPTIMIZATION = "${DEBUG_FLAGS}"
104
105do_configure_prepend () {
106 rm -rf ${S}/config.h
107 sed -i -e 's:$(abs_top_builddir):$(pkglibdir)/ptest:g' ${S}/none/tests/Makefile.am
108 sed -i -e 's:$(top_builddir):$(pkglibdir)/ptest:g' ${S}/memcheck/tests/Makefile.am
109}
110
111do_install_append () {
112 install -m 644 ${B}/default.supp ${D}/${libdir}/valgrind/
113 oe_multilib_header valgrind/config.h
114}
115
116VALGRINDARCH ?= "${TARGET_ARCH}"
117VALGRINDARCH_aarch64 = "arm64"
118VALGRINDARCH_x86-64 = "amd64"
119VALGRINDARCH_x86 = "x86"
120VALGRINDARCH_mips = "mips32"
121VALGRINDARCH_mipsel = "mips32"
122VALGRINDARCH_mips64el = "mips64"
123VALGRINDARCH_powerpc = "ppc"
124VALGRINDARCH_powerpc64 = "ppc64"
125VALGRINDARCH_powerpc64el = "ppc64le"
126
127INHIBIT_PACKAGE_STRIP_FILES = "${PKGD}${libdir}/valgrind/vgpreload_memcheck-${VALGRINDARCH}-linux.so"
128
129RDEPENDS_${PN} += "perl"
130
131# valgrind needs debug information for ld.so at runtime in order to
132# redirect functions like strlen.
133RRECOMMENDS_${PN} += "${TCLIBC}-dbg"
134
135RDEPENDS_${PN}-ptest += " bash coreutils file \
136 gdb libgomp \
137 perl \
138 perl-module-file-basename perl-module-file-glob perl-module-getopt-long \
139 perl-module-overloading \
140 procps sed ${PN}-dbg ${PN}-src"
141RDEPENDS_${PN}-ptest_append_libc-glibc = " glibc-utils"
142
143# One of the tests contains a bogus interpreter path on purpose.
144# Skip file dependency check
145SKIP_FILEDEPS_${PN}-ptest = '1'
146INSANE_SKIP_${PN}-ptest = "debug-deps"
147
148do_compile_ptest() {
149 oe_runmake check
150}
151
152do_install_ptest() {
153 chmod +x ${B}/tests/vg_regtest
154
155 # The test application binaries are not automatically installed.
156 # Grab them from the build directory.
157 #
158 # The regression tests require scripts and data files that are not
159 # copied to the build directory. They must be copied from the
160 # source directory.
161 saved_dir=$PWD
162 for parent_dir in ${S} ${B} ; do
163 cd $parent_dir
164
165 subdirs=" \
166 .in_place \
167 cachegrind/tests \
168 callgrind/tests \
169 dhat/tests \
170 drd/tests \
171 gdbserver_tests \
172 helgrind/tests \
173 lackey/tests \
174 massif/tests \
175 memcheck/tests \
176 none/tests \
177 tests \
178 exp-bbv/tests \
179 "
180 # Get the vg test scripts, filters, and expected files
181 for dir in $subdirs ; do
182 find $dir | cpio -pvdu ${D}${PTEST_PATH}
183 done
184 cd $saved_dir
185 done
186
187 # The scripts reference config.h so add it to the top ptest dir.
188 cp ${B}/config.h ${D}${PTEST_PATH}
189 install -D ${WORKDIR}/remove-for-aarch64 ${D}${PTEST_PATH}
190 install -D ${WORKDIR}/remove-for-all ${D}${PTEST_PATH}
191
192 # Add an executable need by none/tests/bigcode
193 mkdir ${D}${PTEST_PATH}/perf
194 cp ${B}/perf/bigcode ${D}${PTEST_PATH}/perf
195
196 # Add an executable needed by memcheck/tests/vcpu_bz2
197 cp ${B}/perf/bz2 ${D}${PTEST_PATH}/perf
198
199 # Make the ptest dir look like the top level valgrind src dir
200 # This is checked by the gdbserver_tests/make_local_links script
201 mkdir ${D}${PTEST_PATH}/coregrind
202 cp ${B}/coregrind/vgdb ${D}${PTEST_PATH}/coregrind
203
204 # Add an executable needed by massif tests
205 cp ${B}/massif/ms_print ${D}${PTEST_PATH}/massif/ms_print
206
207 find ${D}${PTEST_PATH} \
208 \( \
209 -name "Makefile*" \
210 -o -name "*.o" \
211 \) \
212 -exec rm {} \;
213
214 # These files need to be newer so touch them.
215 touch ${D}${PTEST_PATH}/cachegrind/tests/a.c -r ${D}${PTEST_PATH}/cachegrind/tests/cgout-test
216
217 # find *_annotate in ${bindir} for yocto build
218 sed -i s:\.\./\.\./cachegrind/cg_annotate:${bindir}/cg_annotate: ${D}${PTEST_PATH}/cachegrind/tests/ann1.vgtest
219 sed -i s:\.\./\.\./cachegrind/cg_annotate:${bindir}/cg_annotate: ${D}${PTEST_PATH}/cachegrind/tests/ann2.vgtest
220
221 sed -i s:\.\./\.\./callgrind/callgrind_annotate:${bindir}/callgrind_annotate: ${D}${PTEST_PATH}/callgrind/tests/ann1.vgtest
222 sed -i s:\.\./\.\./callgrind/callgrind_annotate:${bindir}/callgrind_annotate: ${D}${PTEST_PATH}/callgrind/tests/ann2.vgtest
223
224 # handle multilib
225 sed -i s:@libdir@:${libdir}:g ${D}${PTEST_PATH}/run-ptest
226 sed -i s:@bindir@:${bindir}:g ${D}${PTEST_PATH}/run-ptest
227
228 # This test fails on the host as well, using both 3.15 and git master (as of Jan 24 2020)
229 # https://bugs.kde.org/show_bug.cgi?id=402833
230 rm ${D}${PTEST_PATH}/memcheck/tests/overlap.vgtest
231
232 # As the binary isn't stripped or debug-splitted, the source file isn't fetched
233 # via dwarfsrcfiles either, so it needs to be installed manually.
234 mkdir -p ${D}/usr/src/debug/${PN}/${EXTENDPE}${PV}-${PR}/${BP}/none/tests/
235 install ${S}/none/tests/tls.c ${D}/usr/src/debug/${PN}/${EXTENDPE}${PV}-${PR}/${BP}/none/tests/
236}
237
238# avoid stripping some generated binaries otherwise some of the tests will fail
239# run-strip-reloc.sh, run-strip-strmerge.sh and so on will fail
240INHIBIT_PACKAGE_STRIP_FILES = "\
241 ${PKGD}${PTEST_PATH}/none/tests/tls \
242 ${PKGD}${PTEST_PATH}/none/tests/tls.so \
243 ${PKGD}${PTEST_PATH}/none/tests/tls2.so \
244 ${PKGD}${PTEST_PATH}/helgrind/tests/tc09_bad_unlock \
245 ${PKGD}${PTEST_PATH}/memcheck/tests/manuel1 \
246 ${PKGD}${PTEST_PATH}/drd/tests/pth_detached3 \
247"