| 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 |
| |