This is the mail archive of the
libc-alpha@sources.redhat.com
mailing list for the glibc project.
Re: TLS on GNU/Hurd (was Re: configure.in broken.)
> /* Fill in the DTV slot so that a later LD/GD access will find it. */
> - THREAD_DTV ()[map->l_tls_modid].pointer = dest;
> + {
> + dtv_t *dtv = THREAD_DTV ();
> + dtv[map->l_tls_modid].pointer = dest;
> + }
This is wrong. All the error means is that the THREAD_DTV return value
has the wrong type.
2004-09-03 Alfred M. Szmidt <ams@kemisten.nu>
* sysdeps/mach/hurd/i386/tls.h (THREAD_DTV): Changed type of _DTV
to `dtv_t *'.
Index: sysdeps/mach/hurd/i386/tls.h
===================================================================
RCS file: /cvs/glibc/libc/sysdeps/mach/hurd/i386/tls.h,v
retrieving revision 1.4
diff -u -r1.4 tls.h
--- sysdeps/mach/hurd/i386/tls.h 3 Sep 2004 00:28:13 -0000 1.4
+++ sysdeps/mach/hurd/i386/tls.h 3 Sep 2004 18:51:32 -0000
@@ -129,7 +129,7 @@
/* Return the address of the dtv for the current thread. */
# define THREAD_DTV() \
- ({ void *_dtv; \
+ ({ dtv_t *_dtv; \
asm ("movl %%gs:%P1,%0" : "=q" (_dtv) : "i" (offsetof (tcbhead_t, dtv)));\
_dtv; })