| From 92fcf75d6d3903e45492b041bf4ad07787d2e58a Mon Sep 17 00:00:00 2001 |
| From: Khem Raj <raj.khem@gmail.com> |
| Date: Mon, 27 Jan 2020 19:50:04 -0800 |
| Subject: [PATCH] drd/tests/pth_detached3: Make pthread_detach() call portable |
| across platforms |
| |
| pthread_t is opaque type therefore we can not apply simple arithmetic to |
| variables of pthread_t type this test needs to pass a invalid pthread_t |
| handle, typcasting to uintptr_t works too and is portable across glibc and |
| musl |
| |
| Fixes |
| | pth_detached3.c:24:25: error: invalid use of undefined type 'struct __pthread' |
| | 24 | pthread_detach(thread + 8); |
| | | ^ |
| |
| [ bvanassche: reformatted patch description and fixed up line numbers ] |
| |
| Upstream-Status: Backport [https://sourceware.org/git/?p=valgrind.git;a=commit;h=92fcf75d6d3903e45492b041bf4ad07787d2e58a] |
| Signed-off-by: Khem Raj <raj.khem@gmail.com> |
| --- |
| drd/tests/pth_detached3.c | 3 ++- |
| drd/tests/pth_detached3.stderr.exp1 | 4 ++-- |
| drd/tests/pth_detached3.stderr.exp2 | 4 ++-- |
| 3 files changed, 6 insertions(+), 5 deletions(-) |
| |
| diff --git a/drd/tests/pth_detached3.c b/drd/tests/pth_detached3.c |
| index c02eef1..efeb15b 100644 |
| --- a/drd/tests/pth_detached3.c |
| +++ b/drd/tests/pth_detached3.c |
| @@ -4,6 +4,7 @@ |
| #include <errno.h> |
| #include <pthread.h> |
| #include <stdio.h> |
| +#include <stdint.h> |
| |
| static void* thread_func(void* arg) |
| { |
| @@ -21,7 +22,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)((uintptr_t)thread + 8)); |
| |
| fprintf(stderr, "Finished.\n"); |
| |
| diff --git a/drd/tests/pth_detached3.stderr.exp1 b/drd/tests/pth_detached3.stderr.exp1 |
| index 58412ec..8dd58ba 100644 |
| --- a/drd/tests/pth_detached3.stderr.exp1 |
| +++ b/drd/tests/pth_detached3.stderr.exp1 |
| @@ -1,11 +1,11 @@ |
| |
| pthread_detach(): invalid thread ID 0x........ |
| at 0x........: pthread_detach (drd_pthread_intercepts.c:?) |
| - by 0x........: main (pth_detached3.c:21) |
| + by 0x........: main (pth_detached3.c:22) |
| |
| pthread_detach(): invalid thread ID 0x........ |
| at 0x........: pthread_detach (drd_pthread_intercepts.c:?) |
| - by 0x........: main (pth_detached3.c:24) |
| + by 0x........: main (pth_detached3.c:25) |
| |
| Finished. |
| |
| diff --git a/drd/tests/pth_detached3.stderr.exp2 b/drd/tests/pth_detached3.stderr.exp2 |
| index bdc5cf8..e82dee1 100644 |
| --- a/drd/tests/pth_detached3.stderr.exp2 |
| +++ b/drd/tests/pth_detached3.stderr.exp2 |
| @@ -2,12 +2,12 @@ |
| pthread_detach(): invalid thread ID 0x........ |
| at 0x........: vgDrd_set_joinable (drd_pthread_intercepts.c:?) |
| by 0x........: pthread_detach (drd_pthread_intercepts.c:?) |
| - by 0x........: main (pth_detached3.c:21) |
| + by 0x........: main (pth_detached3.c:22) |
| |
| pthread_detach(): invalid thread ID 0x........ |
| at 0x........: vgDrd_set_joinable (drd_pthread_intercepts.c:?) |
| by 0x........: pthread_detach (drd_pthread_intercepts.c:?) |
| - by 0x........: main (pth_detached3.c:24) |
| + by 0x........: main (pth_detached3.c:25) |
| |
| Finished. |
| |
| -- |
| 2.9.3 |
| |