From 26c104adf6c5162572b7aa2fac89d0835b7f8f0b Mon Sep 17 00:00:00 2001 From: Randy MacLeod 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 Signed-off-by: Randy MacLeod 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 --- 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