blob: 7f0e38cb955c9b8b7f9fcb0062c1f84ad33b13f0 [file] [log] [blame]
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