mirror of
https://sourceware.org/git/glibc.git
synced 2024-11-09 14:50:05 +00:00
* csu/elf-init.c (__libc_csu_fini): Enable if LIBC_NONSHARED
isn't defined. * sysdeps/generic/libc-start.c (LIBC_START_MAIN): Call fini if SHARED isn't defined. * elf/Makefile (tests-static): Add tst-array1-static. ($(objpfx)tst-array1-static.out): New target. * elf/tst-array1-static.c: New file.
This commit is contained in:
parent
e38c954b3b
commit
43c59a705b
10
ChangeLog
10
ChangeLog
@ -1,3 +1,13 @@
|
|||||||
|
2005-02-14 H.J. Lu <hongjiu.lu@intel.com>
|
||||||
|
|
||||||
|
* csu/elf-init.c (__libc_csu_fini): Enable if LIBC_NONSHARED
|
||||||
|
isn't defined.
|
||||||
|
* sysdeps/generic/libc-start.c (LIBC_START_MAIN): Call fini
|
||||||
|
if SHARED isn't defined.
|
||||||
|
* elf/Makefile (tests-static): Add tst-array1-static.
|
||||||
|
($(objpfx)tst-array1-static.out): New target.
|
||||||
|
* elf/tst-array1-static.c: New file.
|
||||||
|
|
||||||
2005-02-11 Jakub Jelinek <jakub@redhat.com>
|
2005-02-11 Jakub Jelinek <jakub@redhat.com>
|
||||||
|
|
||||||
* debug/chk_fail.c (__chk_fail): Add a while (1) loop around
|
* debug/chk_fail.c (__chk_fail): Add a while (1) loop around
|
||||||
|
@ -92,7 +92,7 @@ __libc_csu_init (void)
|
|||||||
void
|
void
|
||||||
__libc_csu_fini (void)
|
__libc_csu_fini (void)
|
||||||
{
|
{
|
||||||
#if 0
|
#ifndef LIBC_NONSHARED
|
||||||
#ifdef HAVE_INITFINI_ARRAY
|
#ifdef HAVE_INITFINI_ARRAY
|
||||||
size_t i = __fini_array_end - __fini_array_start;
|
size_t i = __fini_array_end - __fini_array_start;
|
||||||
while (i-- > 0)
|
while (i-- > 0)
|
||||||
|
@ -138,6 +138,9 @@ tests += tst-array1 tst-array2 tst-array3 tst-array4
|
|||||||
endif
|
endif
|
||||||
ifeq (yes,$(build-static))
|
ifeq (yes,$(build-static))
|
||||||
tests-static = tst-tls1-static tst-tls2-static
|
tests-static = tst-tls1-static tst-tls2-static
|
||||||
|
ifeq (yes,$(have-initfini-array))
|
||||||
|
tests-static += tst-array1-static
|
||||||
|
endif
|
||||||
ifeq (yesyesyes,$(build-static)$(build-shared)$(elf))
|
ifeq (yesyesyes,$(build-static)$(build-shared)$(elf))
|
||||||
tests-static += tst-tls9-static
|
tests-static += tst-tls9-static
|
||||||
tst-tls9-static-ENV = \
|
tst-tls9-static-ENV = \
|
||||||
@ -701,6 +704,10 @@ $(objpfx)tst-array1.out: $(objpfx)tst-array1
|
|||||||
$(objpfx)tst-array1 > $@
|
$(objpfx)tst-array1 > $@
|
||||||
cmp $@ tst-array1.exp > /dev/null
|
cmp $@ tst-array1.exp > /dev/null
|
||||||
|
|
||||||
|
$(objpfx)tst-array1-static.out: $(objpfx)tst-array1-static
|
||||||
|
$(objpfx)tst-array1-static > $@
|
||||||
|
cmp $@ tst-array1.exp > /dev/null
|
||||||
|
|
||||||
$(objpfx)tst-array2: $(objpfx)tst-array2dep.so
|
$(objpfx)tst-array2: $(objpfx)tst-array2dep.so
|
||||||
$(objpfx)tst-array2.out: $(objpfx)tst-array2
|
$(objpfx)tst-array2.out: $(objpfx)tst-array2
|
||||||
$(elf-objpfx)$(rtld-installed-name) \
|
$(elf-objpfx)$(rtld-installed-name) \
|
||||||
|
1
elf/tst-array1-static.c
Normal file
1
elf/tst-array1-static.c
Normal file
@ -0,0 +1 @@
|
|||||||
|
#include "tst-array1.c"
|
@ -81,9 +81,9 @@ STATIC int LIBC_START_MAIN (int (*main) (int, char **, char **
|
|||||||
__attribute__ ((noreturn));
|
__attribute__ ((noreturn));
|
||||||
|
|
||||||
|
|
||||||
/* Note: the fini parameter is ignored here. It used to be registered
|
/* Note: the fini parameter is ignored here for shared library. It
|
||||||
with __cxa_atexit. This had the disadvantage that finalizers were
|
is registered with __cxa_atexit. This had the disadvantage that
|
||||||
called in more than one place. */
|
finalizers were called in more than one place. */
|
||||||
STATIC int
|
STATIC int
|
||||||
LIBC_START_MAIN (int (*main) (int, char **, char ** MAIN_AUXVEC_DECL),
|
LIBC_START_MAIN (int (*main) (int, char **, char ** MAIN_AUXVEC_DECL),
|
||||||
int argc, char *__unbounded *__unbounded ubp_av,
|
int argc, char *__unbounded *__unbounded ubp_av,
|
||||||
@ -155,14 +155,16 @@ LIBC_START_MAIN (int (*main) (int, char **, char ** MAIN_AUXVEC_DECL),
|
|||||||
if (__builtin_expect (rtld_fini != NULL, 1))
|
if (__builtin_expect (rtld_fini != NULL, 1))
|
||||||
__cxa_atexit ((void (*) (void *)) rtld_fini, NULL, NULL);
|
__cxa_atexit ((void (*) (void *)) rtld_fini, NULL, NULL);
|
||||||
|
|
||||||
|
#ifndef SHARED
|
||||||
/* Call the initializer of the libc. This is only needed here if we
|
/* Call the initializer of the libc. This is only needed here if we
|
||||||
are compiling for the static library in which case we haven't
|
are compiling for the static library in which case we haven't
|
||||||
run the constructors in `_dl_start_user'. */
|
run the constructors in `_dl_start_user'. */
|
||||||
#ifndef SHARED
|
|
||||||
__libc_init_first (argc, argv, __environ);
|
__libc_init_first (argc, argv, __environ);
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifndef SHARED
|
/* Register the destructor of the program, if any. */
|
||||||
|
if (fini)
|
||||||
|
__cxa_atexit ((void (*) (void *)) fini, NULL, NULL);
|
||||||
|
|
||||||
/* Some security at this point. Prevent starting a SUID binary where
|
/* Some security at this point. Prevent starting a SUID binary where
|
||||||
the standard file descriptors are not opened. We have to do this
|
the standard file descriptors are not opened. We have to do this
|
||||||
only for statically linked applications since otherwise the dynamic
|
only for statically linked applications since otherwise the dynamic
|
||||||
|
Loading…
Reference in New Issue
Block a user