1
0
mirror of https://sourceware.org/git/glibc.git synced 2025-08-07 06:43:00 +03:00

* sysdeps/unix/sysv/linux/init-first.c (init): Remove [! SHARED]

conditional from __libc_multiple_libcs access.  Remove kludge for weak
	symbol access with old compilers we no longer support.
	* sysdeps/unix/sysv/aix/init-first.c (init): Likewise.
	* sysdeps/generic/libc-start.c (__libc_start_main): Likewise.

2002-10-24  Roland McGrath  <roland@redhat.com>

	* sysdeps/generic/ldsodefs.h (struct rtld_global): New member
	`_dl_tls_static_used'.
	(TLS_STATIC_MIN): New macro.
	* sysdeps/generic/libc-tls.c (_dl_tls_static_used): New variable.
	(__libc_setup_tls): Initialize it.
	* sysdeps/generic/dl-tls.c (_dl_determine_tlsoffset): Likewise.
	* elf/dl-reloc.c [USE_TLS] (allocate_static_tls): New function.
	(CHECK_STATIC_TLS): Use it.
	* elf/dl-close.c (_dl_close): Adjust _dl_tls_static_used when the
	closed objects occupied a trailing contiguous chunk of static TLS area.

2002-10-25  Roland McGrath  <roland@redhat.com>
This commit is contained in:
Roland McGrath
2002-10-25 19:41:31 +00:00
parent c61ce8de62
commit 5580f1544d
4 changed files with 24 additions and 19 deletions

View File

@@ -1,3 +1,24 @@
2002-10-25 Roland McGrath <roland@redhat.com>
* sysdeps/unix/sysv/linux/init-first.c (init): Remove [! SHARED]
conditional from __libc_multiple_libcs access. Remove kludge for weak
symbol access with old compilers we no longer support.
* sysdeps/unix/sysv/aix/init-first.c (init): Likewise.
* sysdeps/generic/libc-start.c (__libc_start_main): Likewise.
2002-10-24 Roland McGrath <roland@redhat.com>
* sysdeps/generic/ldsodefs.h (struct rtld_global): New member
`_dl_tls_static_used'.
(TLS_STATIC_MIN): New macro.
* sysdeps/generic/libc-tls.c (_dl_tls_static_used): New variable.
(__libc_setup_tls): Initialize it.
* sysdeps/generic/dl-tls.c (_dl_determine_tlsoffset): Likewise.
* elf/dl-reloc.c [USE_TLS] (allocate_static_tls): New function.
(CHECK_STATIC_TLS): Use it.
* elf/dl-close.c (_dl_close): Adjust _dl_tls_static_used when the
closed objects occupied a trailing contiguous chunk of static TLS area.
2002-10-25 Roland McGrath <roland@redhat.com> 2002-10-25 Roland McGrath <roland@redhat.com>
* sysdeps/posix/sigvec.c [SA_RESETHAND]: Disable wrapper hacks and * sysdeps/posix/sigvec.c [SA_RESETHAND]: Disable wrapper hacks and

View File

@@ -64,13 +64,7 @@ BP_SYM (__libc_start_main) (int (*main) (int, char **, char **),
/* Result of the 'main' function. */ /* Result of the 'main' function. */
int result; int result;
#ifndef SHARED
# ifdef HAVE_AUX_VECTOR
void *__unbounded *__unbounded auxvec;
# endif
__libc_multiple_libcs = &_dl_starting_up && !_dl_starting_up; __libc_multiple_libcs = &_dl_starting_up && !_dl_starting_up;
#endif
INIT_ARGV_and_ENVIRON; INIT_ARGV_and_ENVIRON;
@@ -79,6 +73,7 @@ BP_SYM (__libc_start_main) (int (*main) (int, char **, char **),
#ifndef SHARED #ifndef SHARED
# ifdef HAVE_AUX_VECTOR # ifdef HAVE_AUX_VECTOR
void *__unbounded *__unbounded auxvec;
/* First process the auxiliary vector since we need to find the /* First process the auxiliary vector since we need to find the
program header to locate an eventually present PT_TLS entry. */ program header to locate an eventually present PT_TLS entry. */
for (auxvec = (void *__unbounded *__unbounded) ubp_ev; for (auxvec = (void *__unbounded *__unbounded) ubp_ev;

View File

@@ -57,12 +57,8 @@ init (int argc, char **argv, char **envp)
If the address would be taken inside the expression the optimizer If the address would be taken inside the expression the optimizer
would try to be too smart and throws it away. Grrr. */ would try to be too smart and throws it away. Grrr. */
#ifndef SHARED
/* XXX disable dl for now /* XXX disable dl for now
int *dummy_addr = &_dl_starting_up; __libc_multiple_libcs = &_dl_starting_up && !_dl_starting_up; */
__libc_multiple_libcs = dummy_addr && !_dl_starting_up; */
#endif
/* Save the command-line arguments. */ /* Save the command-line arguments. */
__libc_argc = argc; __libc_argc = argc;

View File

@@ -52,14 +52,7 @@ init (int argc, char **argv, char **envp)
extern void __getopt_clean_environment (char **); extern void __getopt_clean_environment (char **);
#endif #endif
#ifndef SHARED __libc_multiple_libcs = &_dl_starting_up && !_dl_starting_up;
/* The next variable is only here to work around a bug in gcc <= 2.7.2.2.
If the address would be taken inside the expression the optimizer
would try to be too smart and throws it away. Grrr. */
int *dummy_addr = &_dl_starting_up;
__libc_multiple_libcs = dummy_addr && !_dl_starting_up;
#endif
/* Make sure we don't initialize twice. */ /* Make sure we don't initialize twice. */
if (!__libc_multiple_libcs) if (!__libc_multiple_libcs)