mirror of
https://git.yoctoproject.org/poky
synced 2026-05-08 05:09:24 +00:00
valgrind: Fix ptest build with musl
musl unearthed a problem when building out of tree, config.h was being used from $(srcdir) instead of generated config.h in $(builddir) this assumed functions e.g. mallinfo() and more which are not in musl as a result tests broke. Also add fixes to build remaining tests when building on musl pass -fno-pie as it cant use PIE especially in ptests/x86_64 (From OE-Core rev: 8ab1828f073b5eab606161681a5f260cc0e77bf1) Signed-off-by: Khem Raj <raj.khem@gmail.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
+31
@@ -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
|
||||
|
||||
+39
@@ -0,0 +1,39 @@
|
||||
From de692e359801a1f0488c76267e4f904dd2efe754 Mon Sep 17 00:00:00 2001
|
||||
From: Khem Raj <raj.khem@gmail.com>
|
||||
Date: Sat, 10 Jun 2017 00:39:07 -0700
|
||||
Subject: [PATCH] str_tester.c: Limit rawmemchr() test to glibc
|
||||
|
||||
rawmemchr() is a GNU extention therefore mark it so
|
||||
|
||||
Signed-off-by: Khem Raj <raj.khem@gmail.com>
|
||||
---
|
||||
Upstream-Status: Pending
|
||||
|
||||
memcheck/tests/str_tester.c | 4 ++--
|
||||
1 file changed, 2 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/memcheck/tests/str_tester.c b/memcheck/tests/str_tester.c
|
||||
index 9f7790a..47e4b4a 100644
|
||||
--- a/memcheck/tests/str_tester.c
|
||||
+++ b/memcheck/tests/str_tester.c
|
||||
@@ -504,7 +504,7 @@ test_strchrnul (void)
|
||||
#endif
|
||||
|
||||
// DDD: better done by testing for the function.
|
||||
-#if !defined(__APPLE__) && !defined(__sun)
|
||||
+#if !defined(__APPLE__) && !defined(__sun) && defined(__GLIBC__)
|
||||
static void
|
||||
test_rawmemchr (void)
|
||||
{
|
||||
@@ -1442,7 +1442,7 @@ main (void)
|
||||
test_strchrnul ();
|
||||
# endif
|
||||
|
||||
-# if !defined(__APPLE__) && !defined(__sun)
|
||||
+# if !defined(__APPLE__) && !defined(__sun) && defined(__GLIBC__)
|
||||
/* rawmemchr. */
|
||||
test_rawmemchr ();
|
||||
# endif
|
||||
--
|
||||
2.13.1
|
||||
|
||||
+49
@@ -0,0 +1,49 @@
|
||||
From 862b807076d57f2f58ed9d572ddac8bb402774a2 Mon Sep 17 00:00:00 2001
|
||||
From: Khem Raj <raj.khem@gmail.com>
|
||||
Date: Sat, 10 Jun 2017 01:01:10 -0700
|
||||
Subject: [PATCH 2/6] context APIs are not available on musl
|
||||
|
||||
Upstream-Status: Pending
|
||||
|
||||
Signed-off-by: Khem Raj <raj.khem@gmail.com>
|
||||
---
|
||||
memcheck/tests/linux/stack_changes.c | 7 ++++++-
|
||||
1 file changed, 6 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/memcheck/tests/linux/stack_changes.c b/memcheck/tests/linux/stack_changes.c
|
||||
index a978fc2..ffb49c6 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 struct ucontext 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.13.1
|
||||
|
||||
+45
@@ -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
|
||||
|
||||
+37
@@ -0,0 +1,37 @@
|
||||
From fb77fef4f866dac7bcc6d1ae025da60564869f84 Mon Sep 17 00:00:00 2001
|
||||
From: Khem Raj <raj.khem@gmail.com>
|
||||
Date: Sat, 10 Jun 2017 01:06:11 -0700
|
||||
Subject: [PATCH 4/6] pth_atfork1.c: Define error() API for musl
|
||||
|
||||
Upstream-Status: Pending
|
||||
|
||||
Signed-off-by: Khem Raj <raj.khem@gmail.com>
|
||||
---
|
||||
none/tests/pth_atfork1.c | 4 ++--
|
||||
1 file changed, 2 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/none/tests/pth_atfork1.c b/none/tests/pth_atfork1.c
|
||||
index 34201ef..b7f5f2d 100644
|
||||
--- a/none/tests/pth_atfork1.c
|
||||
+++ b/none/tests/pth_atfork1.c
|
||||
@@ -18,7 +18,7 @@
|
||||
Boston, MA 02111-1307, USA. */
|
||||
|
||||
#include <errno.h>
|
||||
-#if !defined(__APPLE__) && !defined(__sun)
|
||||
+#if !defined(__APPLE__) && !defined(__sun) && defined(__GLIBC__)
|
||||
# include <error.h>
|
||||
#endif
|
||||
#include <stdlib.h>
|
||||
@@ -27,7 +27,7 @@
|
||||
#include <sys/wait.h>
|
||||
#include <stdio.h>
|
||||
|
||||
-#if defined(__APPLE__) || defined(__sun)
|
||||
+#if defined(__APPLE__) || defined(__sun) || (defined(__linux__) && !defined(__GLIBC__))
|
||||
#include <string.h> /* strerror */
|
||||
static void error (int status, int errnum, char* msg)
|
||||
{
|
||||
--
|
||||
2.13.1
|
||||
|
||||
+30
@@ -0,0 +1,30 @@
|
||||
From b4b9f072c22f96844e02cb9d68f7ff2408680817 Mon Sep 17 00:00:00 2001
|
||||
From: Khem Raj <raj.khem@gmail.com>
|
||||
Date: Sat, 10 Jun 2017 01:07:59 -0700
|
||||
Subject: [PATCH 5/6] tc20_verifywrap.c: Fake __GLIBC_PREREQ with musl
|
||||
|
||||
similar to sun
|
||||
|
||||
Upstream-Status: Pending
|
||||
|
||||
Signed-off-by: Khem Raj <raj.khem@gmail.com>
|
||||
---
|
||||
helgrind/tests/tc20_verifywrap.c | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/helgrind/tests/tc20_verifywrap.c b/helgrind/tests/tc20_verifywrap.c
|
||||
index c110000..a311a49 100644
|
||||
--- a/helgrind/tests/tc20_verifywrap.c
|
||||
+++ b/helgrind/tests/tc20_verifywrap.c
|
||||
@@ -20,7 +20,7 @@
|
||||
|
||||
#if !defined(__APPLE__)
|
||||
|
||||
-#if defined(__sun__)
|
||||
+#if defined(__sun__) || (defined(__linux__) && !defined(__GLIBC__))
|
||||
/* Fake __GLIBC_PREREQ on Solaris. Pretend glibc >= 2.4. */
|
||||
# define __GLIBC_PREREQ
|
||||
#else
|
||||
--
|
||||
2.13.1
|
||||
|
||||
+32
@@ -0,0 +1,32 @@
|
||||
From a6547fc17c120dbd95b852f50b0c4bdee4fedb9a Mon Sep 17 00:00:00 2001
|
||||
From: Khem Raj <raj.khem@gmail.com>
|
||||
Date: Sat, 10 Jun 2017 01:20:32 -0700
|
||||
Subject: [PATCH 6/6] pth_detached3.c: Dereference pthread_t before adding
|
||||
offset to it
|
||||
|
||||
Fixes
|
||||
error: invalid use of undefined type 'struct __pthread'
|
||||
|
||||
Upstream-Status: Pending
|
||||
|
||||
Signed-off-by: Khem Raj <raj.khem@gmail.com>
|
||||
---
|
||||
drd/tests/pth_detached3.c | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/drd/tests/pth_detached3.c b/drd/tests/pth_detached3.c
|
||||
index c02eef1..35d43a6 100644
|
||||
--- a/drd/tests/pth_detached3.c
|
||||
+++ b/drd/tests/pth_detached3.c
|
||||
@@ -21,7 +21,7 @@ int main(int argc, char** argv)
|
||||
pthread_detach(thread);
|
||||
|
||||
/* Invoke pthread_detach() with an invalid thread ID. */
|
||||
- pthread_detach(thread + 8);
|
||||
+ pthread_detach((pthread_t*)(&thread + 8));
|
||||
|
||||
fprintf(stderr, "Finished.\n");
|
||||
|
||||
--
|
||||
2.13.1
|
||||
|
||||
@@ -24,6 +24,13 @@ SRC_URI = "http://www.valgrind.org/downloads/valgrind-${PV}.tar.bz2 \
|
||||
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-str_tester.c-Limit-rawmemchr-test-to-glibc.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://0004-pth_atfork1.c-Define-error-API-for-musl.patch \
|
||||
file://0005-tc20_verifywrap.c-Fake-__GLIBC_PREREQ-with-musl.patch \
|
||||
file://0006-pth_detached3.c-Dereference-pthread_t-before-adding-.patch \
|
||||
"
|
||||
SRC_URI_append_libc-musl = "\
|
||||
file://0001-fix-build-for-musl-targets.patch \
|
||||
@@ -67,6 +74,7 @@ CACHED_CONFIGUREVARS += "ac_cv_path_PERL='/usr/bin/env perl'"
|
||||
SELECTED_OPTIMIZATION = "${DEBUG_FLAGS}"
|
||||
|
||||
CFLAGS_append_libc-uclibc = " -D__UCLIBC__ "
|
||||
CFLAGS += "-no-pie"
|
||||
|
||||
def get_mcpu(d):
|
||||
for arg in (d.getVar('TUNE_CCARGS') or '').split():
|
||||
@@ -76,6 +84,10 @@ def get_mcpu(d):
|
||||
continue
|
||||
return ""
|
||||
|
||||
do_configure_prepend () {
|
||||
rm -rf ${S}/config.h
|
||||
}
|
||||
|
||||
do_install_append () {
|
||||
install -m 644 ${B}/default.supp ${D}/${libdir}/valgrind/
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user