svn commit: r232582 - head/lib/libc/gen
Oleksandr Tymoshenko
gonzo at FreeBSD.org
Tue Mar 6 03:42:54 UTC 2012
Author: gonzo
Date: Tue Mar 6 03:42:54 2012
New Revision: 232582
URL: http://svn.freebsd.org/changeset/base/232582
Log:
- Switch ARM and MIPS to TLS Variant I
- Fix TLS allocation for Variant I: both rtld and libc allocators
assume that tls_static_space includes space for TLS structure.
So increment calculated static size by the size of it.
Modified:
head/lib/libc/gen/tls.c
Modified: head/lib/libc/gen/tls.c
==============================================================================
--- head/lib/libc/gen/tls.c Tue Mar 6 03:30:09 2012 (r232581)
+++ head/lib/libc/gen/tls.c Tue Mar 6 03:42:54 2012 (r232582)
@@ -66,11 +66,11 @@ void __libc_free_tls(void *tls, size_t t
#error TLS_TCB_ALIGN undefined for target architecture
#endif
-#if defined(__ia64__) || defined(__powerpc__)
+#if defined(__arm__) || defined(__ia64__) || defined(__mips__) || \
+ defined(__powerpc__)
#define TLS_VARIANT_I
#endif
-#if defined(__i386__) || defined(__amd64__) || defined(__sparc64__) || \
- defined(__arm__) || defined(__mips__)
+#if defined(__i386__) || defined(__amd64__) || defined(__sparc64__)
#define TLS_VARIANT_II
#endif
@@ -308,6 +308,13 @@ _init_tls()
}
}
+#ifdef TLS_VARIANT_I
+ /*
+ * tls_static_space should include space for TLS structure
+ */
+ tls_static_space += TLS_TCB_SIZE;
+#endif
+
tls = _rtld_allocate_tls(NULL, TLS_TCB_SIZE, TLS_TCB_ALIGN);
_set_tp(tls);
More information about the svn-src-head
mailing list