[uClibc] Functions listed by SuSv3 but not (yet) included in uClibc

Alexander van Heukelum heukelum at freemail.nl
Mon Mar 8 21:56:09 UTC 2004


Hi Erik, Manuel,

[snip](including "audit the headers" part)[/snip]

> > ndbm.h: [all=9] dbm_*
> You can use gdbm.

Ok, but they are still missing from uClibc.

> > string.h: strerror_r
> There is a complication with strerror_r.  The glibc extension function
> of the same name has a diffferent prototype and behavior.  See the
> comments in string.h.  The current workaround is to redirect strerror_r
> to either _susv3_strerror_r or _glibc_strerror_r, depending on the
> feature test macros.

Hmm, if I understand it right this problem can also be solved by having
a susv3-compatible strerror_r with it's proper name, and, in case
compatiblity with glibc is required, define a macro strerror_r that
redirects to _glibc_strerror_r.

> > setjmp.h: setsigjmp
> Only visible with the appropriate feature test macros.  See setjmp.h
> and the (conditional)
>  # define sigsetjmp(env, savemask) __sigsetjmp (env, savemask)

Does susv3 allow this? Why? (read: I don't like this! ;) )

> > monetary.h: strfmon
> Ugh... I've looked at strfmon.  Does anyone actually use it?

I don't think so, but it is in the Standard...

> Would you mind emailing me your complete list?

I also cleaned up the scripts and attached them. Cleaning up scripts
helped to spot a few errors... I omitted all symbols from time.h and
ucontext.h, there were two false positives (mktemp and mkstemp), and the
interface strerror_r has been moved to optional interfaces, because it
depends on TSF. Oh, and I missed 20 mathematical interfaces...

The result (which I believe is correct): mandatory interfaces: 40,
optional interfaces: 144 and mathematical interfaces: 203.

Greetings,
        Alexander


Here is the updated shortlist, followed by the long list...


Omissions from mandatory interfaces: (includes XSI, CX, LEGACY)
---------------------------------------------------------------
ndbm.h: [all=9] dbm_*
stdlib.h: _Exit, a64l, ecvt, fcvt, l64a, lcong48, lldiv, posix_openpt
utmpx.h: [all=6] *utx*
ucontext.h: [all=4] *context
nl_types.h: [all] catclose, catgets, catopen
unistd.h: getwd, ualarm
fmtmsg.h: fmtmsg
inttypes.h: imaxdiv
monetary.h: strfmon
setjmp.h: setsigjmp
sys/select.h: pselect
sys/socket.h: sockatmark
sys/wait.h: waitid
time.h: getdate


Unimplemented optional interfaces:
----------------------------------
trace.h: (depends on TRC) [all=50] posix_trace_*
pthread.h: (depends on THR) pthread_cleanup_{push,pop};
        pthread_attr_{g,s}etstack (depend on TSA TSS);
        [7] pthread_barrier* (depend on BAR);
        pthread_condattr_{g,s}et_clock (depend on CS);
        pthread_getcpuclockid (depends on TCT);
        pthread_mutex{,attr}_{g,s}etprioceiling (depend on TPP);
        pthread_mutexattr_{g,s}etprotocol (depend on TPP|TPI);
        pthread_rwlock_timed{rd,rw}lock (depend on TMO);
        pthread_setschedprio (depends on TPS);
        [5] pthread_spin_* (depend on SPI)
spawn.h: (depends on SPN) [all=21] posix_spawn*
mqueue.h: (depends on MSG) [all=10] mq_*
time.h: clock_getcpuclockid (depends on CPT); clock_getres,
        clock_settime, clock_nanosleep (depends on CS);
        [5] timer_* (depend on TMR);
aio.h: (depends on AIO) [all=8] aio_*, lio_*
stropts.h: (depends on XSR) isastream, {g,s}et{,p}msg, fattach, fdetach
sys/mman.h: posix_madvice (depends on ADV); posix_mem_offset,
        posix_typed_mem_getinfo, posix_typed_mem_open (depend on TYM);
        shm_open, shm_unlink (depend on SHM)
fcntl.h: posix_fadvice, posix_fallocate (depend on ADV)
signal.h: sigqueue (depends on RTS)
stdlib.h: posix_memalign (depends on ADV)
string.h: strerror_r (depends on TSF)


Unimplemented mathematical interfaces:
-------------------------------------- 
math.h: [127] many
complex.h: [65] all, except cabs
fenv.h: [11] all



Full list of omissions from mandatory interfaces:
-------------------------------------------------

-- ndbm.h --
dbm_clearerr (XSI)
dbm_close (XSI)
dbm_delete (XSI)
dbm_error (XSI)
dbm_fetch (XSI)
dbm_firstkey (XSI)
dbm_nextkey (XSI)  
dbm_open (XSI)
dbm_store (XSI)
-- (9) --

-- stdlib.h --
_Exit (-)
a64l (XSI)
ecvt (XSI&LEGACY)
fcvt (XSI&LEGACY)
l64a (XSI)
lcong48 (XSI)
lldiv (-)
posix_openpt (XSI)
-- (8) --

-- utmpx.h --
endutxent (XSI)
getutxent (XSI)
getutxid (XSI)
getutxline (XSI)
pututxline (XSI)
setutxent (XSI)
-- (6) --

-- ucontext.h --
getcontext (XSI)
makecontext (XSI)
setcontext (XSI)
swapcontext (XSI)
-- (4) --

-- nl_types.h --
catclose (XSI)
catgets (XSI)
catopen (XSI)
-- (3) --

-- unistd.h --
getwd (XSI&LEGACY)
ualarm (XSI)
-- (2) --

-- inttypes.h --
imaxdiv (-)
-- (1) --

-- fmtmsg.h --
fmtmsg (XSI)
-- (1) --

-- setjmp.h --
sigsetjmp (CX)
-- (1) --

-- monetary.h --   
strfmon (XSI)
-- (1) --

-- sys/select.h --
pselect (-)
-- (1) --

-- sys/socket.h --
sockatmark (-)
-- (1) --

-- sys/wait.h --
waitid (XSI)
-- (1) --

-- time.h --
getdate (XSI)
-- (1) --


Full list of unimplemented optional interfaces:
-----------------------------------------------

-- trace.h --
posix_trace_attr_destroy (TRC)
posix_trace_attr_getclockres (TRC)  
posix_trace_attr_getcreatetime (TRC)
posix_trace_attr_getgenversion (TRC)
posix_trace_attr_getinherited (TRC&TRI)
posix_trace_attr_getlogfullpolicy (TRC&TRL)
posix_trace_attr_getlogsize (TRC&TRL)
posix_trace_attr_getmaxdatasize (TRC)
posix_trace_attr_getmaxsystemeventsize (TRC)
posix_trace_attr_getmaxusereventsize (TRC)
posix_trace_attr_getname (TRC)
posix_trace_attr_getstreamfullpolicy (TRC)
posix_trace_attr_getstreamsize (TRC)
posix_trace_attr_init (TRC)
posix_trace_attr_setinherited (TRC&TRI)
posix_trace_attr_setlogfullpolicy (TRC&TRL)
posix_trace_attr_setlogsize (TRC&TRL)
posix_trace_attr_setmaxdatasize (TRC)
posix_trace_attr_setname (TRC)
posix_trace_attr_setstreamfullpolicy (TRC)
posix_trace_attr_setstreamsize (TRC)
posix_trace_clear (TRC)
posix_trace_close (TRC&TRL)
posix_trace_create (TRC)
posix_trace_create_withlog (TRC&TRL)
posix_trace_event (TRC)
posix_trace_eventid_equal (TRC)
posix_trace_eventid_get_name (TRC)
posix_trace_eventid_open (TRC)
posix_trace_eventset_add (TRC&TEF)
posix_trace_eventset_del (TRC&TEF)
posix_trace_eventset_empty (TRC&TEF)  
posix_trace_eventset_fill (TRC&TEF)
posix_trace_eventset_ismember (TRC&TEF)
posix_trace_eventtypelist_getnext_id (TRC)
posix_trace_eventtypelist_rewind (TRC)
posix_trace_flush (TRC&TRL)
posix_trace_get_attr (TRC)
posix_trace_get_filter (TRC&TEF)
posix_trace_get_status (TRC)
posix_trace_getnext_event (TRC)
posix_trace_open (TRC&TRL)
posix_trace_rewind (TRC&TRL)
posix_trace_set_filter (TRC&TEF)
posix_trace_shutdown (TRC)
posix_trace_start (TRC)
posix_trace_stop (TRC)
posix_trace_timedgetnext_event (TRC&TMO)
posix_trace_trid_eventid_open (TRC&TEF)
posix_trace_trygetnext_event (TRC)
-- (50) --

-- pthread.h -- 
pthread_attr_getstack (THR&TSA&TSS)
pthread_attr_setstack (THR&TSA&TSS)
pthread_barrier_destroy (THR&BAR)
pthread_barrier_init (THR&BAR)
pthread_barrier_wait (THR&BAR)
pthread_barrierattr_destroy (THR&BAR)
pthread_barrierattr_getpshared (THR&BAR&TSH)
pthread_barrierattr_init (THR&BAR)
pthread_barrierattr_setpshared (THR&BAR&TSH)
pthread_cleanup_pop (THR)
pthread_cleanup_push (THR)
pthread_condattr_getclock (THR&CS)
pthread_condattr_setclock (THR&CS)
pthread_getcpuclockid (THR&TCT)
pthread_mutex_getprioceiling (THR&TPP)
pthread_mutex_setprioceiling (THR&TPP)
pthread_mutexattr_getprioceiling (THR&TPP)
pthread_mutexattr_getprotocol (THR&TPP|TPI)
pthread_mutexattr_setprioceiling (THR&TPP)
pthread_mutexattr_setprotocol (THR&TPP|TPI)
pthread_rwlock_timedrdlock (THR&TMO)
pthread_rwlock_timedwrlock (THR&TMO)
pthread_setschedprio (THR&TPS)
pthread_spin_destroy (THR&SPI)
pthread_spin_init (THR&SPI)
pthread_spin_lock (THR&SPI)
pthread_spin_trylock (THR&SPI)
pthread_spin_unlock (THR&SPI)
-- (28) --

-- spawn.h -- 
posix_spawn (SPN)
posix_spawn_file_actions_addclose (SPN)
posix_spawn_file_actions_adddup2 (SPN)
posix_spawn_file_actions_addopen (SPN)
posix_spawn_file_actions_destroy (SPN)
posix_spawn_file_actions_init (SPN)
posix_spawnattr_destroy (SPN)
posix_spawnattr_getflags (SPN)
posix_spawnattr_getpgroup (SPN)
posix_spawnattr_getschedparam (SPN&PS)
posix_spawnattr_getschedpolicy (SPN&PS)
posix_spawnattr_getsigdefault (SPN)
posix_spawnattr_getsigmask (SPN)
posix_spawnattr_init (SPN)
posix_spawnattr_setflags (SPN)
posix_spawnattr_setpgroup (SPN)
posix_spawnattr_setschedparam (SPN&PS)
posix_spawnattr_setschedpolicy (SPN&PS)
posix_spawnattr_setsigdefault (SPN)
posix_spawnattr_setsigmask (SPN)
posix_spawnp (SPN)
-- (21) --

-- mqueue.h --
mq_close (MSG)
mq_getattr (MSG)
mq_notify (MSG)
mq_open (MSG)
mq_receive (MSG)
mq_send (MSG)
mq_setattr (MSG)
mq_timedreceive (MSG&TMO)
mq_timedsend (MSG&TMO)
mq_unlink (MSG)
-- (10) --

-- time.h --
clock_getcpuclockid (CPT)
clock_getres (TMR)
clock_nanosleep (CS)
clock_settime (TMR)
timer_create (TMR)
timer_delete (TMR)
timer_getoverrun (TMR)
timer_gettime (TMR)
timer_settime (TMR)
-- (9) --

-- aio.h --
aio_cancel (AIO)
aio_error (AIO)
aio_fsync (AIO)
aio_read (AIO)
aio_return (AIO)
aio_suspend (AIO)
aio_write (AIO)
lio_listio (AIO)
-- (8) --

-- stropts.h --
fattach (XSR)
fdetach (XSR)
getmsg (XSR)
getpmsg (XSR)
isastream (XSR)
putmsg (XSR)
putpmsg (XSR)
-- (7) --

-- sys/mman.h --
posix_madvise (MC9&ADV)
posix_mem_offset (MC9&TYM)
posix_typed_mem_get_info (MC9&TYM)
posix_typed_mem_open (MC9&TYM)
shm_open (MC9&SHM)
shm_unlink (MC9&SHM)
-- (6) --

-- fcntl.h --
posix_fadvise (ADV)
posix_fallocate (ADV)
-- (2) --

-- signal.h --
sigqueue (RTS)
-- (1) --

-- stdlib.h --
posix_memalign (ADV)
-- (1) --

-- string.h --
strerror_r (TSF)
-- (1) --


Full list of unimplemented mathematical interfaces:
---------------------------------------------------

-- math.h --
acosf (MATH)
acoshf (MATH)
acoshl (MATH)
acosl (MATH)
asinf (MATH)
asinhf (MATH)
asinhl (MATH)
asinl (MATH)
atan2f (MATH)
atan2l (MATH)
atanf (MATH)  
atanhf (MATH)
atanhl (MATH)
atanl (MATH)
cbrtf (MATH)
cbrtl (MATH)
ceill (MATH)
copysignf (MATH)
copysignl (MATH)
cosf (MATH)
coshf (MATH)
coshl (MATH)
cosl (MATH)
erfcf (MATH)
erfcl (MATH)
erff (MATH)
erfl (MATH)
exp2 (MATH)
exp2f (MATH)
exp2l (MATH)
expf (MATH)
expl (MATH)
expm1f (MATH)
expm1l (MATH)
fabsf (MATH)  
fabsl (MATH)
fdim (MATH)
fdimf (MATH)
fdiml (MATH)
floorl (MATH)
fma (MATH)
fmaf (MATH)
fmal (MATH)
fmax (MATH)
fmaxf (MATH)
fmaxl (MATH)
fmin (MATH)
fminf (MATH)
fminl (MATH)
fmodf (MATH)
fmodl (MATH)
frexpf (MATH)
frexpl (MATH)
hypotf (MATH)
hypotl (MATH)
ilogbf (MATH)
ilogbl (MATH)
ldexpf (MATH)
ldexpl (MATH)
lgammaf (MATH)
lgammal (MATH)
llrint (MATH)
llrintf (MATH)
llrintl (MATH)
llround (MATH)
llroundf (MATH)
llroundl (MATH)
log10f (MATH)
log10l (MATH)
log1pf (MATH)
log1pl (MATH)  
log2 (MATH)
log2f (MATH)
log2l (MATH)
logbf (MATH)
logbl (MATH)
logf (MATH)
logl (MATH)
lrint (MATH)
lrintf (MATH)
lrintl (MATH)   
lround (MATH)
lroundf (MATH)
lroundl (MATH)
modff (MATH)
modfl (MATH)
nanl (MATH)
nearbyint (MATH)
nearbyintf (MATH)
nearbyintl (MATH)
nextafterf (MATH)
nextafterl (MATH)
nexttoward (MATH)
nexttowardf (MATH)
nexttowardl (MATH)
powf (MATH)
powl (MATH)
remainderf (MATH)
remainderl (MATH)
remquo (MATH)
remquof (MATH)
remquol (MATH)
rintf (MATH)  
rintl (MATH)
round (MATH)
roundf (MATH)
roundl (MATH)
scalbln (MATH)
scalblnf (MATH)
scalblnl (MATH)
scalbnf (MATH)
scalbnl (MATH)
sinf (MATH)
sinhf (MATH)
sinhl (MATH)
sinl (MATH)
sqrtl (MATH)
tanf (MATH)
tanhf (MATH)
tanhl (MATH)
tanl (MATH)
tgamma (MATH)  
tgammaf (MATH)
tgammal (MATH)
trunc (MATH)
truncf (MATH)
truncl (MATH)
-- (127) -- 

-- complex.h -- 
cabsf (MATH)
cabsl (MATH)
cacos (MATH)
cacosf (MATH)
cacosh (MATH)
cacoshf (MATH)
cacoshl (MATH)
cacosl (MATH)
carg (MATH)
cargf (MATH)
cargl (MATH)
casin (MATH)
casinf (MATH)
casinh (MATH)
casinhf (MATH)
casinhl (MATH)  
casinl (MATH)
catan (MATH)
catanf (MATH)
catanh (MATH)
catanhf (MATH)
catanhl (MATH)
catanl (MATH)
ccos (MATH)
ccosf (MATH)
ccosh (MATH)
ccoshf (MATH)
ccoshl (MATH)
ccosl (MATH)
cexp (MATH)
cexpf (MATH)
cexpl (MATH)
cimag (MATH)
cimagf (MATH)
cimagl (MATH)
clog (MATH)
clogf (MATH)
clogl (MATH)
conj (MATH)
conjf (MATH)
conjl (MATH)
cpow (MATH)
cpowf (MATH)
cpowl (MATH)
cproj (MATH)
cprojf (MATH)
cprojl (MATH)
creal (MATH)
crealf (MATH)
creall (MATH)
csin (MATH)
csinf (MATH)  
csinh (MATH)
csinhf (MATH)
csinhl (MATH)
csinl (MATH)
csqrt (MATH)
csqrtf (MATH)
csqrtl (MATH)
ctan (MATH)
ctanf (MATH)
ctanh (MATH)   
ctanhf (MATH)
ctanhl (MATH)
ctanl (MATH)
-- (65) --  

-- fenv.h --
feclearexcept (MATH)
fegetenv (MATH)
fegetexceptflag (MATH)
fegetround (MATH)
feholdexcept (MATH)
feraiseexcept (MATH)
fesetenv (MATH)
fesetexceptflag (MATH)
fesetround (MATH)
fetestexcept (MATH)
feupdateenv (MATH)
-- (11) --

---- (387) ----
-------------- next part --------------
A non-text attachment was scrubbed...
Name: getheaders.tar.bz2
Type: application/octet-stream
Size: 2670 bytes
Desc: not available
Url : http://lists.busybox.net/pipermail/uclibc/attachments/20040308/a9202bbe/attachment.obj 


More information about the uClibc mailing list