Eric Andersen [Mon, 12 Aug 2002 09:53:12 +0000 (09:53 -0000)]
Fix the gcc wrapper to include crtbeginS.o and crtendS.o when we are compiling
PIC code, and use crtbegin.o and crtend.o when compiling non-pic code. As was
caused problems, esp on powerpc...
-Erik
Revert commit by davidm to printf.c that initialized conv_num
needlessly. To do so increases the generated code size with bcc.
Eliminate duplicate define warnings in wstring.c.
Fix potentially broken preprocessor comparisons. The preprocessor
converts integers to maximal signed type, so inequality comparisons
involving UINTMAX_MAX, ULLONG_MAX, and (if no long long) ULONG_MAX
were potentially broken.
Eric Andersen [Mon, 12 Aug 2002 04:15:45 +0000 (04:15 -0000)]
Geez I'm an idiot some times. I shouldn't code when I'm exhausted.
I _totally_ screwed up the locking on exit and atexit such that it
didn't do any good at all.
-Erik
* SYSCALL_INLINE was only defined for pread and reused by pwrite
meaning pwrite did a pread :-).
* The kernel pread/pwrite interfaces always take a 64bit value. So
the libc versions must do the LONG_LONG_PAIR stuff otherwise the
pread/pwrite calls will not work.
These guys are working now for SH at least (and I can format my
DiskOnChip again ;-)
At some stage I was getting conflicts on the SH platform with
the two i_am_not_a_leaf functions, changing the name of one is harmless
and fixed the problem at the time. Not entirely sure it's still required.
Eric Andersen [Thu, 8 Aug 2002 15:44:46 +0000 (15:44 -0000)]
Patch from Stefan Allius and Edie C. Dost:
In linuxthreads/errno.h the functions __errno_location and
__h_errno_location wasn't safe against calling before the
library is initialized.
Eric Andersen [Thu, 8 Aug 2002 14:51:40 +0000 (14:51 -0000)]
I reworked syscalls.h to match how I'm doing other arches. Stefan Allius and
Edie C. Dost has some concerns about the perl script used to general crti.o and
crtn.o and added their own versions. These versions will win since they are
built last,
Eric Andersen [Thu, 8 Aug 2002 14:35:49 +0000 (14:35 -0000)]
Patch from Stefan Allius and Edie C. Dost to add SuperH
shared library support. This also adds some cleaner error
handling, which I (Erik) then ported over to x86 and arm.
In addition Stefan added the following fixes:
- in hash.c was the lvalue handling of global library functions wrong.
To fix this I had to change the prototype of _dl_find_hash. (==> TIS and
ELF spec. Vers. 1.2)
- in ldso.c was the order of the .init sections calls wrong. Before we call
the initialization code of a library we have to check that all dependend
libraries are already initialized. This can easily made by calling it in the
revers loading order. For this I added a previous pointer chain.
- in ldso.c the ELF magics wasn't checked fo PPC, MIPS and SH architecture
Eric Andersen [Thu, 8 Aug 2002 07:55:31 +0000 (07:55 -0000)]
Remove unified syscall support (it should just be a per-arch
decision, with syscalls.h adjusted to match). Add symlinks
to make tools like mklibs.py be happy.
-Erik
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