* 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.
* stdio/printf.h: Doc fixes. Don't #include <stddef.h>.
(printf_function): Make last arg ARGS a vector of pointers instead of a
pointer to va_list.
Fri Mar 10 13:46:25 1995 Ulrich Drepper <drepper@ipd.info.uni-karlsruhe.de>
* stdio/vfprintf.c (PAD): use return value of _IO_padn.
(buffered_vfprintf): remove line buffer when flush failed.
Fri Mar 10 00:04:55 1995 Roland McGrath <roland@churchy.gnu.ai.mit.edu>
* time/tzfile.c (struct ttinfo): New member `isgmt'.
(__tzfile_read): Read isgmt flags for each type.
(__tzfile_default): When using TZDEFRULES DST rules, adjust
transition times according to the isstd and isgmt flags for the
types of each transition, and adjust each transition to point to
type index either 0 or 1. Reset type indices 0 and 1 to describe
the user's settings.
into just CLASS. Add standard/optional flag to all items.
* locale/localeinfo.h (_NL_CURRENT_DEFINE): Fix typo.
* ctype/ctype.h [__BYTE_ORDER == __LITTLE_ENDIAN] (_ISbit):
Rearrange defn to satisfy compiler.
* locale/localeinfo.h: Declare _nl_current.
* posix/glob/configure.bat: Fixes from DJ.
* time/backward, time/europe, time/northamerica, time/pacificnew,
time/zdump.c, time/zic.c, time/tzfile.h, time/private.h,
time/ialloc.c: Code and data updated from ADO's 95b.
* time/emkdir.c: File removed.
* time/Makefile (distribute, extra-objs, zic): Omit it.
* time/localtime.c: Deansideclized. Never #define __tzname et al
to non-__ names.
* locale/lc-ctype.c (__ctype_tolower, __ctype_toupper): Use int *
instead of short int *.
* ctype/ctype-info.c: Likewise.
* ctype/ctype.h: Likewise.
* locale/langinfo.h (_NL_CTYPE_CLASS): Use this (just one) instead
of EB and EL versions.
* locale/localeinfo.h: Rewritten for new locale system, using
locale data files and with <langinfo.h> interface.
* locale/setlocale.c: Rewritten to use locale data files.
* langinfo.h: New file.
* locale/langinfo.h: New file.
* locale/nl_langinfo.c: New file.
* locale/loadlocale.c: New file.
* locale/lc-ctype.c: New file.
* locale/lc-messages.c: New file.
* locale/lc-monetary.c: New file.
* locale/lc-numeric.c: New file.
* locale/lc-time.c: New file.
* locale/categories.def: New file.
* locale/Makefile (headers): Remove localeinfo.h.
(distribute): New variable; put localeinfo.h here, and categories.def.
(routines): Add loadlocale.
(categories): New variable.
(aux): Use that to get C-category and lc-category.
* ctype/ctype.h (_IS*): Use independent bits for all but _ISalnum.
* locale/C-ctype.c, locale/C-messages.c: New files.
* locale/C-monetary.c, locale/C-numeric.c, locale/C-time.c:
Default "C" locale data updated for new locale system.
* locale/C-collate.c: File removed.
* locale/C-ctype_ct.c: File removed.
* locale/C-ctype_mb.c: File removed.
* locale/C-response.c: File removed.
* locale/localeconv.c: Use _NL_CURRENT macro to access locale data.
* stdio/printf_fp.c, stdio/vfprintf.c, stdio/vfscanf.c,
stdlib/strtod.c, time/asctime.c, time/strftime.c:
Include ../locale/localeinfo.h and use _NL_CURRENT macro to access
locale data.
* time/localtime.c: Don't include <localeinfo.h>.
* time/tzset.c: Don't use locale items for default TZ value or
"GMT" string (use "UTC").
* stdio/vfprintf.c [USE_IN_LIBIO] (PAD): Only call the function if
WIDTH>0; update DONE.
* malloc/malloc.c (morecore): Fix last change to calculate by
blocks instead of bytes.
[IMPLICIT_ONE]: New macro, one for IEEE754 formats.
* stdlib/strtold.c [IMPLICIT_ONE]: New macro, 0.
* stdlib/strtof.c [IMPLICIT_ONE]: New macro, 1.
* stdio/vfprintf.c: Correctly notice Z modifier.
* sysdeps/mach/hurd/kill.c: When the process has no message port
registered and we have its task port, translate a few signals to
task_suspend/task_resume/task_terminate.
* sysdeps/mach/hurd/euidaccess.c: New file.
* sysdeps/stub/euidaccess.c: New file.
* posix/unistd.h [__USE_GNU] (euidaccess): Declare it.
* dirent/Makefile (routines): Add dirfd.
* sysdeps/stub/dirfd.c: New file.
* sysdeps/unix/dirfd.c: New file.
* sysdeps/unix/dirstream.h (_DIR_dirfd): New macro.
* dirent/dirent.h (dirfd): Declare new function. Define as macro
_DIR_dirfd if that is defined.
* sysdeps/mach/hurd/dirstream.h (DIR): Replace `__port' member
with `void *__fd'.
* sysdeps/mach/hurd/opendir.c: Use DIRP->__fd instead of DIRP->__port.
Open the file with `open'; set FD_CLOEXEC on the fd.
* sysdeps/mach/hurd/closedir.c: Likewise.
* sysdeps/mach/hurd/readdir.c: Likewise.
* sysdeps/mach/hurd/dirfd.c: New file.
* posix/Makefile (glob/configure): Do cvs commit if there is a CVS
directory.
(glob/ChangeLog): Likewise.
* locale/locale.h (LC_*): Use small integers instead of bit masks.
* sysdeps/mach/hurd/i386/sigreturn.c: Restore the FPU state.
* stdlib/random.c (__srandom): Change algorithm used to populate
the state array.
(randtbl): Recomputed with new algorithm.
* sysdeps/sparc/Makefile [subdir=crypt] (crypt): Reset only if set
to original value of `crypt'.
* sysdeps/unix/sysv/sysv4/solaris2/sparc/Makefile [subdir=crypt]
(crypt): New variable, set to crypt.solar.
* sysdeps/mach/pagecopy.h: New file.
* sysdeps/generic/pagecopy.h: New file.
* sysdeps/generic/memcpy.c: Include pagecopy.h; call
PAGE_COPY_FWD_MAYBE first when word aligned.
* sysdeps/generic/memmove.c: Likewise.
* csu/Makefile (crtstuff): New variable consolidates crti, crtn;
add crti_s, crtn_s.
(install-lib, extra-objs, generated-, omit-deps): Use that.
(initfini): New canned sequence, broken out of crt[in].s rule.
(crt[in].s rule): Use it.
(crt[in]_s.s): New rule.
* csu/initfini.c (GLOBAL): New macro; define it to empty if undefined.
(_init, _fini): Use GLOBAL as storage class.
Add self reference to avoid GCC optimizing out the functions.
* Makefile (headers): Remove $(stddef.h).
* Makeconfig (stddef.h): Variable removed; now require gcc version
>= 2.2.
* stddef.h: File removed.
Mon Feb 20 19:42:31 1995 Roland McGrath <roland@churchy.gnu.ai.mit.edu>
* sysdeps/unix/bsd/ultrix4/mips/start.S: Remove `__environ'
definition.
* sysdeps/unix/bsd/osf1/alpha/start.S: Likewise.
* stdlib/strtod.c: Allow the string to start with a decimal point
without a leading zero.
* config.h.in [HAVE_ELF || HAVE_GNU_LD]: Define HAVE_WEAK_SYMBOLS.
* stdlib/strtod.c (PASTE, PASTE1): New helper macros; use these in
access to float.h macros.
* misc/efgcvt.c: New file.
* misc/Makefile (routines): Add efgcvt.
* sysdeps/sparc/mul.S: Renamed to `dotmul.S'.
* sysdeps/sparc/Makefile (routines): Reference `dotmul.S', not `mul.S',
to avoid a misreference that would override sysdeps/generic/mul.c.
* sysdeps/sparc/Dist: Likewise.
* posix/Makefile (aux): Add environ.
* posix/environ.c: New file.
* sysdeps/unix/sparc/start.c: Remove __environ definition.
* sysdeps/unix/start.c: Likewise.
* sysdeps/unix/sysv/irix4/start.c: Likewise.
* sysdeps/mach/hurd/start.c: Likewise.
* sysdeps/mach/start.c: Likewise.
* sysdeps/stub/start.c: Likewise.
* sysdeps/unix/make_errlist.c: In produced program, test
HAVE_WEAK_SYMBOLS instead of HAVE_GNU_LD.
* sysdeps/unix/sysv/sysv4/dup2.c: Fix #include of renamed file.
Remove extra weak alias.
* sysdeps/unix/sysv/sysv4/sigaltstack.S: Fix unsquashed file name
in #include.
* libc-symbols.h: Put comment around ^L to pacify Solaris as.
* sysdeps/posix/Makefile (cded-objdir-includes): New variable
replaced cded-objdir-CPPFLAGS; transform $(+includes) instead of
$(CPPFLAGS).
(mk-stdiolim): Use it instead.
* mach/mach_init.c (__vm_page_size): Make it initialized. It does
not work to make a weak alias to a bss symbol.
* stdio/Makefile (distribute): Remove mpn-copy.mk; add gen-mpn-copy.
(tests): Add test-fwrite.
* stdio/test-fwrite.c: New file.
* stdlib/stdlib.h [__USE_GNU]: Declare strtof, strtold, __strtof,
__strtold.
* Makefile (autoconf-it): New canned sequence. Do cvs commit if
there is a CVS directory.
(configure, %/configure): Use $(autoconf-it) for cmds.
* Make-dist: Likewise.
* Makerules ($(gpl2lgpl)): Likewise.
inlines cause trouble for files defining global register variables.
* stdio/vfprintf.c: Set PREC to zero for %. without following digit.