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 ]
This commit is contained in:
Khem Raj 2020-01-27 19:50:04 -08:00 committed by Bart Van Assche
parent 4f70aa4fb0
commit 92fcf75d6d
3 changed files with 6 additions and 5 deletions

View File

@ -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");

View File

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

View File

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