Age | Commit message (Collapse) | Author |
|
|
|
He sent this patch to me a month ago, but I forgot to apply it...
|
|
I had a look at it and you won't believe it was always broken.
I'll try and explain it, let me know if it doesn't make sense.
* ash calls setjmp, which messes with the stack to look like it has
two args instead of one and then jmps (actually falls) into
sigsetjmp.
BUG
* sigsetjmp then saves the registers and "jumps" to __sigset_save, a C
function.
BUG1 - because the caller pops its args off the stack, a program that
changes it's number of args is broken because the caller will
not
pop the correct number of args.
I think that jumping from the sigsetjmp asm to the 'C' code is unsafe
but I can't think of an example. Anyway, I have attached what I think
is
a working fix.
The reason this worked without -fomit-frame-pointer is that the
_sigset_save 'C' code would restore the stack pointer from %ebp (the
frame
pointer) and because none of the asm had moded it, when we returned
from
__sigset_save the stack was back to it's correct position for 1
argument
despite our best attempts to stuff it up ;-)
|
|
|
|
* reduce the sigset types to 32 bits (I've mentioned this before)
I think I saw this change go in for another platform anyway ;-)
* Do not use _IO_FILE as it clashes with the C++ libraries which know
too much about how glibc workds :-(
* Do not use _G_va_list for the same reason.
* remove the CTORS/DTORS from crt0.S for ARM as the compiler provided
crtbegin.o and crtend.o have these (and only these) already in them and
you get multiple defined errs :-(
|
|
fixed up.
|
|
|
|
|
|
|
|
-Erik
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
allowing openssl to be built.
|
|
In the libc/stdlib/bsd_getpt.c file you have line:
memcpy (buf, _PATH_PTY, sizeof (_PATH_PTY) - 1);
It really should be:
memcpy (buf, _PATH_PTY, sizeof (_PATH_PTY) );
The last nul character must be copied too because the next line uses
strlen() to get buf's length.
|
|
|
|
|
|
|
|
"_stderr", since this is what gcc and libgcc expect...
-Erik
|
|
|
|
-Erik
|
|
|
|
calling other tiny ctype functions. Now all ctype funcs will end up
with no extern references, which ends up shrinking both the uClibc
shared lib and shrinking client code.
-Erik
|
|
|
|
|
|
do not so it inline.
|
|
Fix three bugs and bring into line with glibc:
1. The first character read using getc() was being ignored if it was EOF.
Normally this is okay because the next getc() returns EOF as well, but
for sscanf, this was causing us to skip the null terminator and start
scanning whatever happened to be next in memory.
2. %s, %c, and %[ formats now return -1 if EOF is reached before any
characters are read, instead of 0. This was causing an infinite loop
in diald.
3. Default to base 10 for %i fields if not prefix modifier present.
|
|
|
|
|
|
they use as stubs, otherwise, some compilers (ie., m68k-elf) tie them to
the local symbols and the weak aliases do not work.
|
|
issues, and syns things (as far as I am willing) with Dave Schleef's
tree. We may need to go another round or so, but we do seem to be
converging...
|
|
The FD's are returned in registers.
|
|
|
|
avoid problems with fgets on tty streams. I actually did some testing this
time. ;-)
Note: there is a difference in behavior between glibc and uClibc here
regarding fread() on a tty stream. glibc's fread() seems to return after
reading all _available_ data even if not at end-of-file, while uClibc's
fread() continues reading until all requested or eof or error. The latter
behavior seems correct w.r.t. the standards.
|
|
and pasting while pressed for time. I haven't checked this one either. :-(
|
|
|
|
tested it (lack of time).
|