+2002-02-24 Ulrich Drepper <drepper@redhat.com>
+
+ * elf/dl-support.c (_dl_non_dynamic_init): Renamed from
+ non_dynamic_init and exported now.
+ * sysdeps/unix/sysv/linux/ldsodefs.h: Declare _dl_non_dynamic_init.
+ * sysdeps/unix/sysv/linux/init-first.c: Call _dl_non_dynamic_init for
+ !SHARED.
+ * sysdeps/mach/hurd/i386/init-first.c: Likewise.
+ * sysdeps/mach/hurd/powerpc/init-first.c: Likewise.
+ * sysdeps/mach/hurd/mips/init-first.c: Likewise.
+
2002-02-23 Ulrich Drepper <drepper@redhat.com>
* elf/dl-close.c (free_slotinfo): Check for end of list and return
}
#endif
-static void non_dynamic_init (void) __attribute__ ((unused));
-static void
-non_dynamic_init (void)
+void
+internal_function
+_dl_non_dynamic_init (void)
{
if (HP_TIMING_AVAIL)
HP_TIMING_NOW (_dl_cpuclock_offset);
if (_dl_platform != NULL)
_dl_platformlen = strlen (_dl_platform);
}
-text_set_element (__libc_subinit, non_dynamic_init);
+
const struct r_strlenpair *
internal_function
#ifdef USE_NONOPTION_FLAGS
extern void __getopt_clean_environment (char **);
#endif
+#ifndef SHARED
+extern void _dl_non_dynamic_init (void) internal_function;
+#endif
extern void __libc_global_ctors (void);
unsigned int __hurd_threadvar_max;
__libc_argv = argv;
__environ = envp;
+#ifndef SHARED
+ _dl_non_dynamic_init ();
+#endif
__init_misc (argc, argv, envp);
__libc_init (argc, argv, envp);
#ifdef USE_NONOPTION_FLAGS
extern void __getopt_clean_environment (char **);
#endif
+#ifndef SHARED
+extern void _dl_non_dynamic_init (void) internal_function;
+#endif
extern void __libc_global_ctors (void);
unsigned int __hurd_threadvar_max;
d->portarray, d->portarraysize,
d->intarray, d->intarraysize);
+#ifndef SHARED
+ _dl_non_dynamic_init ();
+#endif
__init_misc (argc, argv, __environ);
__libc_init (argc, argv, __environ);
#ifdef USE_NONOPTION_FLAGS
extern void __getopt_clean_environment (char **);
#endif
+#ifndef SHARED
+extern void _dl_non_dynamic_init (void) internal_function;
+#endif
extern void __libc_global_ctors (void);
unsigned int __hurd_threadvar_max;
__libc_argv = argv;
__environ = envp;
+#ifndef SHARED
+ _dl_non_dynamic_init ();
+#endif
__init_misc (argc, argv, envp);
__libc_init (argc, argv, envp);
#ifndef SHARED
__libc_init_secure ();
+
+ /* First the initialization which normally would be done by the
+ dynamic linker. */
+ _dl_non_dynamic_init ();
#endif
__init_misc (argc, argv, envp);
/* Run-time dynamic linker data structures for loaded ELF shared objects.
- Copyright (C) 2001 Free Software Foundation, Inc.
+ Copyright (C) 2001, 2002 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
/* Used by static binaries to check the auxiliary vector. */
extern void _dl_aux_init (ElfW(auxv_t) *av) internal_function;
+/* Initialization which is normally done by the dynamic linker. */
+extern void _dl_non_dynamic_init (void) internal_function;
+
/* We can assume that the kernel always provides the AT_UID, AT_EUID,
AT_GID, and AT_EGID values in the auxiliary vector. */
#define HAVE_AUX_XID