This is the mail archive of the
libc-alpha@sourceware.org
mailing list for the glibc project.
[PATCH] tile: BZ#14237: fix __tls_get_addr bug initializing new modules
- From: Chris Metcalf <cmetcalf at tilera dot com>
- To: <libc-alpha at sourceware dot org>
- Date: Thu, 6 Sep 2012 11:25:04 -0400
- Subject: [PATCH] tile: BZ#14237: fix __tls_get_addr bug initializing new modules
We were missing a check for TLS_DTV_UNALLOCATED; if set, we need
to go to the slow path.
---
ports/ChangeLog.tile | 4 ++++
ports/sysdeps/tile/__tls_get_addr.S | 2 ++
2 files changed, 6 insertions(+)
diff --git a/ports/ChangeLog.tile b/ports/ChangeLog.tile
index 0be6192..c3a027d 100644
--- a/ports/ChangeLog.tile
+++ b/ports/ChangeLog.tile
@@ -1,3 +1,7 @@
+2012-09-06 Chris Metcalf <cmetcalf@tilera.com>
+
+ * sysdeps/tile/__tls_get_addr.S: Fix TLS module initialization bug.
+
2012-08-27 Joseph Myers <joseph@codesourcery.com>
* sysdeps/unix/sysv/linux/tile/kernel-features.h
diff --git a/ports/sysdeps/tile/__tls_get_addr.S b/ports/sysdeps/tile/__tls_get_addr.S
index 74e4fa2..6de79ba 100644
--- a/ports/sysdeps/tile/__tls_get_addr.S
+++ b/ports/sysdeps/tile/__tls_get_addr.S
@@ -76,6 +76,8 @@ ENTRY (__tls_get_addr)
ADD_PTR r28, r28, r27 /* pointer into module array */
}
LD_PTR r26, r28 /* r26 = module TLS pointer */
+ CMPEQI r25, r26, -1 /* check r26 == TLS_DTV_UNALLOCATED */
+ BNEZ r25, .Lslowpath
{
ADD_PTR r0, r26, r29
jrp lr
--
1.7.10.3