diff options
author | Chris Metcalf <cmetcalf@tilera.com> | 2012-09-06 11:25:04 -0400 |
---|---|---|
committer | Chris Metcalf <cmetcalf@tilera.com> | 2012-09-06 11:25:04 -0400 |
commit | 053406fa70d071423c43465d60042d84c24f94cf (patch) | |
tree | e10dd8e47860d5dd8916fe99bce5a914604e2275 | |
parent | 14c996c83b265c31aae5f64480d393fa5d3364f3 (diff) | |
download | glibc-053406fa70d071423c43465d60042d84c24f94cf.tar.gz glibc-053406fa70d071423c43465d60042d84c24f94cf.tar.xz glibc-053406fa70d071423c43465d60042d84c24f94cf.zip |
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.
-rw-r--r-- | ports/ChangeLog.tile | 4 | ||||
-rw-r--r-- | ports/sysdeps/tile/__tls_get_addr.S | 2 |
2 files changed, 6 insertions, 0 deletions
diff --git a/ports/ChangeLog.tile b/ports/ChangeLog.tile index 0be61921eb..c3a027d6ab 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 74e4fa2c26..6de79ba53d 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 |