tile: BZ#14237: fix __tls_get_addr bug initializing new modules
authorChris Metcalf <cmetcalf@tilera.com>
Thu, 6 Sep 2012 15:25:04 +0000 (11:25 -0400)
committerChris Metcalf <cmetcalf@tilera.com>
Thu, 6 Sep 2012 15:25:04 +0000 (11:25 -0400)
We were missing a check for TLS_DTV_UNALLOCATED; if set, we need
to go to the slow path.

ports/ChangeLog.tile
ports/sysdeps/tile/__tls_get_addr.S

index 0be6192..c3a027d 100644 (file)
@@ -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
index 74e4fa2..6de79ba 100644 (file)
@@ -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