mirror of
https://sourceware.org/git/glibc.git
synced 2025-07-30 22:43:12 +03:00
* sysdeps/generic/errno.c [! USE___THREAD]
[HAVE_ELF && SHARED && DO_VERSIONING] (errno, _errno): Declare these with compat_symbol so they are not link-time visible. [! USE___THREAD] (__libc_errno): New alias for errno. * csu/Versions [!(USE_TLS && HAVE___THREAD)] (libc: GLIBC_PRIVATE): Add __libc_errno here. * inet/herrno.c [USE___THREAD]: Use this conditional in place of [USE_TLS && HAVE___THREAD]. [! USE___THREAD] [HAVE_ELF && SHARED && DO_VERSIONING] (h_errno, _h_errno): Declare these with compat_symbol so they are not link-time visible. [! USE___THREAD] (__libc_h_errno): New alias for h_errno. * resolv/res_libc.c [! USE___THREAD] [HAVE_ELF && SHARED && DO_VERSIONING] (_res): Likewise. (_res): Use __attribute__ ((section (".bss"))) so we can have an alias. (__libc_res): Define as alias for _res. * resolv/Versions [!(USE_TLS && HAVE___THREAD)] (libc: GLIBC_PRIVATE): Add __libc_h_errno and __libc_res here. 2002-11-14 Jakub Jelinek <jakub@redhat.com> * csu/Versions (errno): Move STT_TLS symbol to GLIBC_PRIVATE for now. * resolv/Versions (h_errno, _res): Likewise. 2002-11-14 Roland McGrath <roland@redhat.com>
This commit is contained in:
26
ChangeLog
26
ChangeLog
@ -1,3 +1,29 @@
|
|||||||
|
2002-11-14 Roland McGrath <roland@redhat.com>
|
||||||
|
|
||||||
|
* sysdeps/generic/errno.c [! USE___THREAD]
|
||||||
|
[HAVE_ELF && SHARED && DO_VERSIONING] (errno, _errno): Declare these
|
||||||
|
with compat_symbol so they are not link-time visible.
|
||||||
|
[! USE___THREAD] (__libc_errno): New alias for errno.
|
||||||
|
* csu/Versions [!(USE_TLS && HAVE___THREAD)] (libc: GLIBC_PRIVATE):
|
||||||
|
Add __libc_errno here.
|
||||||
|
* inet/herrno.c [USE___THREAD]: Use this conditional
|
||||||
|
in place of [USE_TLS && HAVE___THREAD].
|
||||||
|
[! USE___THREAD] [HAVE_ELF && SHARED && DO_VERSIONING]
|
||||||
|
(h_errno, _h_errno): Declare these with compat_symbol so they are not
|
||||||
|
link-time visible.
|
||||||
|
[! USE___THREAD] (__libc_h_errno): New alias for h_errno.
|
||||||
|
* resolv/res_libc.c [! USE___THREAD]
|
||||||
|
[HAVE_ELF && SHARED && DO_VERSIONING] (_res): Likewise.
|
||||||
|
(_res): Use __attribute__ ((section (".bss"))) so we can have an alias.
|
||||||
|
(__libc_res): Define as alias for _res.
|
||||||
|
* resolv/Versions [!(USE_TLS && HAVE___THREAD)] (libc: GLIBC_PRIVATE):
|
||||||
|
Add __libc_h_errno and __libc_res here.
|
||||||
|
|
||||||
|
2002-11-14 Jakub Jelinek <jakub@redhat.com>
|
||||||
|
|
||||||
|
* csu/Versions (errno): Move STT_TLS symbol to GLIBC_PRIVATE for now.
|
||||||
|
* resolv/Versions (h_errno, _res): Likewise.
|
||||||
|
|
||||||
2002-11-14 Roland McGrath <roland@redhat.com>
|
2002-11-14 Roland McGrath <roland@redhat.com>
|
||||||
|
|
||||||
* Makerules (%.dynsym): Remove $(objpfx) from target and dep.
|
* Makerules (%.dynsym): Remove $(objpfx) from target and dep.
|
||||||
|
@ -17,10 +17,14 @@ libc {
|
|||||||
# New special glibc functions.
|
# New special glibc functions.
|
||||||
gnu_get_libc_release; gnu_get_libc_version;
|
gnu_get_libc_release; gnu_get_libc_version;
|
||||||
}
|
}
|
||||||
GLIBC_2.3 {
|
GLIBC_PRIVATE {
|
||||||
%if USE_TLS && HAVE___THREAD
|
%if USE_TLS && HAVE___THREAD
|
||||||
# This version is for the TLS symbol, GLIBC_2.0 is the old object symbol.
|
# This version is for the TLS symbol, GLIBC_2.0 is the old object symbol.
|
||||||
errno;
|
errno;
|
||||||
|
%else
|
||||||
|
# This internal alias is solely to give libpthread access
|
||||||
|
# to the variable that is not directly user-visible at link time.
|
||||||
|
__libc_errno;
|
||||||
%endif
|
%endif
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -25,7 +25,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. */
|
||||||
|
|
||||||
#if USE_TLS && HAVE___THREAD
|
#if USE___THREAD
|
||||||
__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;
|
||||||
@ -33,6 +33,17 @@ extern __thread int __libc_h_errno __attribute__ ((alias ("h_errno")))
|
|||||||
#else
|
#else
|
||||||
int h_errno = 0;
|
int h_errno = 0;
|
||||||
weak_alias (h_errno, _h_errno)
|
weak_alias (h_errno, _h_errno)
|
||||||
|
|
||||||
|
/* This alias is needed by libpthread. */
|
||||||
|
strong_alias (h_errno, __libc_h_errno)
|
||||||
|
|
||||||
|
/* We declare these with compat_symbol so that they are not
|
||||||
|
visible at link time. Programs must use the accessor functions. */
|
||||||
|
# if defined HAVE_ELF && defined SHARED && defined DO_VERSIONING
|
||||||
|
# include <shlib-compat.h>
|
||||||
|
compat_symbol (libc, h_errno, h_errno, GLIBC_2_0);
|
||||||
|
compat_symbol (libc, _h_errno, _h_errno, GLIBC_2_0);
|
||||||
|
# endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* When threaded, h_errno may be a per-thread variable. */
|
/* When threaded, h_errno may be a per-thread variable. */
|
||||||
|
@ -29,15 +29,18 @@ libc {
|
|||||||
# r*
|
# r*
|
||||||
__res_state; __res_init; __res_nclose; __res_ninit; _res_hconf;
|
__res_state; __res_init; __res_nclose; __res_ninit; _res_hconf;
|
||||||
}
|
}
|
||||||
GLIBC_2.3 {
|
GLIBC_PRIVATE {
|
||||||
|
__gai_sigqueue;
|
||||||
|
|
||||||
%if USE_TLS && HAVE___THREAD
|
%if USE_TLS && HAVE___THREAD
|
||||||
# This version is for the TLS symbol, GLIBC_2.0 is the old object symbol.
|
# This version is for the TLS symbol, GLIBC_2.0 is the old object symbol.
|
||||||
h_errno; _res;
|
h_errno; _res;
|
||||||
|
%else
|
||||||
|
# These internal aliases are solely to give libpthread access
|
||||||
|
# to the variables that are not directly user-visible.
|
||||||
|
__libc_h_errno; __libc_res;
|
||||||
%endif
|
%endif
|
||||||
}
|
}
|
||||||
GLIBC_PRIVATE {
|
|
||||||
__gai_sigqueue;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
libresolv {
|
libresolv {
|
||||||
|
@ -31,8 +31,22 @@ extern __thread struct __res_state __libc_res __attribute__ ((alias ("_res")))
|
|||||||
attribute_hidden;
|
attribute_hidden;
|
||||||
# define _res __libc_res
|
# define _res __libc_res
|
||||||
#else
|
#else
|
||||||
/* The resolver state for use by single-threaded programs. */
|
/* The resolver state for use by single-threaded programs.
|
||||||
struct __res_state _res;
|
|
||||||
|
This differs from a plain uninitialized definition in that it doesn't
|
||||||
|
create a common definition, but a plain symbol that resides in .bss,
|
||||||
|
which can have an alias. */
|
||||||
|
struct __res_state _res __attribute__ ((section (".bss")));
|
||||||
|
|
||||||
|
/* This alias is needed by libpthread. */
|
||||||
|
strong_alias (_res, __libc_res)
|
||||||
|
|
||||||
|
/* We declare this with compat_symbol so that it's not
|
||||||
|
visible at link time. Programs must use the accessor functions. */
|
||||||
|
# if defined HAVE_ELF && defined SHARED && defined DO_VERSIONING
|
||||||
|
# include <shlib-compat.h>
|
||||||
|
compat_symbol (libc, _res, _res, GLIBC_2_0);
|
||||||
|
# endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* This function is used to access the resolver state in
|
/* This function is used to access the resolver state in
|
||||||
|
@ -31,4 +31,15 @@ extern __thread int __libc_errno __attribute__ ((alias ("errno")))
|
|||||||
which can have an alias. */
|
which can have an alias. */
|
||||||
int errno __attribute__ ((section (".bss")));
|
int errno __attribute__ ((section (".bss")));
|
||||||
strong_alias (errno, _errno)
|
strong_alias (errno, _errno)
|
||||||
|
|
||||||
|
/* This alias is needed by libpthread. */
|
||||||
|
strong_alias (errno, __libc_errno)
|
||||||
|
|
||||||
|
/* We declare these with compat_symbol so that they are not
|
||||||
|
visible at link time. Programs must use the accessor functions. */
|
||||||
|
# if defined HAVE_ELF && defined SHARED && defined DO_VERSIONING
|
||||||
|
# include <shlib-compat.h>
|
||||||
|
compat_symbol (libc, errno, errno, GLIBC_2_0);
|
||||||
|
compat_symbol (libc, _errno, _errno, GLIBC_2_0);
|
||||||
|
# endif
|
||||||
#endif
|
#endif
|
||||||
|
Reference in New Issue
Block a user