* stdlib/strtod.c (STRTOF): Use extra macro to make STRTOF's #defn
a weak symbol instead of literal "STRTOF".
* locale/setlocale.c: Work around ld bug: don't weakify refs to
_nl_{current,C}_*.
* Makerules (+depfiles): Translate %.so to %.o in $(extra-objs).
* malloc/free.c [emacs] (__malloc_safe_bcopy): Define to safe_bcopy.
* malloc/realloc.c (__malloc_safe_bcopy): Undefine before defining.
* malloc/free.c (memmove, __malloc_safe_bcopy): Do include these
#ifdef emacs, but only #ifndef memmove.
* malloc/realloc.c [emacs] (__malloc_safe_bcopy): Just #define to
safe_bcopy.
(memmove): Define only if undefined.
* stdio/_itoa.h (_EXTERN_INLINE): Define if undefined.
(_itoa): Use it in defn.
mmap call.
* configure.in (os=freebsd*|bsdi*): Set base_os=unix/bsd/bsd4.4
for these too.
* sysdeps/unix/sysv/tcsetattr.c: Use |= instead of = to properly
set c_oflag value.
* Makeconfig [! objpfx] (csu-objpfx): Add trailing slash.
* locale/Makefile (categories): Uncomment collate.
* locale/lc-collate.c: New file.
* malloc/free.c: Remove use of `assert'.
* malloc/realloc.c [! emacs] (safe_bcopy): Renamed to
__malloc_safe_bcopy; #define safe_bcopy.
* malloc/free.c: Cope with systems lacking `memmove'.
(_free_internal): Cast result of _malloc_internal.
its inlines too.
* sysdeps/unix/sysv/sysv4/sigset.h (__sigfillset): Use ~0L instead
of -1 to avoid compiler warning.
* configure.in (host_os=linux*): Set elf=yes for this, not just
linux*elf*.
* misc/progname.c (program_invocation_name,
program_invocation_short_name): Make these initialized data
definitions.
* sysdeps/mach/hurd/setitimer.c (fork_itimer): Add self reference
so gcc doesn't optimize out the function entirely.
* sysdeps/mach/hurd/i386/trampoline.c: Add a link to
SS->active_resources, so that _hurdsig_longjmp_from_handler will
be called when a longjmp unwinds the signal frame.
* sysdeps/mach/hurd/i386/sigreturn.c: Remove the link on the
SS->active_resources chain added by _hurd_setup_sighandler.
* hurd/sigunwind.c: New file.
* hurd/Makefile (sig): Add sigunwind.
* Makerules (lib%.so: lib%_pic.a): Remove dir name from $*.
* MakeTAGS (tags-sources): Include $(all-dist).
[subdir] (all-dist): Define to $(distribute).
parent objdirs.
* extra-lib.mk (object-suffixes-$(lib)): New variable, produced by
filtering out $($(lib)-inhibit-o); use that instead of
$(object-suffixes) in all the other variables.
* locale/loadlocale.c (_nl_load_locale) [MAP_FILE]: Define it zero
if undefined.
* string/strxfrm.c: Just copy the string (for now).
* string/strcoll.c: Just call strcmp (for now).
* mach/Makefile (lock): Add mutex-init.
* mach/mutex-solid.c (_cthread_mutex_lock_routine,
_cthread_mutex_unlock_routine): Variables removed.
(__mutex_lock_solid, __mutex_unlock_solid): Don't use them; just stub.
(__mutex_init): Function moved to new file mutex-init.c.
* mach/mutex-init.c: New file, broken out of mutex-solid.c.
More changes from Germano Caronni <caronni@tik.ethz.ch>:
* malloc/free.c: Relocate _heapinfo when that allows us to return
core to the system.
* malloc/malloc.c: Move #include <errno.h> outside #ifndef
_MALLOC_INTERNAL.
* posix/unistd.h [__USE_BSD] (ttyslot): Declare it.
* posix/unistd.h [__USE_BSD] (L_SET, L_INCR, L_XTND): Define
unless L_SET already defined.
* misc/sys/file.h (L_SET, L_INCR, L_XTND): Don't define if L_SET
already defined.
Incorporated -lutil library from 4.4-Lite.
* misc/Makefile (extra-libs, libutil-routines): New variables.
* misc/login.c, misc/login_tty.c, misc/logout.c, misc/logwtmp.c,
sysdeps/generic/pty.c: New files for -lutil incorporated from 4.4-Lite.
Support simple, light-weight unwind-protect mechanism for longjmp.
* setjmp/longjmp.c: Call _longjmp_unwind first thing.
* sysdeps/mach/hurd/jmp-unwind.c: New file.
* sysdeps/stub/jmp-unwind.c: New file.
* sysdeps/i386/jmp_buf.h (_JMPBUF_UNWINDS): New macro.
* sysdeps/mips/jmp_buf.h (_JMPBUF_UNWINDS): New macro.
* setjmp/Makefile (routines): Add jmp-unwind.
* hurd/hurd/userlink.h (struct hurd_userlink): Move `next' and
`prevp' members into new substructure `resource'; add another such
substructure `thread' and members `cleanup' (function ptr) and
`cleanup_data' (generic ptr).
(_hurd_userlink_link, _hurd_userlink_unlink): Insert/remove LINK
into the `_hurd_self_sigstate ()->active_resources' list via the
`thread' substructure.
* hurd/hurd/port.h (_hurd_port_cleanup): Declare it.
(_hurd_port_locked_get): Set LINK->cleanup to _hurd_port_cleanup and
LINK->cleanup_data' to the port extracted.
* hurd/hurd/signal.h (struct hurd_sigstate): New member
`active_resources'.
* hurd/port-cleanup.c: New file.
* hurd/Makefile (routines): Add port-cleanup.
* malloc/malloc.c: Include errno.h.
Sat Mar 25 18:24:21 1995 Roland McGrath <roland@churchy.gnu.ai.mit.edu>
* locale/loadlocale.c (_nl_load_locale): Avoid */ inside comment.
* stdio/printf-parse.h: New file, mostly written by drepper.
* stdio/vfprintf.c: Rewritten, mostly by drepper.
* stdio/printf-prs.c: Rewritten.
* stdio/Makefile (distribute): Add printf-parse.h.
Thu Mar 23 22:03:44 1995 Roland McGrath <roland@churchy.gnu.ai.mit.edu>
* sysdeps/unix/start.c [! NO_UNDERSCORES]: Don't declare _start
with asm name. Just do a ".set start, __start".
* malloc/realloc.c: Call _free_internal instead of free.
* stdlib/Makefile: All the mpn stuff moved here from stdio/Makefile.
* locale/loadlocale.c (_nl_load_locale): If LOCALE/LC_* is a
directory, open LOCALE/LC_*/SYS_LC_* instead.
* stdio/fpioconst.c, stdio/fpioconst.h, stdio/gmp-impl.h,
stdio/gmp.h, stdio/longlong.h, stdio/mp_clz_tab.c,
stdio/gen-mpn-copy: Files moved to stdlib.
* stdio/Makefile: All mpn stuff moved to stdlib/Makefile.
* stdio/printf_fp.c: Use ../stdlib to find fpioconst.h and gmp
headers.
* stdlib/strtod.c: Don't use ../stdio to find fpioconst.h and gmp
headers.
(lib-noranlib): Depend on $(install-lib) in objdir.
(common-mostlyclean): Remove $(install-lib) and stub-$(subdir)
from objdir. Don't remove TAGS; it comes in the distribution.
* malloc/malloc.c (morecore): Save errno around call to
_realloc_internal. Don't account for the additional new blocks of
the info table itself when choosing the new table size for the
first crack; if it succeeds, the new blocks will have been found
in existing free space already described by the existing info
table.
Changes from Germano Caronni <caronni@tik.ethz.ch>:
Changes from Germano Caronni <caronni@tik.ethz.ch>:
* stdio/vfscanf.c (%n): Use READ_IN - 1, so as not to count the
read-ahead character.
* hurd/dtable.c, hurd/getdport.c, hurd/hurd.h, hurd/hurdexec.c,
hurd/hurdinit.c, hurd/hurdprio.c, hurd/hurdsock.c,
hurd/ports-get.c, hurd/ports-set.c, hurd/setauth.c,
hurd/setuids.c, sysdeps/mach/hurd/i386/trampoline.c:
Get anal with unsigned to pacify compiler.
* stdio/vfscanf.c: Grok positional parameter specs (i.e. %3$d
means %d from 3rd arg).
* sysdeps/mach/hurd/closedir.c: Include hurd/fd.h.
* stdlib/strtol.c: If !GROUP, set END to null. In loop, test only
END, not GROUP.
* sunrpc/Makefile (install-lib): Variable removed.
(rpcsvc-objs): Variable removed.
(extra-objs): Don't include $(rpcsvc-objs).
(extra-libs): New variable, contains librpcsvc.
(librpcsvc-routines): New variable.
(librpcsvc-inhibit-o): New variable, contains .so.
(omit-deps): Set this to $(librpcsvc-routines).
($(objpfx)rpcgen): Don't use $(libc.a).
(lib, $(objpfx)librpcsvc.a): Targets removed.
* o-iterator.mk, extra-lib.mk: New files.
* Makerules (o-iterator): New variable.
[extra-libs]: Include extra-lib.mk to generate rules for each word
of $(extra-libs).
* Makefile (distribute): Add extra-lib.mk, o-iterator.mk.
(IMPLICIT_ONE, *_MAX_10_EXP_LOG): Macros removed; no longer needed.
* stdio/fpioconst.c, stdio/fpioconst.h: Don't use
LDBL_MAX_10_EXP_LOG; LAST_POW10 defines the maximal available
exponent.
* sysdeps/ieee754/ldbl2mpn.c (__mpn_extract_long_double):
Handle 80-bit denormalized numbers correct.
* stdlib/strtod.c,stdlib/strtof.c,stdlib/strtold.c:
[IMPLICIT_ONE,*_MAX_10_EXP_LOG]: not needed anymore.
* stdlib/strtod.c (RETURN): parenthesis around return value.
(round_and_return): correct handling of denormalized numbers.
(__strtod_internal): don't check for grouping when not requested
while returning 0.0.
* stdio/fpioconst.[ch]: [LDBL_MAX_10_EXP_LOG]: don't use it.
LAST_POW10 defines the maximal available exponent.
* stdlib/{atof,atoi,atol}.c: use __strtoX_internal.
* locale/C-ctype.c: New correct data generated by drepper.
* Rules: Don't use $(libc.a).
Parsing of grouped numbers contributed by Ulrich Drepper.
* stdlib/strtol.c (__strtol_internal): Renamed from strtol. Take
new flag arg; if nonzero, parse locale-dependent thousands
grouping and interpret only the prefix that is correctly grouped.
(strtol): Define this to call _strtol_internal with zero for the flag.
Use a weak symbol for the definition.
* stdlib/strtod.c (strtod, __strtod_internal): Likewise.
Check for the exponent of the number overflowing the float format.
* stdlib/stdlib.h (__strtof, __strtold): Declarations removed.
(__strto{f,d,ld,l,ul,q,uq}_internal): Declare these functions.
[__OPTIMIZE__]: Define inline functions calling those.
* stdlib/grouping.h: New file, written by drepper.
* stdlib/Makefile (distribute): Add grouping.h.
* stdio/vfscanf.c: Grok %' modifier to numeric conversions. Call
__strtoX_internal with the grouping flag set iff the modifier is
present.
Wed Mar 15 00:40:54 1995 Roland McGrath <roland@churchy.gnu.ai.mit.edu>
* sysdeps/generic/memchr.c: Fix typos: limit.h -> limits.h.
* mach/Machrules: Produce static deps for all object flavors.
[interface-library]: Remove all these variables and rules.
($(interface-library)-routines): Define this variable.
(extra-libs): Append $(interface-library) to this.
* mach/Makefile (interface-library): Omit .a suffix.
* hurd/Makefile: Likewise.
Tue Mar 14 23:40:31 1995 Roland McGrath <roland@churchy.gnu.ai.mit.edu>
* stdio/internals.c (flushbuf): If !FLUSH_ONLY, don't skip out
early if no new data in buffer after priming.
* Makerules (object-suffixes, libtypes): Move all these variables
to Makeconfig.
* Makeconfig (object-suffixes, libtypes): Moved here from Makerules.
* Makerules (build-extra-lib): New canned sequence.
* sysdeps/mach/hurd/euidaccess.c: Include fcntl.h. Declare ERR;
fix uses of FILE and PORT. Remove bogus weak alias for `access'.
* sysdeps/mach/hurd/dirfd.c: Include hurd/fd.h and errno.h.
Add missing semicolon.
* sysdeps/mach/hurd/opendir.c: Include hurd/fd.h. Use a `struct
hurd_fd *' temp var, since DIRP->__fd is a `void *'.
* sysdeps/mach/hurd/readdir.c: Include hurd/fd.h.
* stdlib/wcstombs.c: #if 0 out code for non-ASCII chars until the
locale data format is implemented.
* sysdeps/mach/hurd/i386/trampoline.c (_hurd_setup_sighandler):
Pass &__sigreturn on the stack to the trampoline code, so it is
not position-dependent.
* stdio/printf_fp.c (NDEBUG): Define this to disable assert.
Don't include <stdarg.h>.
(__printf_fp): Last arg ARGS is now `const void **const';
dereference ARGS[0] instead of using va_arg.
* locale/setlocale.c: In LC_ALL case, initialize CATEGORY before
loop to install data.
* locale/loadlocale.c (_nl_category_num_items): Use _NL_ITEM_INDEX
to extract number from item code.
(_nl_load_locale): Close the descriptor when finished.
* malloc/realloc.c (_realloc_internal): Call _malloc_internal in
place of malloc.
* time/tzfile.c (__tzfile_default): Initialize RULE_STDOFF to zero.
* Makerules (libtypes, object-suffixes): New variables.
(libtype.*, CFLAGS-*, CPPFLAGS-*): New variables for each object
suffix.
(CFLAGS, CPPFLAGS): Append $(C{,CPP}FLAGS-$(suffix $@)).
(%.so, %.po, %.go): New compilation rules for %.S, %.s, %.c.
(close-check-inhibit-asm): Append a semicolon.
(sysd-rules): Generate rules for each object suffix.
(compile.S, compile.c): Always assume gcc.
(OUTPUT_OPTION): Define unconditionally.
(+make-deps): In generated rule, produce a dependent for each
object suffix.
(.SUFFIXES): Add $(object-suffixes) in place of .o.
(.PRECIOUS): Make all suffix flavors precious.
($(libc.a)): Target removed.
(lib): Depend on each enabled libtype.
(libobjs, objects, objs): Depend on all the enabled object flavors.
(lib%.a): New pattern rule.
[$(build-shared)=yes] (lib%.so: lib%_pic.a): New pattern rule.
(stamp-$(subdir)): Rewritten to a pattern rule for stamp.%-$(subdir)
to make one for each flavor; library dep rule likewise rewritten.
($(libc.a)(__.SYMDEF)): Target replaced with one target for each
flavor.
(symdef.%): New pattern rule; helper for __.SYMDEF targets.
(installed-libcs): New variable.
(install): Depend on that instead of
$(libdir)/lib$(libprefix)$(libc-name).a;
that file's rule rewritten to make each enabled libtype.
(install-lib.so): New variable, filters lib%.so from $(install-lib).
(install-lib): Filter out lib%.so after setting install-lib.so.
[$(build-shared)=yes] (install): Install $(install-lib.so).
(common-mostlyclean): Remove all flavors of objects.
* Makefile ($(libc.a)(__.SYMDEF)): Target removed.
[$(build-shared)=yes] (lib): Depend on $(common-objpfx)libc.so.
* sysdeps/stub/ulimit.c: Don't include gnu-stabs.h.
* sysdeps/stub/pause.c: Likewise.
* sysdeps/stub/time.c: Likewise.
* stdlib/mbtowc.c: #if 0 out code for non-ASCII chars until the
locale data format is implemented.
* stdlib/wctomb.c: Likewise.
* mach/Makefile ($(objpfx)errsystems.c): Reenable this rule; the
gcc bug is fixed.
* mach/errsystems.c: File removed.
* Makeconfig (libc.a): Variable removed.
(+link): Don't use it.
* configure.in (AC_ARG_ENABLE calls): Use $enableval instead of
assuming `yes'.
* malloc/malloc.h (_malloc_internal, _realloc_internal): Declare these.
* malloc/realloc.c (_realloc_internal): Renamed from realloc;
don't use __realloc_hook.
(realloc): New function; call __realloc_hook ?: _realloc_internal.
* malloc/malloc.c (_malloc_internal): Renamed from malloc;
don't use __malloc_hook.
(malloc): New function; call __malloc_hook ?: _malloc_internal.
(initialize): Set up _heaplimit to cover the _heapinfo table.
(morecore_recursing): New static variable.
(morecore): If that is set, return null immediately.
When growing the info table, before getting new core from the
system for it, set morecore_recursing and try moving _heapinfo
with _realloc_internal. When that fails and we get new core, set
_heaplimit to cover the core for the new _heapinfo table.
(register_heapinfo): New function. Record the _heapinfo table's
own blocks in that table and in the statistics variables.
(initialize, _malloc_internal): Use it after allocating new table.
Fri Mar 10 22:26:28 1995 Jim Meyering (meyering@comco.com)
* sysdeps/generic/memchr.c: Remove ansidecl.h and clean up for use
by other packages.
[LONG_MAX <= LONG_MAX_32_BITS]: Don't compile 64-bit code.
* mach/errorlib.h (errors): Use const for decl.
* time/tzfile.c (uc2ul, _uc2ul): Macros removed.
(decode): New inline function; decode signed 32-bit integers, and
sign-extend properly when long is longer than 32 bits.
(__tzfile_read): Changed all uses of uc2ul to decode.
Decode the transition times properly when sizeof (time_t) > 4.
* stdio/vfprintf.c [USE_IN_LIBIO] (PAD): Use return value of _IO_padn.
(buffered_vfprintf): Remove line buffer when flush failed.