svn commit: r237395 - stable/9/lib/libc/gen
Marius Strobl
marius at FreeBSD.org
Thu Jun 21 13:39:57 UTC 2012
Author: marius
Date: Thu Jun 21 13:39:56 2012
New Revision: 237395
URL: http://svn.freebsd.org/changeset/base/237395
Log:
MFC: r232582 (partial)
- Switch ARM 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:
stable/9/lib/libc/gen/tls.c
Directory Properties:
stable/9/lib/libc/ (props changed)
stable/9/lib/libc/stdtime/ (props changed)
stable/9/lib/libc/sys/ (props changed)
stable/9/lib/libc/uuid/ (props changed)
Modified: stable/9/lib/libc/gen/tls.c
==============================================================================
--- stable/9/lib/libc/gen/tls.c Thu Jun 21 13:01:00 2012 (r237394)
+++ stable/9/lib/libc/gen/tls.c Thu Jun 21 13:39:56 2012 (r237395)
@@ -66,11 +66,12 @@ 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(__powerpc__)
#define TLS_VARIANT_I
#endif
#if defined(__i386__) || defined(__amd64__) || defined(__sparc64__) || \
- defined(__arm__) || defined(__mips__)
+ defined(__mips__)
#define TLS_VARIANT_II
#endif
@@ -308,6 +309,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-stable-9
mailing list