about summary refs log tree commit diff
diff options
context:
space:
mode:
authorSamuel Thibault <samuel.thibault@ens-lyon.org>2018-03-25 00:48:01 +0100
committerSamuel Thibault <samuel.thibault@ens-lyon.org>2018-03-25 00:48:01 +0100
commitfa97d2ab5b19de0ca3cd02471d0bbf4f09b5032d (patch)
tree07b74b0acfbde5037724e5b79850a0821bf3c30a
parentb8114edd3c9e789c36789f4ce5ca6deb41ea0a14 (diff)
downloadglibc-fa97d2ab5b19de0ca3cd02471d0bbf4f09b5032d.tar.gz
glibc-fa97d2ab5b19de0ca3cd02471d0bbf4f09b5032d.tar.xz
glibc-fa97d2ab5b19de0ca3cd02471d0bbf4f09b5032d.zip
hurd: Fix accessing errno from rtld
Letting rtld access errno through TLS can not work at early stages since
TLS will not be initialized yet.  When a private errno is not possible,
we thus have no other way than going through __errno_location.

	* include/errno.h [IS_IN(rtld) && !RTLD_PRIVATE_ERRNO]: Do not use the
	TLS declaration of errno.
-rw-r--r--ChangeLog5
-rw-r--r--include/errno.h2
2 files changed, 6 insertions, 1 deletions
diff --git a/ChangeLog b/ChangeLog
index 94175ab4b9..1b7ddba10c 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2018-03-25  Samuel Thibault  <samuel.thibault@ens-lyon.org>
+
+	* include/errno.h [IS_IN(rtld) && !RTLD_PRIVATE_ERRNO]: Do not use the
+	TLS declaration of errno.
+
 2018-03-24  H.J. Lu  <hongjiu.lu@intel.com>
 
 	[BZ #22998]
diff --git a/include/errno.h b/include/errno.h
index 3c3d2288c8..457114b27a 100644
--- a/include/errno.h
+++ b/include/errno.h
@@ -20,7 +20,7 @@
 #  define errno rtld_errno
 extern int rtld_errno attribute_hidden;
 
-# elif IS_IN_LIB
+# elif IS_IN_LIB && !IS_IN (rtld)
 
 #  include <tls.h>