mirror of git://sourceware.org/git/glibc.git
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.
This commit is contained in:
parent
4b9c2b707b
commit
9acacaa02f
14
ChangeLog
14
ChangeLog
|
@ -1,3 +1,17 @@
|
||||||
|
2015-06-12 Joseph Myers <joseph@codesourcery.com>
|
||||||
|
|
||||||
|
[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.
|
||||||
|
|
||||||
2015-06-11 Andrew Senkevich <andrew.senkevich@intel.com>
|
2015-06-11 Andrew Senkevich <andrew.senkevich@intel.com>
|
||||||
|
|
||||||
* configure.ac: More strict check for AVX512 assembler support.
|
* configure.ac: More strict check for AVX512 assembler support.
|
||||||
|
|
3
NEWS
3
NEWS
|
@ -20,7 +20,8 @@ Version 2.22
|
||||||
18111, 18116, 18125, 18128, 18138, 18185, 18196, 18197, 18206, 18210,
|
18111, 18116, 18125, 18128, 18138, 18185, 18196, 18197, 18206, 18210,
|
||||||
18211, 18217, 18220, 18221, 18234, 18244, 18247, 18287, 18319, 18324,
|
18211, 18217, 18220, 18221, 18234, 18244, 18247, 18287, 18319, 18324,
|
||||||
18333, 18346, 18397, 18409, 18410, 18412, 18418, 18422, 18434, 18444,
|
18333, 18346, 18397, 18409, 18410, 18412, 18418, 18422, 18434, 18444,
|
||||||
18468, 18469, 18470, 18479, 18483, 18495, 18496, 18497, 18498, 18507.
|
18468, 18469, 18470, 18479, 18483, 18495, 18496, 18497, 18498, 18507,
|
||||||
|
18520.
|
||||||
|
|
||||||
* Cache information can be queried via sysconf() function on s390 e.g. with
|
* Cache information can be queried via sysconf() function on s390 e.g. with
|
||||||
_SC_LEVEL1_ICACHE_SIZE as argument.
|
_SC_LEVEL1_ICACHE_SIZE as argument.
|
||||||
|
|
|
@ -373,7 +373,5 @@ test-xfail-POSIX2008/grp.h/linknamespace = yes
|
||||||
test-xfail-POSIX2008/netdb.h/linknamespace = yes
|
test-xfail-POSIX2008/netdb.h/linknamespace = yes
|
||||||
test-xfail-POSIX2008/semaphore.h/linknamespace = yes
|
test-xfail-POSIX2008/semaphore.h/linknamespace = yes
|
||||||
test-xfail-XOPEN2K8/fmtmsg.h/linknamespace = yes
|
test-xfail-XOPEN2K8/fmtmsg.h/linknamespace = yes
|
||||||
test-xfail-XOPEN2K8/grp.h/linknamespace = yes
|
|
||||||
test-xfail-XOPEN2K8/netdb.h/linknamespace = yes
|
test-xfail-XOPEN2K8/netdb.h/linknamespace = yes
|
||||||
test-xfail-XOPEN2K8/pwd.h/linknamespace = yes
|
|
||||||
test-xfail-XOPEN2K8/syslog.h/linknamespace = yes
|
test-xfail-XOPEN2K8/syslog.h/linknamespace = yes
|
||||||
|
|
|
@ -9,7 +9,7 @@
|
||||||
# if IS_IN (libc)
|
# if IS_IN (libc)
|
||||||
# define h_errno __libc_h_errno
|
# define h_errno __libc_h_errno
|
||||||
# else
|
# else
|
||||||
# define h_errno h_errno /* For #ifndef h_errno tests. */
|
# define h_errno __h_errno
|
||||||
# endif
|
# endif
|
||||||
extern __thread int h_errno attribute_tls_model_ie;
|
extern __thread int h_errno attribute_tls_model_ie;
|
||||||
# endif /* IS_IN_LIB */
|
# endif /* IS_IN_LIB */
|
||||||
|
|
|
@ -24,7 +24,7 @@
|
||||||
/* We need to have the error status variable of the resolver
|
/* We need to have the error status variable of the resolver
|
||||||
accessible in the libc. */
|
accessible in the libc. */
|
||||||
|
|
||||||
__thread int h_errno;
|
__thread int __h_errno;
|
||||||
extern __thread int __libc_h_errno __attribute__ ((alias ("h_errno")))
|
extern __thread int __libc_h_errno __attribute__ ((alias ("__h_errno")))
|
||||||
attribute_hidden;
|
attribute_hidden;
|
||||||
#define h_errno __libc_h_errno
|
#define h_errno __libc_h_errno
|
||||||
|
|
|
@ -23,12 +23,12 @@
|
||||||
|
|
||||||
/* We need to have the error status variable of the resolver
|
/* We need to have the error status variable of the resolver
|
||||||
accessible in the libc. */
|
accessible in the libc. */
|
||||||
extern __thread int h_errno;
|
extern __thread int __h_errno;
|
||||||
|
|
||||||
|
|
||||||
/* When threaded, h_errno may be a per-thread variable. */
|
/* When threaded, h_errno may be a per-thread variable. */
|
||||||
int *
|
int *
|
||||||
__h_errno_location (void)
|
__h_errno_location (void)
|
||||||
{
|
{
|
||||||
return &h_errno;
|
return &__h_errno;
|
||||||
}
|
}
|
||||||
|
|
|
@ -24,7 +24,7 @@ libc {
|
||||||
GLIBC_PRIVATE {
|
GLIBC_PRIVATE {
|
||||||
__gai_sigqueue;
|
__gai_sigqueue;
|
||||||
|
|
||||||
h_errno; __resp;
|
__h_errno; __resp;
|
||||||
|
|
||||||
__res_maybe_init; __res_iclose;
|
__res_maybe_init; __res_iclose;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue