This is the mail archive of the glibc-cvs@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]

GNU C Library master sources branch master updated. glibc-2.19-489-g36ffe73


This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "GNU C Library master sources".

The branch, master has been updated
       via  36ffe7398af5e5daa5745c64a15226d864378738 (commit)
      from  2482ae433a4249495859343ae1fba408300f2c2e (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
http://sourceware.org/git/gitweb.cgi?p=glibc.git;a=commitdiff;h=36ffe7398af5e5daa5745c64a15226d864378738

commit 36ffe7398af5e5daa5745c64a15226d864378738
Author: Will Newton <will.newton@linaro.org>
Date:   Fri May 23 15:24:30 2014 +0100

    ARM: Fix handling of concurrent TLS descriptor resolution
    
    The current code for handling concurrent resolution says that the
    ABI for _dl_tlsdesc_resolve_hold is the same as that of
    _dl_tlsdesc_lazy_resolver. However _dl_tlsdesc_resolve_hold is
    called from the trampoline directly rather than the lazy resolver
    stub so, for example, r2 has not been pushed so does not needed
    to be restored.
    
    This fixes an intermittent failure in nptl/tst-tls3 when building
    glibc for arm-linux-gnueabihf with -mtls-dialect=gnu2.
    
    ChangeLog:
    
    2014-05-27  Will Newton  <will.newton@linaro.org>
    
    	[BZ #16990]
    	* sysdeps/arm/dl-tlsdesc.S (_dl_tlsdesc_resolve_hold): Save
    	and restore r2 rather than just restoring.

diff --git a/ChangeLog b/ChangeLog
index 1c2aff1..0396d3b 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2014-05-27  Will Newton  <will.newton@linaro.org>
+
+	[BZ #16990]
+	* sysdeps/arm/dl-tlsdesc.S (_dl_tlsdesc_resolve_hold): Save
+	and restore r2 rather than just restoring.
+
 2014-05-27  Siddhesh Poyarekar  <siddhesh@redhat.com>
 
 	[BZ #16724]
diff --git a/NEWS b/NEWS
index 331601c..6a0c222 100644
--- a/NEWS
+++ b/NEWS
@@ -18,7 +18,7 @@ Version 2.20
   16759, 16760, 16770, 16786, 16789, 16791, 16796, 16799, 16800, 16815,
   16823, 16824, 16831, 16838, 16849, 16854, 16876, 16877, 16878, 16885,
   16888, 16890, 16912, 16915, 16916, 16917, 16922, 16927, 16928, 16932,
-  16943, 16958, 16966, 16967, 16965, 16977, 16978, 16984.
+  16943, 16958, 16966, 16967, 16965, 16977, 16978, 16984, 16990.
 
 * The minimum Linux kernel version that this version of the GNU C Library
   can be used with is 2.6.32.
diff --git a/sysdeps/arm/dl-tlsdesc.S b/sysdeps/arm/dl-tlsdesc.S
index 1644a32..e87e7fb 100644
--- a/sysdeps/arm/dl-tlsdesc.S
+++ b/sysdeps/arm/dl-tlsdesc.S
@@ -186,7 +186,9 @@ _dl_tlsdesc_lazy_resolver:
 	.size	_dl_tlsdesc_lazy_resolver, .-_dl_tlsdesc_lazy_resolver
 
 /* Holder for lazy tls descriptors being resolve in another thread.
-   Same ABI as the lazy resolver itself.  */
+
+   Our calling convention is to clobber r0, r1 and the processor
+   flags.  All others that are modified must be saved */
 	.hidden _dl_tlsdesc_resolve_hold
 	.global	_dl_tlsdesc_resolve_hold
 	.type	_dl_tlsdesc_resolve_hold,#function
@@ -194,29 +196,20 @@ _dl_tlsdesc_lazy_resolver:
 	eabi_fnstart
 	.align 2
 _dl_tlsdesc_resolve_hold:
-	/* Tell the unwinder that r2 has already been pushed.  */
-	eabi_save ({r2})
-	cfi_adjust_cfa_offset (4)
+	eabi_save ({r2,r3,ip,lr})
+	push	{r2, r3, ip, lr}
+	cfi_adjust_cfa_offset (16)
 	cfi_rel_offset (r2, 0)
-	eabi_save ({r0,r1,r3,ip,lr})
-	push	{r0, r1, r3, ip, lr}
-	cfi_adjust_cfa_offset (20)
-	cfi_rel_offset (r0, 0)
-	cfi_rel_offset (r1, 4)
-	cfi_rel_offset (r3, 8)
-	cfi_rel_offset (ip, 12)
-	cfi_rel_offset (lr, 16)
-	adr	r2, _dl_tlsdesc_resolve_hold
+	cfi_rel_offset (r3, 4)
+	cfi_rel_offset (ip, 8)
+	cfi_rel_offset (lr, 12)
+	adr	r1, _dl_tlsdesc_resolve_hold
 	bl	_dl_tlsdesc_resolve_hold_fixup
-	pop	{r0, r1, r3, ip, lr}
-	cfi_adjust_cfa_offset (-20)
+	pop	{r2, r3, ip, lr}
+	cfi_adjust_cfa_offset (-16)
 	cfi_restore (lr)
 	cfi_restore (ip)
 	cfi_restore (r3)
-	cfi_restore (r1)
-	cfi_restore (r0)
-	pop	{r2}
-	cfi_adjust_cfa_offset (-4)
 	cfi_restore (r2)
 	sfi_breg r0, \
 	ldr     r1, [\B, #4]

-----------------------------------------------------------------------

Summary of changes:
 ChangeLog                |    6 ++++++
 NEWS                     |    2 +-
 sysdeps/arm/dl-tlsdesc.S |   31 ++++++++++++-------------------
 3 files changed, 19 insertions(+), 20 deletions(-)


hooks/post-receive
-- 
GNU C Library master sources


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