fix rejection of dns responses with pointers past 512 byte offset
[musl] / src / internal / pthread_impl.h
index 58e0613..de2b9d8 100644 (file)
 #include "atomic.h"
 #include "futex.h"
 
+#include "pthread_arch.h"
+
 #define pthread __pthread
 
 struct pthread {
        /* Part 1 -- these fields may be external or
         * internal (accessed via asm) ABI. Do not change. */
        struct pthread *self;
+#ifndef TLS_ABOVE_TP
        uintptr_t *dtv;
+#endif
        struct pthread *prev, *next; /* non-ABI */
        uintptr_t sysinfo;
-       uintptr_t canary, canary2;
+#ifndef TLS_ABOVE_TP
+#ifdef CANARY_PAD
+       uintptr_t canary_pad;
+#endif
+       uintptr_t canary;
+#endif
 
        /* Part 2 -- implementation details, non-ABI. */
        int tid;
@@ -52,21 +61,19 @@ struct pthread {
 
        /* Part 3 -- the positions of these fields relative to
         * the end of the structure is external and internal ABI. */
-       uintptr_t canary_at_end;
-       uintptr_t *dtv_copy;
+#ifdef TLS_ABOVE_TP
+       uintptr_t canary;
+       uintptr_t *dtv;
+#endif
 };
 
 enum {
-       DT_EXITING = 0,
+       DT_EXITED = 0,
+       DT_EXITING,
        DT_JOINABLE,
        DT_DETACHED,
 };
 
-struct __timer {
-       int timerid;
-       pthread_t thread;
-};
-
 #define __SU (sizeof(size_t)/sizeof(int))
 
 #define _a_stacksize __u.__s[0]
@@ -99,12 +106,6 @@ struct __timer {
 #define _b_waiters2 __u.__vi[4]
 #define _b_inst __u.__p[3]
 
-#include "pthread_arch.h"
-
-#ifndef CANARY
-#define CANARY canary
-#endif
-
 #ifndef TP_OFFSET
 #define TP_OFFSET 0
 #endif
@@ -154,7 +155,6 @@ hidden int __pthread_key_delete_impl(pthread_key_t);
 
 extern hidden volatile size_t __pthread_tsd_size;
 extern hidden void *__pthread_tsd_main[];
-extern hidden volatile int __aio_fut;
 extern hidden volatile int __eintr_valid_flag;
 
 hidden int __clone(int (*)(void *), void *, int, void *, ...);
@@ -189,6 +189,8 @@ hidden void __tl_sync(pthread_t);
 
 extern hidden volatile int __thread_list_lock;
 
+extern hidden volatile int __abort_lock[1];
+
 extern hidden unsigned __default_stacksize;
 extern hidden unsigned __default_guardsize;