This is the mail archive of the libc-alpha@sourceware.org mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]