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-28 Ulrich Drepper <drepper@redhat.com>
* iconvdata/TESTS: Use UCS-2BE instead of UCS2.
* iconv/loop.c: Define get16, get32, put16, and put32 macros to
allow as well reading from/writing to unaligned addresses on machines
which don't support this in hardware. Use FCTNAME macro to define
function name. Include the file a second time for platforms which
need special unaligned handling.
* iconv/skeleton.c: Define get16u, get32u, put16u, and put32u macros
to access potentially unaligned addresses. These macros are intended
to be used only outside the loops.
(unaligned): New definition. In case the machine can handle unaligned
access define as zero. Otherwise as a variable which is initialized
as nonzero in case the buffer passed in at runtime is unaligned with
respect to the character set encoding involved.
Call aligned or unaligned looop functions according to unaligned
variable.
* iconvdata/8bit-gap.c: Use get16, get32, put16, and put32 instead
of direct casting pointer to potentially handle unaligned memory
accesses.
* iconvdata/8bit-generic.c: Likewise.
* iconvdata/ansi_x3.110.c: Likewise.
* iconvdata/big5.c: Likewise.
* iconvdata/euc-cn.c: Likewise.
* iconvdata/euc-jp.c: Likewise.
* iconvdata/euc-kr.c: Likewise.
* iconvdata/euc-tw.c: Likewise.
* iconvdata/gbk.c: Likewise.
* iconvdata/iso-2022-cn.c: Likewise.
* iconvdata/iso-2022-jp.c: Likewise.
* iconvdata/iso-2022-kr.c: Likewise.
* iconvdata/iso646.c: Likewise.
* iconvdata/iso_6937-2.c: Likewise.
* iconvdata/iso_6937.c: Likewise.
* iconvdata/johab.c: Likewise.
* iconvdata/sjis.c: Likewise.
* iconvdata/t.61.c: Likewise.
* iconvdata/uhc.c: Likewise.
* iconvdata/unicode.c: Likewise.
* iconvdata/utf-16.c: Likewise.
* locale/programs/simple-hash.c: Little optimizations. Remove K&R
prototypes.
* malloc/Versions [libc] (GLIBC_2.2): Add mcheck_check_all.
* malloc/mcheck.c (mcheck_check_all): Renamed from check_all and made
public.
* malloc/mcheck.h (mcheck_check_all): Declare.
* stdio-common/Makefile (tests): Add tst-obprintf.
2000-03-23 Bruno Haible <haible@clisp.cons.org>
* iconv/gconv_int.h (__gconv_transform_ucs2little_internal,
__gconv_transform_internal_ucs2little): Remove declarations.
* iconv/gconv_simple.c (__gconv_transform_ucs2_internal,
__gconv_transform_internal_ucs2): Never need to bswap_16.
(__gconv_transform_ucs2reverse_internal,
__gconv_transform_internal_ucs2reverse): Always need to bswap_16.
cpp on shlib-versions and the like.
(soversions.i): Use it.
* Makerules (Versions.all, sysd-versions): Use it to preprocess the
Versions.def and Versions files.
* Makeconfig (preprocess-versions): New canned sequence for running
cpp on shlib-versions and the like.
(soversions.i): Use it.
* Makerules (Versions.all, sysd-versions): Use it to preprocess the
Versions.def and Versions files.
2000-03-26 Ulrich Drepper <drepper@redhat.com>
* include/features.h: Undef and document __USE_XOPEN2K.
* malloc/mcheck.c: Implement pedantic checking of all allocated blocks
whenever a function is called. Initiated by calling mcheck_pedantic
instead of mcheck.
* malloc/mcheck.h: Declare mcheck_pedantic.
* malloc/Versions [libc] (GLIBC_2.2): Add mcheck_pedantic.
* locale/programs/localdef.c: Use mcheck_pedantic instead of mcheck
for now.
2000-03-26 Roland McGrath <roland@baalperazim.frob.com>
* posix/unistd.h (intptr_t): Conditionalize on [__USE_MISC ||
__USE_XOPEN_EXTENDED] rather than on [__USE_UNIX98].
We need this for the sbrk decl, which can be included without Unix98.
2000-03-20 Richard Henderson <rth@cygnus.com>
* nis/nss_nis/nis-service.c (_nss_nis_getservbyport_r): Last
argument to yperr2nss is an int, not size_t.
* posix/regex.c (print_partial_compiled_pattern): Cast all
ptrdiff_t to long for printing.
(print_compiled_pattern): Use Z for printing size_t.
* posix/testfnm.c (tests): Avoid trigraphs.
* sysdeps/alpha/dl-machine.h (ELF_MACHINE_RUNTIME_TRAMPOLINE):
Use a C comment, not an assembly comment.
* sysdeps/unix/sysv/linux/alpha/msgctl.c: Clarify use
of __ASSUME_32BITUIDS.
an initial value of 1024 instead of RLIM_INFINITY.
* Versions.def (libmachuser, libhurduser): Remove these sections,
since these libraries do not presently use symbol versions.
* sysdeps/mach/hurd/getdtsz.c (__getdtablesize): If the resource limit
is RLIM_INFINITY, return -1 instead.
2000-03-24 Andreas Jaeger <aj@suse.de>
* Makefile (postclean): Added soversions.i.
2000-03-24 Scott Bambrough <scottb@netwinder.org>
* sysdeps/arm/fpu/fpu_control.h: Define _FPU_MASK_IM, _FPU_MASK_ZM,
_FPU_MASK_OM, _FPU_MASK_UM, _FPU_MASK_PM, _FPU_MASK_DM, _FPU_DEFAULT,
and _FPU_IEEE. Change _FPU_RESERVED.
2000-03-24 Scott Bambrough <scottb@netwinder.org>
* sysdeps/unix/sysv/linux/arm/sys/ucontext.h: New file.
2000-03-24 Roland McGrath <roland@baalperazim.frob.com>
* sysdeps/posix/getaddrinfo.c: Include <net/if.h> for if_nametoindex.
(gaih_inet): Remove unused duplicate variable.
* inet/getnameinfo.c (getnameinfo): Use IFNAMSIZ, not MAXHOSTNAMELEN.
Don't use __libc_sa_len, which only exists for Linux. Just handle
AF_INET and AF_INET6 directly as well as AF_LOCAL, since those are the
only flavors supported by this function anyway.
2000-03-24 Geoff Clare <gwc@unisoft.com>
* stdlib/strfmon.c: corrected problems with missing signs and
missing or extra spaces; allow for sign strings longer than
one character; add padding to ensure positive and negative
formats are aligned when a left precision is used.
2000-03-26 Ulrich Drepper <drepper@redhat.com>
* stdlib/random_r.c (__setstate_r): Allow RNGs of type 4.
Patch by John Mizel <John.Mizel@msdw.com>.
* sysdeps/unix/sysv/linux/net/if.h: Moved to ...
* sysdeps/gnu/net/if.h: here.
(_IOT_ifconf, _IOT_ifreq): Hurd ioctl type macros moved from ...
* sysdeps/mach/hurd/net/if.h: ... here; this file now removed.
* sysdeps/generic/net/if.h: New file. Declares just the standard
functions and `struct if_nameindex' type.
* socket/Makefile (headers): Add net/if.h here.
* sysdeps/unix/sysv/linux/Makefile (sysdep_headers): Not here.
* sysdeps/mach/hurd/Dist: Remove it here.
* sysdeps/unix/sysv/linux/Dist: And here.
* sysdeps/generic/if_index.c: Include <net/if.h>.