mirror of
https://sourceware.org/git/glibc.git
synced 2025-01-08 18:30:18 +00:00
Remove obsolete notes at top level of source tree.
* BUGS, CONFORMANCE, NAMESPACE, WUR-REPORT: Deleted. * README.pretty-printers, README.tunables: Move to manual/.
This commit is contained in:
parent
f4a6be2582
commit
da162bf234
69
BUGS
69
BUGS
@ -1,69 +0,0 @@
|
||||
List of known bugs (certainly very incomplete)
|
||||
----------------------------------------------
|
||||
|
||||
Time-stamp: <2007-10-27 18:37:51 drepper>
|
||||
|
||||
This following list contains those bugs which I'm aware of. Please
|
||||
make sure that bugs you report are not listed here. If you can fix one
|
||||
of these bugs/limitations I'll certainly be glad to receive a patch.
|
||||
|
||||
Another source of information about bugs is the problem data base of the
|
||||
GNU project. There is an easy to use WWW interface available at
|
||||
|
||||
http://sourceware.org/bugzilla/
|
||||
|
||||
I would appreciate it very much if you could verify the problem was
|
||||
not reported before by looking through the database. Before reporting
|
||||
a bug please check the FAQ since it discusses also a lot of
|
||||
problematic situations.
|
||||
|
||||
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
Severity: [ *] to [***]
|
||||
|
||||
[ **] Closing shared objects in statically linked binaries most of the
|
||||
times leads to crashes during the dlopen(). Hard to fix.
|
||||
|
||||
[ **] The RPC code is not 64 bit clean. This is getting slowly fixed
|
||||
but expect incompatible changes on 64 bit platforms like Alpha.
|
||||
|
||||
[ *] The precision of the `sinhl' and/or `asinhl' function do not seem
|
||||
to be the best.
|
||||
|
||||
[ *] On Linux, there should be a way to prevent defining the symbol
|
||||
NGROUPS_MAX in the <linux/limits.h> header file. In glibc it
|
||||
is defined in <posix1_lim.h> which must not make the other
|
||||
symbols in <linux/limits.h> available.
|
||||
[PR libc/140]
|
||||
|
||||
[ *] The libm-ieee `gamma' function gives wrong results (at least for
|
||||
-0.5).
|
||||
|
||||
[ *] The libm-ieee `scalb' function gives wrong results for
|
||||
non-integral second parameters.
|
||||
|
||||
[ *] Several (most?) collation specifications are broken. The code which
|
||||
is currently there is in most cases inherited from the originial
|
||||
author (in case there is a LC_COLLATE specification in the locale
|
||||
file) or is defined using the default (if iso14651_t1 is included).
|
||||
|
||||
In any case we are missing information to correct the specification.
|
||||
If you find the specification for your language be faulty please
|
||||
send a report with instruction on what to fix. You don't have to
|
||||
fix the specification yourself.
|
||||
|
||||
The way it finally should look like (if the generic specification
|
||||
is not correct) can be seen in the sv_SE file. Quite a few changes
|
||||
on top of the generic specification can be made without duplication
|
||||
of the whole LC_COLLATE description.
|
||||
|
||||
[ *] Some of the functions which also handled IPv6 are currently broken.
|
||||
IPv6 and IPv4 lookups occasionally happen when not needed. This
|
||||
happens in getaddrinfo() and getnameinfo(). IPv4 handling of
|
||||
these functions is OK though and there are patches available to fix
|
||||
the IPv6 code as well.
|
||||
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
Ulrich Drepper
|
||||
drepper@redhat.com
|
168
CONFORMANCE
168
CONFORMANCE
@ -1,168 +0,0 @@
|
||||
Conformance of the GNU libc with various standards
|
||||
==================================================
|
||||
|
||||
The GNU libc is designed to be conformant with existing standard as
|
||||
far as possible. To ensure this I've run various tests. The results
|
||||
are presented here.
|
||||
|
||||
|
||||
Open Group's hdrchk
|
||||
===================
|
||||
|
||||
The hdrchk test suite is available from the Open Group at
|
||||
|
||||
ftp://ftp.rdg.opengroup.org/pub/unsupported/stdtools/hdrchk/
|
||||
|
||||
I've last run the suite on 2004-04-17 on a Linux/x86 system running
|
||||
a Fedora Core 2 test 2 + updates with the following results [*]:
|
||||
|
||||
FIPS No reported problems
|
||||
|
||||
POSIX90 No reported problems
|
||||
|
||||
XPG3 Prototypes are now in the correct header file
|
||||
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
*** Starting unistd.h
|
||||
Missing: extern char * cuserid();
|
||||
Missing: extern int rename();
|
||||
*** Completed unistd.h
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
XPG4 Prototype is now in the correct header file
|
||||
and the _POSIX2_C_VERSION symbol has been removed
|
||||
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
*** Starting unistd.h
|
||||
Missing: extern char * cuserid();
|
||||
Missing: #define _POSIX2_C_VERSION (-1L)
|
||||
*** Completed unistd.h
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
POSIX96 Prototype moved
|
||||
(using "base realtime threads" subsets)
|
||||
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
*** Starting unistd.h
|
||||
Missing: extern int pthread_atfork();
|
||||
*** Completed unistd.h
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
UNIX98 Prototypes moved and _POSIX2_C_VERSION removed
|
||||
(using "base realtime threads mse lfs" subset)
|
||||
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
*** Starting unistd.h
|
||||
Missing: extern char * cuserid();
|
||||
Missing: #define _POSIX2_C_VERSION (-1L)
|
||||
Missing: extern int pthread_atfork();
|
||||
*** Completed unistd.h
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
|
||||
That means all the reported issues are due to the headers having been
|
||||
cleaned up for recent POSIX/Unix specification versions. Duplicated
|
||||
prototypes have been removed and obsolete symbols have been removed.
|
||||
Which means that as far as the tests performed by the script go, the
|
||||
headers files comply to the current POSIX/Unix specification.
|
||||
|
||||
|
||||
[*] Since the scripts are not clever enough for the way gcc handles
|
||||
include files (namely, putting some of them in gcc-local directory) I
|
||||
copied over the iso646.h, float.h, and stddef.h headers and ignored the
|
||||
problems resulting from the split limits.h file).
|
||||
|
||||
|
||||
Technical C standards conformance issues in glibc
|
||||
=================================================
|
||||
|
||||
If you compile programs against glibc with __STRICT_ANSI__ defined
|
||||
(as, for example, by gcc -ansi, gcc -std=c89, gcc -std=iso1990:199409
|
||||
or gcc -std=c99), and use only the headers specified by the version of
|
||||
the C standard chosen, glibc will attempt to conform to that version
|
||||
of the C standard (as indicated by __STDC_VERSION__):
|
||||
|
||||
GCC options Standard version
|
||||
-ansi ISO/IEC 9899:1990
|
||||
-std=c89 ISO/IEC 9899:1990
|
||||
-std=iso9899:199409 ISO/IEC 9899:1990 as amended by Amd.1:1995
|
||||
-std=c99 ISO/IEC 9899:1999
|
||||
|
||||
(Note that -std=c99 is not available in GCC 2.95.2, and that no
|
||||
version of GCC presently existing implements the full C99 standard.)
|
||||
|
||||
You may then define additional feature test macros to enable the
|
||||
features from other standards, and use the headers defined in those
|
||||
standards (for example, defining _POSIX_C_SOURCE to be 199506L to
|
||||
enable features from ISO/IEC 9945-1:1996).
|
||||
|
||||
There are some technical ways in which glibc is known not to conform
|
||||
to the supported versions of the C standard, as detailed below. Some
|
||||
of these relate to defects in the standard that are expected to be
|
||||
fixed, or to compiler limitations.
|
||||
|
||||
|
||||
Defects in the C99 standard
|
||||
===========================
|
||||
|
||||
Some defects in C99 were corrected in Technical Corrigendum 1 to that
|
||||
standard. glibc follows the corrected specification.
|
||||
|
||||
|
||||
Implementation of library functions
|
||||
===================================
|
||||
|
||||
The implementation of some library functions does not fully follow the
|
||||
standard specification:
|
||||
|
||||
C99 added additional forms of floating point constants (hexadecimal
|
||||
constants, NaNs and infinities) to be recognised by strtod() and
|
||||
scanf(). The effect is to change the behavior of some strictly
|
||||
conforming C90 programs; glibc implements the C99 versions only
|
||||
irrespective of the standard version selected.
|
||||
|
||||
C99 added %a as another scanf format specifier for floating point
|
||||
values. This conflicts with the glibc extension where %as, %a[ and
|
||||
%aS mean to allocate the string for the data read. A strictly
|
||||
conforming C99 program using %as, %a[ or %aS in a scanf format string
|
||||
will misbehave under glibc if it does not include <stdio.h> and
|
||||
instead declares scanf itself; if it gets the declaration of scanf
|
||||
from <stdio.h>, it will use a C99-conforming version.
|
||||
|
||||
|
||||
Compiler limitations
|
||||
====================
|
||||
|
||||
The macros __STDC_IEC_559__, __STDC_IEC_559_COMPLEX__ and
|
||||
__STDC_ISO_10646__ are properly supposed to be constant throughout the
|
||||
translation unit (before and after any library headers are included).
|
||||
However, they mainly relate to library features, and GCC only knows to
|
||||
preinclude <stdc-predef.h> to get their definitions in version 4.8 and
|
||||
later. Programs that test them before including any standard headers
|
||||
may misbehave with older compilers.
|
||||
|
||||
GCC doesn't support the optional imaginary types. Nor does it
|
||||
understand the keyword _Complex before GCC 3.0. This has the
|
||||
corresponding impact on the relevant headers.
|
||||
|
||||
glibc's <tgmath.h> implementation is arcane but thought to work
|
||||
correctly; a clean and comprehensible version requires compiler
|
||||
builtins.
|
||||
|
||||
For most of the headers required of freestanding implementations,
|
||||
glibc relies on GCC to provide correct versions. (At present, glibc
|
||||
provides <stdint.h>, and GCC doesn't before version 4.5.)
|
||||
|
||||
The definition of math_errhandling conforms so long as no translation
|
||||
unit using math_errhandling is compiled with -fno-math-errno,
|
||||
-fno-trapping-math or options such as -ffast-math that imply these
|
||||
options. math_errhandling is only conditionally defined depending on
|
||||
__FAST_MATH__; the compiler does not provide the information needed
|
||||
for more exact definitions based on settings of -fno-math-errno and
|
||||
-fno-trapping-math, possibly for only some source files in a program.
|
||||
|
||||
|
||||
Issues with headers
|
||||
===================
|
||||
|
||||
None known.
|
66
NAMESPACE
66
NAMESPACE
@ -1,66 +0,0 @@
|
||||
Header Prefix Suffix
|
||||
|
||||
aio.h aio_, lio_, AIO_, LIO_
|
||||
complex.h cerf{,f,l}, cerfc{,f,l}, cexp2{,f,l},
|
||||
cexpm1{,f,l}, clog10{,f,l}, clog1p{,f,l},
|
||||
clog2{,f,l}, clgamma{,f,l}, ctgamma{,f,l}
|
||||
ctype.h is[a-z], to[a-z]
|
||||
dirent.h d_
|
||||
dlfcn.h RTLD_
|
||||
errno.h E
|
||||
fcntl.h l_, F_, O_, S_
|
||||
fmtmsg.h MM_
|
||||
fnmatch.h FNM_
|
||||
ftw.h FTW
|
||||
glob.h gl_, GLOB_
|
||||
grp.h gr_
|
||||
inttypes.h PRI[a-zX], SCN[a-zX]
|
||||
limits.h _MAX
|
||||
locale.h LC_[A-Z]
|
||||
mqueue.h mq_, MQ_
|
||||
ndbm.h dbm_, DBM_
|
||||
nl_types.h NL_
|
||||
poll.h pd_, ph_, ps_, POLL
|
||||
pthread.h pthread_, PTHREAD_
|
||||
pwd.h pw_
|
||||
regex.h re_, rm_, REG_
|
||||
sched.h sched_, SCHED_
|
||||
semaphore.h sem_, SEM_
|
||||
signal.h sa_, uc_, SIG[A-Z], SIG_[A-Z], SIG_[0-9a-z_]
|
||||
ss_, sv_
|
||||
si_, SI_, sigev_, SIGEV_, sival_, SA_,
|
||||
BUS_, CLD_, FPE_, ILL_, POLL_, SEGV_, SS_, SV_, TRAP_
|
||||
stdint.h int*_t, uint*_t, INT*_MAX, INT*_MIN,
|
||||
INT*_C, UINT*_MAX, UINT*_MIN, UINT*_C
|
||||
stdlib.h str[a-z]
|
||||
string.h str[a-z], wcs[a-z]
|
||||
stropts.h bi_, ic_, l_, sl_, str_,
|
||||
FLUSH[A-Z], I_, M_, MUXID_R[A-Z], S_, SND[A-Z], STR
|
||||
syslog.h LOG_
|
||||
sys/ipc.h ipc_, IPC_
|
||||
sys/mman.h shm_, MAP_, MCL_, MS_, PROT_
|
||||
sys/msg.h msg, MSG[A-Z], MSG_[A-Z]
|
||||
sys/resource.h rlim_, ru_, PRIO_, RLIM_, RLIMIT_, RUSAGE_
|
||||
sys/sem.h sem, SEM_
|
||||
sys/shm.h shm, SHM[A-Z], SHM_[A-Z]
|
||||
sys/socket.h AF_, MSG_, PF_, SO
|
||||
sys/stat.h st_, S_
|
||||
sys/statvfs.h f_, ST_
|
||||
sys/time.h fds_, it_, tv_, FD_, ITIMER_
|
||||
sys/times.h tms_
|
||||
sys/uio.h iov_, IOV_
|
||||
sys/utsname.h uts_
|
||||
sys/wait.h si_, W[A-Z], P_,
|
||||
BUS_, CLD_, FPE_, ILL_, POLL_, SEGV_, SI_, TRAP_
|
||||
termios.h c_, V, I, O, TC, B[0-9]
|
||||
time.h tm_
|
||||
clock_, timer_, it_, tv_,
|
||||
CLOCK_, TIMER_
|
||||
ucontext.h uc_, SS_
|
||||
ulimit.h UL_
|
||||
utime.h utim_
|
||||
utmpx.h ut_ _LVL, _TIME, _PROCESS
|
||||
wchar.h wcs[a-z]
|
||||
wctype.h is[a-z], to[a-z]
|
||||
wordexp.h we_, WRDE_
|
||||
ANY header _t
|
34
WUR-REPORT
34
WUR-REPORT
@ -1,34 +0,0 @@
|
||||
<unistd.h>:
|
||||
|
||||
lssek: Probably should be __wur but lseek(fd,SEEK_SET,0) will succeed if
|
||||
the descriptor is fine.
|
||||
lseek64: same
|
||||
|
||||
<stdio.h>:
|
||||
|
||||
setvbuf: if stream and buffer are fine and other parameters constant,
|
||||
it cannot really fail.
|
||||
fseek: see lseek
|
||||
fseeko: likewise
|
||||
fgetpos: similarly
|
||||
fsetpos: likewise
|
||||
|
||||
|
||||
<stdlib.h>:
|
||||
|
||||
atexit: it is guaranteed that a certain number of handlers can be
|
||||
registered, so some calls might need not be checked
|
||||
on_exit: same
|
||||
random functions: one might want to discard a number of results. In any
|
||||
case, no security problem
|
||||
|
||||
|
||||
putenv: probably SHOULD be marked, but we'll wait a bit.
|
||||
setenv: likewise
|
||||
unsetenv: likewise
|
||||
clearenv: likewise
|
||||
|
||||
mbstowcs: probably SHOULD be marked
|
||||
wcstombs: likewise
|
||||
|
||||
ptsname_r: probably SHOULD be marked
|
Loading…
Reference in New Issue
Block a user