[PATCH] stdlib: Do not use GLIBC_PRIVATE ABI for errno in libc_nonshared.a

Florian Weimer fweimer@redhat.com
Fri Sep 6 09:18:22 GMT 2024


Using TLS directly introduces a GLIBC_PRIVATE ABI dependency
into libc_nonshared.a, and thus indirectly into applications.
Adding the !defined LIBC_NONSHARED condition deactivates direct
TLS access, and libc_nonshared.a code switches to using
__errno_location, like application code.

Currently, this has no effect because there is no code in
libc_nonshared.a that accesses errno.

---
 include/errno.h | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/include/errno.h b/include/errno.h
index c361a785c2..f0ccaa74dd 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 && !IS_IN (rtld)
+# elif IS_IN_LIB && !IS_IN (rtld) && !defined LIBC_NONSHARED
 
 #  undef  errno
 #  if IS_IN (libc)

base-commit: 1b171c942ea066c08a1e5aefb977e35da08ed291



More information about the Libc-alpha mailing list