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>
|
||||
|
||||
* 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,
|
||||
18211, 18217, 18220, 18221, 18234, 18244, 18247, 18287, 18319, 18324,
|
||||
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
|
||||
_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/semaphore.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/pwd.h/linknamespace = yes
|
||||
test-xfail-XOPEN2K8/syslog.h/linknamespace = yes
|
||||
|
@ -9,7 +9,7 @@
|
||||
# if IS_IN (libc)
|
||||
# define h_errno __libc_h_errno
|
||||
# else
|
||||
# define h_errno h_errno /* For #ifndef h_errno tests. */
|
||||
# define h_errno __h_errno
|
||||
# endif
|
||||
extern __thread int h_errno attribute_tls_model_ie;
|
||||
# endif /* IS_IN_LIB */
|
||||
|
@ -24,7 +24,7 @@
|
||||
/* We need to have the error status variable of the resolver
|
||||
accessible in the libc. */
|
||||
|
||||
__thread int h_errno;
|
||||
extern __thread int __libc_h_errno __attribute__ ((alias ("h_errno")))
|
||||
__thread int __h_errno;
|
||||
extern __thread int __libc_h_errno __attribute__ ((alias ("__h_errno")))
|
||||
attribute_hidden;
|
||||
#define h_errno __libc_h_errno
|
||||
|
@ -23,12 +23,12 @@
|
||||
|
||||
/* We need to have the error status variable of the resolver
|
||||
accessible in the libc. */
|
||||
extern __thread int h_errno;
|
||||
extern __thread int __h_errno;
|
||||
|
||||
|
||||
/* When threaded, h_errno may be a per-thread variable. */
|
||||
int *
|
||||
__h_errno_location (void)
|
||||
{
|
||||
return &h_errno;
|
||||
return &__h_errno;
|
||||
}
|
||||
|
@ -24,7 +24,7 @@ libc {
|
||||
GLIBC_PRIVATE {
|
||||
__gai_sigqueue;
|
||||
|
||||
h_errno; __resp;
|
||||
__h_errno; __resp;
|
||||
|
||||
__res_maybe_init; __res_iclose;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user