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
|