From 3776d592f117c8c5b0d2c37d265cb8ee2ac21695 Mon Sep 17 00:00:00 2001 From: Roland McGrath Date: Mon, 1 Jul 1996 22:16:41 +0000 Subject: Mon Jul 1 12:29:50 1996 Roland McGrath * nss/Makefile (databases): Change host to hosts. * nss/host-lookup.c: Renamed to nss/hosts-lookup.c. --- sysdeps/unix/sysv/linux/init-first.c | 43 ++++++++++++++---------------------- 1 file changed, 16 insertions(+), 27 deletions(-) (limited to 'sysdeps/unix/sysv/linux/init-first.c') diff --git a/sysdeps/unix/sysv/linux/init-first.c b/sysdeps/unix/sysv/linux/init-first.c index 6d974ea..a63200c 100644 --- a/sysdeps/unix/sysv/linux/init-first.c +++ b/sysdeps/unix/sysv/linux/init-first.c @@ -19,23 +19,22 @@ Cambridge, MA 02139, USA. */ #include #include -#include "fpu_control.h" - -/* This code is mostly the same for all machines. This version works at - least for i386 and m68k, and probably any CISCy machine with a normal - stack arrangement. */ +#include +#include "init-first.h" extern void __libc_init (int, char **, char **); extern void __libc_global_ctors (void); +/* The function is called from assembly stubs the compiler can't see. */ +static void init (void *) __attribute__ ((unused)); static void -init (int *data) +init (void *data) { extern int __personality (int); - int argc = *data; - char **argv = (void *) (data + 1); + int argc = *(long *)data; + char **argv = (char **)data + 1; char **envp = &argv[argc + 1]; /* The `personality' system call takes one argument that chooses the @@ -50,33 +49,23 @@ init (int *data) __environ = envp; __libc_init (argc, argv, envp); + +#ifdef PIC + __libc_global_ctors (); +#endif } #ifdef PIC -/* This function is called to initialize the shared C library. - It is called just before the user _start code from i386/elf/start.S, - with the stack set up as that code gets it. */ -/* NOTE! The linker notices the magical name `_init' and sets the DT_INIT - pointer in the dynamic section based solely on that. It is convention - for this function to be in the `.init' section, but the symbol name is - the only thing that really matters!! */ -/*void _init (int argc, ...) __attribute__ ((unused, section (".init")));*/ +SYSDEP_CALL_INIT(_init, init); void -_init (int argc, ...) +__libc_init_first (void) { - init (&argc); - - __libc_global_ctors (); } -#endif +#else + +SYSDEP_CALL_INIT(__libc_init_first, init); -void -__libc_init_first (int argc __attribute__ ((unused)), ...) -{ -#ifndef PIC - init (&argc); #endif -} -- cgit v1.1