#define SHARED  /* needed to get struct rtld_global from <ldsodefs.h> */
#include <sysdep.h>
#include <tls.h>
#include <ldsodefs.h>

--

-- Abuse tls.h macros to derive offsets relative to the thread register.
#define thread_offsetof(mem)	(long)(offsetof(struct pthread, mem) - TLS_TCB_OFFSET - TLS_PRE_TCB_SIZE)

MULTIPLE_THREADS_OFFSET		thread_offsetof (header.multiple_threads)
PID_OFFSET			thread_offsetof (pid)
TID_OFFSET			thread_offsetof (tid)
POINTER_GUARD			(offsetof (tcbhead_t, pointer_guard) - TLS_TCB_OFFSET - sizeof (tcbhead_t))
FEEDBACK_DATA_OFFSET		(offsetof (tcbhead_t, feedback_data) - TLS_TCB_OFFSET - sizeof (tcbhead_t))
DTV_OFFSET			(offsetof (tcbhead_t, dtv) - TLS_TCB_OFFSET - sizeof (tcbhead_t))
TLS_GENERATION_OFFSET		offsetof (struct rtld_global, _dl_tls_generation)
