aboutsummaryrefslogtreecommitdiff
path: root/resolv
diff options
context:
space:
mode:
authorJoseph Myers <joseph@codesourcery.com>2015-06-12 10:10:18 +0000
committerJoseph Myers <joseph@codesourcery.com>2015-06-12 10:10:18 +0000
commit9acacaa02f3b75fddc07a56f3d848df45281a5de (patch)
treef1ed18d61032595c7f9a643c1e8330faaf486a7a /resolv
parent4b9c2b707b1383b4e3b3c50e445afd0af8922788 (diff)
downloadglibc-9acacaa02f3b75fddc07a56f3d848df45281a5de.zip
glibc-9acacaa02f3b75fddc07a56f3d848df45281a5de.tar.gz
glibc-9acacaa02f3b75fddc07a56f3d848df45281a5de.tar.bz2
Fix h_errno namespace (bug 18520).
The 2008 edition of POSIX removed h_errno, but some functions still bring in references to the h_errno external symbol. As this symbol is not a part of the public ABI (only __h_errno_location is), this patch fixes this by renaming the GLIBC_PRIVATE TLS symbol to __h_errno. Tested for x86_64 and x86 (testsuite, and comparison of installed shared libraries). Disassembly of all shared libraries using h_errno changes because of the renaming (and changes to associated TLS / GOT offsets in some cases); disassembly of libpthread on x86_64 changes more substantially because the enlargement of .dynsym affects subsequent addresses. [BZ #18520] * inet/herrno.c (h_errno): Rename to __h_errno. (__libc_h_errno): Define as alias of __h_errno not h_errno. * include/netdb.h [IS_IN_LIB && !IS_IN (libc)] (h_errno): Define to __h_errno instead of h_errno. * nptl/herrno.c (h_errno): Rename to __h_errno. (__h_errno_location): Refer to __h_errno not h_errno. * resolv/Versions (h_errno): Rename to __h_errno. * conform/Makefile (test-xfail-XOPEN2K8/grp.h/linknamespace): Remove variable. (test-xfail-XOPEN2K8/pwd.h/linknamespace): Likewise.
Diffstat (limited to 'resolv')
-rw-r--r--resolv/Versions2
1 files changed, 1 insertions, 1 deletions
diff --git a/resolv/Versions b/resolv/Versions
index 04072ac..e561bce 100644
--- a/resolv/Versions
+++ b/resolv/Versions
@@ -24,7 +24,7 @@ libc {
GLIBC_PRIVATE {
__gai_sigqueue;
- h_errno; __resp;
+ __h_errno; __resp;
__res_maybe_init; __res_iclose;
}