about summary refs log tree commit diff
path: root/csu/libc-tls.c
diff options
context:
space:
mode:
authorWill Newton <will.newton@linaro.org>2014-05-23 15:24:30 +0100
committerWill Newton <will.newton@linaro.org>2014-05-27 10:39:18 +0100
commit36ffe7398af5e5daa5745c64a15226d864378738 (patch)
tree1b05752395cd7877fc714714d0f24e1654ad6009 /csu/libc-tls.c
parent2482ae433a4249495859343ae1fba408300f2c2e (diff)
downloadglibc-36ffe7398af5e5daa5745c64a15226d864378738.tar.gz
glibc-36ffe7398af5e5daa5745c64a15226d864378738.tar.xz
glibc-36ffe7398af5e5daa5745c64a15226d864378738.zip
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.
Diffstat (limited to 'csu/libc-tls.c')
0 files changed, 0 insertions, 0 deletions