diff options
author | Ulrich Drepper <drepper@redhat.com> | 1998-03-08 15:26:29 +0000 |
---|---|---|
committer | Ulrich Drepper <drepper@redhat.com> | 1998-03-08 15:26:29 +0000 |
commit | 3db52d94e2dcd03925664df6a09e9676ad1f2baf (patch) | |
tree | c52e151c8bbe577afba5c1e6a0a084641853ce7f /sysdeps/generic/libc-start.c | |
parent | a78de796b7911443b7af40177ee9c33cf69a82e5 (diff) | |
download | glibc-3db52d94e2dcd03925664df6a09e9676ad1f2baf.tar glibc-3db52d94e2dcd03925664df6a09e9676ad1f2baf.tar.gz glibc-3db52d94e2dcd03925664df6a09e9676ad1f2baf.tar.bz2 glibc-3db52d94e2dcd03925664df6a09e9676ad1f2baf.zip |
Update.
1998-03-08 14:58 Ulrich Drepper <drepper@cygnus.com>
* Makeconfig (nisobjdir): Set to path to nis directory.
(rpath-link): Add nisobjdir.
Patch by Sven Verdoolaege <skimo@kotnet.org>.
* elf/Makefile: Pretty print.
* elf/dl-lookup.c: Include unistd.h.
* elf/dl-runtime.c: Likewise.
* localedata/Makefile (test-srcs): Add tst-rpmatch.
(distribute): Add tst-rpmatch.sh.
(tests): Add tst-rpmatch to dependency list and run tst-rpmatch.sh.
New tests for rpmatch function by
Jochen Hein <jochen.hein@delphi.central.de>.
* localedata/tst-rpmatch.c: New file.
* localedata/tst-rpmatch.sh: New file.
* localedata/locales/de_DE: Correct yesexpr and noexpr.
* localedata/locales/de_AT: Likewise.
* posix/getopt.c: Update contact address.
* posix/getopt1.c: Pretty print.
* sysdeps/generic/libc-start.c: Do most of the initialization now
here instead of in start.S.
* sysdeps/unix/sysv/linux/libc-start.c: Likewise.
* sysdeps/i386/elf/start.S: Remove most of the initialization code.
* sysdeps/unix/sysv/linux/i386/profil-counter.h: No need for
profil_counter to be public.
1998-03-08 13:06 Tim Waugh <tim@cyberelk.demon.co.uk>
* posix/wordexp.c (parse_arith): Now works for negative numbers too.
(parse_param): Coded parameter length expansion (${#var}).
(parse_param): Handling for "=", "+", "-", and the ":" versions added.
(parse_param): Cleaned up (fixed) error handling.
* posix/wordexp-test.c: IFS now includes non-whitespace character
(comma). Added more tests.
Diffstat (limited to 'sysdeps/generic/libc-start.c')
-rw-r--r-- | sysdeps/generic/libc-start.c | 24 |
1 files changed, 22 insertions, 2 deletions
diff --git a/sysdeps/generic/libc-start.c b/sysdeps/generic/libc-start.c index 12419887a1..d6fd3d3581 100644 --- a/sysdeps/generic/libc-start.c +++ b/sysdeps/generic/libc-start.c @@ -16,9 +16,29 @@ write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ +#include <stdlib.h> +#include <unistd.h> + int __libc_start_main (int (*main) (int, char **, char **), int argc, - char **argv, char **envp) + char **argv, void (*init) (void), void (*fini) (void), + void (*rtld_fini) (void)) { - return (*main) (argc, argv, envp); + /* Register the destructor of the dynamic linker if there is any. */ + if (rtld_fini != NULL) + atexit (rtld_fini); + + /* Call the initializer of the libc. */ + __libc_init_first (); + + /* Set the global _environ variable correctly. */ + __environ = &argv[argc + 1]; + + /* Call the initializer of the program. */ + (*init) (); + + /* Register the destructor of the program. */ + atexit (fini); + + exit ((*main) (argc, argv, envp)); } |