blob: 5e991cb7b69cbe2247ab29e773596a0b8536b39c [file] [log] [blame]
-------------------------------------------------
Please note the following caveats when using klibc:
-------------------------------------------------
optimization:
-------------
Compiling with -O0 is not supported. It may or may not work; please
use -O1 if you want to do maximize debuggability.
Compiling with -O0 is more likely to work on gcc 3.
setjmp()/longjmp():
-------------------
setjmp() and longjmp() *do not* save signal state. sigsetjmp() and
siglongjmp() *do* save the signal mask -- regardless of the value of
the extra argument.
The standards actually state that if you pass longjmp() a final value
of zero the library should change that to a 1! Presumably the reason
is so people who write broken code can get away with writing
longjmp(buf); or something equally bad. If you pass longjmp() a final
value of 0 you get what you deserve -- setjmp() will happily return 0.
stdio:
------
Only a small subset of the stdio functions are implemented. Those
that are implemented do not buffer, although they *do* trap EINTR or
short read/writes and iterate.
_fread() and _fwrite(), which take only one size argument (like
read/write), but do handle EINTR/short return are also available.
namespaces:
-----------
klibc frequently includes headers in other headers in a way that
exposes more symbols than POSIX says they should. "Live with it."
theading:
---------
klibc is not thread-safe. Consequently, clone() or any of the
pthreads functions are not included.
bsd_signal vs sysv_signal:
--------------------------
signal() now defaults to bsd_signal().