]> git.ipfire.org Git - thirdparty/valgrind.git/commitdiff
drd/tests/pth_detached3: Make pthread_detach() call portable across platforms
authorKhem Raj <raj.khem@gmail.com>
Tue, 28 Jan 2020 03:50:04 +0000 (19:50 -0800)
committerBart Van Assche <bvanassche@acm.org>
Wed, 29 Jan 2020 04:38:04 +0000 (20:38 -0800)
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 ]

drd/tests/pth_detached3.c
drd/tests/pth_detached3.stderr.exp1
drd/tests/pth_detached3.stderr.exp2

index c02eef11abf3178455cda4cc4ea2f2075eab016b..efeb15b72d3977a16c73307ec97953c877087d15 100644 (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");
 
index 58412ec4cc0190a3e4dd7f96d72f02491d825a8d..8dd58ba0f3d84a97f750e212a630fa9ea9808e61 100644 (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.
 
index bdc5cf8c9b700552711fff0e94c9c5e01b67e923..e82dee14db37c949fa64431f43bbe0b4d614cd7e 100644 (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.