Ulrich Drepper dacc8ffa42 Update.
2000-03-30  Ulrich Drepper  <drepper@redhat.com>

	Implement dynamic determination of constructor/destructor order in
	the dynamic linker.
	* elf/Versions [ld.so] (GLIBC_2.0): Remove _dl_init_next.
	(GLIBC_2.2): Add _dl_init.
	* elf/dl-close.c: Also call all destructors in FINI_ARRAY.
	r_duplist is not anymore allocated separately.  l_initfini is and
	therefore free it if necessary.
	* elf/dl-deps.c: If a searchlist has to be allocated, put all in one
	malloc block.  Otherwise allocate l_initfini list only.
	Put dependencies for the object in l_initfini list.
	Sort dependencies for the object to be loaded topologically.
	* elf/dl-fini.c: Before running the destructors sort the topologically.
	* elf/dl-init.c (_dl_init): Renamed from _dl_init_next.  Rewrite to
	call constructors instead of iterating over the pointers.  Get list of
	objects for which to run constructors from l_initfini element. Accept
	argc, argv, and env as parameters and pass them to the constructors.
	* elf/ld-load.c (_dl_map_object_from_fd): Initialize l_ldnum member
	with size of dynamic section.
	* elf/dl-open.c (dl_open_worker): Only call _dl_init instead of
	_dl_init_next and calling constructors ourself.
	* elf/dl-preinit.c (_dl_preinit): Renamed from _dl_preinit_next.
	Take argc, argv, and env as parameters and pass them to the
	constructors.  Rewrite to call all constructors and not iterate over
	the pointers.
	* elf/dynamic-link.h: Don't relocate DT_FINI_ARRAY entry.  Don't
	precompute l_initcount and l_preinitcount.
	* elf/link.h (struct link_map): Add l_ldnum member.
	Make l_phdr_allocated part of the bitfield.  Remove l_runcount,
	l_initcount, and l_preinitcount.  Add l_initfini.
	* sysdeps/generic/ldsodefs.h: Replace _dl_init_next prototype with
	one for _dl_init.
	* sysdeps/i386/dl-machine (RTLD_START): Rewrite to match new init
	function interface.
	* sysdeps/unix/sysv/linux/init-first.h: Removed.
	* sysdeps/unix/sysv/linux/Dist: Delete file here as well.
	* sysdeps/unix/sysv/linux/init-first.c [PIC]: Don't use
	SYSDEP_CALL_INIT.  Make _init a strong alias of init.  The calling
	conventions now match.

	* sysdeps/generic/libc-start.c: Calling __libc_init_first has no
	effect for shared objects.  Don't emit message and call only for
	static library.
2000-03-30 16:30:49 +00:00
..
2000-03-26 20:35:45 +00:00
2000-03-26 18:48:26 +00:00
2000-02-28 21:16:38 +00:00
2000-03-23 20:31:46 +00:00
2000-02-11 19:44:58 +00:00
2000-03-16 07:08:42 +00:00
1998-04-01 09:15:07 +00:00
1998-11-02 21:48:45 +00:00
1999-06-16 15:11:40 +00:00
1998-10-28 17:09:17 +00:00
1999-06-08 21:20:07 +00:00
1998-12-28 17:01:32 +00:00
1999-08-28 22:34:29 +00:00
1999-05-02 21:09:34 +00:00
1999-05-03 08:46:13 +00:00
2000-03-15 07:50:48 +00:00
2000-03-21 21:07:30 +00:00
2000-01-23 08:54:19 +00:00
1999-06-16 22:55:47 +00:00
1997-01-22 05:26:05 +00:00
1998-07-16 11:44:36 +00:00
1998-12-10 19:09:07 +00:00
2000-01-24 12:09:14 +00:00
1998-07-16 11:44:36 +00:00
1999-02-22 16:10:00 +00:00
1998-11-18 14:46:49 +00:00
2000-03-21 20:18:34 +00:00
2000-03-21 05:41:11 +00:00
1998-01-21 17:04:36 +00:00
2000-03-30 16:30:49 +00:00
2000-03-23 20:31:46 +00:00
1997-07-26 02:33:30 +00:00
2000-03-22 08:01:35 +00:00
1998-02-12 18:22:41 +00:00
2000-02-17 00:21:53 +00:00
1999-10-29 17:38:14 +00:00
1999-07-29 23:46:10 +00:00
2000-02-28 05:08:01 +00:00
2000-01-18 10:53:15 +00:00
1999-05-11 13:00:20 +00:00
2000-01-17 05:24:52 +00:00
1999-12-27 07:55:47 +00:00
1998-10-21 15:29:52 +00:00
1999-08-20 23:44:23 +00:00
1997-12-22 20:53:38 +00:00
1999-04-27 13:06:39 +00:00
1999-04-27 13:06:39 +00:00
1999-08-19 20:57:48 +00:00
1999-06-30 17:41:35 +00:00
1998-07-21 10:36:59 +00:00
1997-02-25 05:18:05 +00:00
2000-02-28 05:08:01 +00:00
1999-11-18 16:42:11 +00:00
1998-07-16 11:44:36 +00:00
1997-02-25 05:18:05 +00:00
1999-07-31 06:11:24 +00:00
1998-08-21 17:22:56 +00:00
1999-11-18 16:42:11 +00:00
1999-10-29 21:40:21 +00:00
1999-10-30 16:13:07 +00:00
2000-03-30 16:30:49 +00:00
2000-02-28 05:08:01 +00:00
2000-01-24 12:38:46 +00:00
1999-10-19 03:14:36 +00:00
1999-02-11 12:11:01 +00:00
1997-11-26 04:23:08 +00:00
1998-08-24 16:46:16 +00:00
1998-04-01 07:11:57 +00:00
1999-11-18 16:42:11 +00:00
1998-07-16 11:44:36 +00:00
2000-01-02 18:58:12 +00:00
1997-10-12 04:05:44 +00:00
1999-12-27 07:55:47 +00:00
1998-10-21 15:29:52 +00:00
1999-07-09 15:17:23 +00:00
2000-01-24 12:38:46 +00:00
2000-01-24 12:38:46 +00:00
2000-01-24 12:38:46 +00:00
2000-01-24 12:38:46 +00:00
1999-01-07 11:57:41 +00:00
1999-10-29 17:38:14 +00:00
1999-06-08 21:20:07 +00:00
1999-05-26 23:37:38 +00:00
2000-03-16 07:08:42 +00:00
1999-12-21 16:33:57 +00:00
1998-10-21 15:29:52 +00:00
1999-08-25 17:57:34 +00:00
2000-03-16 07:08:42 +00:00
1999-12-19 05:29:07 +00:00
1999-04-27 13:06:39 +00:00
1999-04-27 13:06:39 +00:00
1998-10-21 15:29:52 +00:00
1999-02-02 09:26:53 +00:00
1998-01-21 17:04:36 +00:00
1998-07-16 11:44:36 +00:00
1998-08-08 20:02:34 +00:00
1997-12-04 00:12:34 +00:00
1997-12-22 20:53:38 +00:00
1997-12-05 00:40:29 +00:00
1997-12-05 00:40:29 +00:00
1997-12-04 00:12:34 +00:00
1998-04-20 18:41:05 +00:00
1998-04-20 18:41:05 +00:00
1997-10-26 20:13:00 +00:00
1997-10-26 20:13:00 +00:00
2000-01-24 12:38:46 +00:00
2000-01-24 12:38:46 +00:00
2000-01-24 12:38:46 +00:00
1998-01-21 17:04:36 +00:00
1998-08-08 20:02:34 +00:00
1998-07-16 11:44:36 +00:00
2000-01-17 05:24:52 +00:00
1999-05-26 23:37:38 +00:00
1998-07-16 11:44:36 +00:00
2000-01-24 12:38:46 +00:00
2000-01-24 12:38:46 +00:00
2000-01-24 12:38:46 +00:00
2000-01-24 12:38:46 +00:00
1997-02-25 05:18:05 +00:00
1999-06-02 10:18:54 +00:00
1996-12-30 01:47:46 +00:00
1999-05-26 23:37:38 +00:00
1999-05-26 23:37:38 +00:00
2000-01-24 12:09:14 +00:00
1997-12-14 22:24:57 +00:00
1998-06-07 14:06:56 +00:00
2000-02-23 06:02:09 +00:00
1999-05-26 23:37:38 +00:00
1998-10-31 11:42:52 +00:00
1998-10-31 11:42:52 +00:00
1998-02-12 18:22:41 +00:00
1999-10-14 19:21:07 +00:00
1997-06-21 02:59:26 +00:00
1997-02-25 05:18:05 +00:00
1998-12-14 21:48:11 +00:00
1999-07-29 23:46:10 +00:00
2000-02-28 05:08:01 +00:00
2000-01-18 10:53:15 +00:00
2000-03-17 18:45:19 +00:00
1999-05-26 23:37:38 +00:00
1996-09-12 18:29:32 +00:00
1997-06-23 21:55:26 +00:00
1998-05-04 13:19:20 +00:00
1998-12-17 20:59:54 +00:00
1999-05-26 23:37:38 +00:00
2000-01-18 04:33:34 +00:00
1999-04-01 09:33:06 +00:00
1999-04-28 23:13:52 +00:00
1998-07-16 11:44:36 +00:00
1998-08-20 19:16:48 +00:00
1998-08-20 19:16:48 +00:00
1998-09-17 19:51:33 +00:00
1998-04-20 18:41:05 +00:00
1999-08-18 03:42:39 +00:00
1998-10-21 15:29:52 +00:00
1998-04-20 18:41:05 +00:00
2000-01-18 04:33:34 +00:00
1999-01-20 11:36:34 +00:00
1997-06-23 21:55:26 +00:00
1998-10-21 15:29:52 +00:00
1998-10-21 15:29:52 +00:00
1999-12-27 07:55:47 +00:00
1998-10-21 15:29:52 +00:00
2000-01-18 03:13:08 +00:00