Eric Andersen [Wed, 7 Aug 2002 07:57:49 +0000 (07:57 -0000)]
Per suggestion from Miles Bader, move calloc.c to libc/stdlib.
Also, Manuel notices that I forgot to check for when nmemb=0,
which would result in a segfault, so fix that case as well.
-Erik
Changed fflush() behavior to no-op for r/w streams in read-mode.
This falls under undefined behavior wrt ANSI/ISO C99, but
SUSv3 seems to treat it as a no-op and it occurs in some apps.
Fixed a problem with _stdio_fwrite() not checking for underlying
write() failures.
Fixed both _stdio_fwrite() and _stdio_fread() to make sure that
the putc and getc macros were disabled if the stream was in
and error state.
The above changes should take care of a problem initially reported
by "Steven J. Hill" <[email protected]>.
Eric Andersen [Tue, 6 Aug 2002 03:28:45 +0000 (03:28 -0000)]
Unify calloc (its the same thing regardless of the underlying
malloc implementation). Fix problem reported to bugtraq about
problems with integer overflow that can occur during the
computation of the memory region size by calloc (and similar
functions) which could result in a subsequent buffer overflow.
-Erik
Eric Andersen [Sat, 3 Aug 2002 10:58:12 +0000 (10:58 -0000)]
When DODEBUG and HAS_WCHAR were enabled and HAS_LOCALE was disabled,
wchar.c wouldn't compile:
wchar.c: In function `__mbsnrtowcs':
wchar.c:631: `__ctype_encoding_7_bit' undeclared (first use in this function)
This fixes it by keeping the locale specific asserts hidden when not relevant.
-Erik
Eric Andersen [Wed, 31 Jul 2002 04:38:58 +0000 (04:38 -0000)]
Per discussion on the mailing list, simply vfork -> fork mapping to only apply
iff we do not have vfork available, which is simpler and more reasonable.
-Erik
Eric Andersen [Wed, 31 Jul 2002 04:20:04 +0000 (04:20 -0000)]
Patch from Alexander Pevzner <[email protected]> to fixup things when invoked as
the C++ compiler to to automagically add include/g++ into the include search
path, and automagically add -lstdc++ and -lm into the set of automatically
linked libraries.
Eric Andersen [Fri, 26 Jul 2002 05:21:56 +0000 (05:21 -0000)]
Ok, I get it. sjhill kept adding the 'find' command since
include/sgidefs.h wasn't getting scrubbed. Fix it so this
symlink gets properly scrubbed, even for mipsel.
-Erik
Eric Andersen [Fri, 26 Jul 2002 04:53:10 +0000 (04:53 -0000)]
The __set_errno macro _must_ match that defined in include/bits/errno.h. We
can't tack in the return -1 since then when people include errno.h, the return
-1 mysteriously vanishes... Setting the __set_errno back and restoring the
'return -1;' calls to each _syscall[0-n] macro makes mips syscalls work again.
-Erik
Miles Bader [Thu, 25 Jul 2002 01:58:57 +0000 (01:58 -0000)]
Redo the locking, so that it may actually work. Now locking is done at
the malloc/free level, not within the heap abstraction, and there's a
separate lock to control sbrk access.
Also, get rid of the separate `unmap_free_area' function in free.c, and
just put the code in the `free' function directly, which saves a bunch
of space (even compared to using an inline function) for some reason.
Miles Bader [Tue, 23 Jul 2002 06:50:40 +0000 (06:50 -0000)]
* Automatically try to unmap heap free-areas when they get very big.
* Instead of using mmap/munmap directly for large allocations, just use
the heap for everything (this is reasonable now that heap memory can
be unmapped).
* Use sbrk instead of mmap/munmap on systems with an MMU.
Eric Andersen [Mon, 22 Jul 2002 17:10:30 +0000 (17:10 -0000)]
Rework syscall handling. Rewrite syscall handlers for x86 and ARM.
Prepare to kill the UNIFIED_SYSCALL option and instead have it be
a per arch thing that is either enabled or not for that arch.
-Erik
Eric Andersen [Thu, 18 Jul 2002 15:00:07 +0000 (15:00 -0000)]
Miles Bader implemented a new mmap based malloc which is much
smarter than the old "malloc-simple", and actually works, unlike
the old "malloc". So kill the old "malloc-simple" and the old
"malloc" and replace them with Miles' new malloc implementation.
Update Config files to match. Thanks Miles!
Clean up CLK_TCK situation. clock() and sysconf() now use an
arch-specific constant value defined in bits/uClibc_clk_tck.h.
Default is 100 (common/bits) but alpha uses 1024 following glibc.
Override per arch as necessary.
Eric Andersen [Wed, 10 Jul 2002 04:32:03 +0000 (04:32 -0000)]
Per bug report from Ronald Wahl <[email protected]>:
...inet_pton breaks since tolower is implemented as
a macro and its argument is evaluated more than once:
while ((ch = tolower (*src++)) != '\0') {
So I fixed it by just undefining tolower() so we use the
function version, not the macro.
-Erik