|  | @@ -2,13 +2,13 @@ uClibc attempts to fully (and rigorously) support "The Open Group Base
 | 
	
		
			
				|  |  |  Specifications Issue 6 IEEE Std 1003.1, 2003 Edition" (aka SuSv3).  However, as
 | 
	
		
			
				|  |  |  with any standard, they sometimes require things that are either impossible or
 | 
	
		
			
				|  |  |  are Completely Stupid(tm).  Therefore, we cannot claim full compliance, and
 | 
	
		
			
				|  |  | -there may be some area of uClibc that differ from the requirements of this
 | 
	
		
			
				|  |  | +there may be some areas of uClibc that differ from the requirements of this
 | 
	
		
			
				|  |  |  specification.  This document attempts to list these differences and, when
 | 
	
		
			
				|  |  |  completed, will contain a full list of all relevant differences between uClibc
 | 
	
		
			
				|  |  |  and the requirements of the SuSv3.
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -1) The uClibc setlocale() function is not threadsafe.  
 | 
	
		
			
				|  |  | +*) The uClibc setlocale() function is not threadsafe.
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      SuSv3 states that "The locale state is common to all threads
 | 
	
		
			
				|  |  |      within a process.".  But it does not explicitly mention
 | 
	
	
		
			
				|  | @@ -24,12 +24,84 @@ and the requirements of the SuSv3.
 | 
	
		
			
				|  |  |      using any locale or ctype functions until the setlocale()
 | 
	
		
			
				|  |  |      call has finished.
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -2) Some functions required by SuSv3 are not currently implemented.
 | 
	
		
			
				|  |  | -    Functions listed by SuSv3 but not (yet) included in uClibc:
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -        fmtmsg			<not implemented>
 | 
	
		
			
				|  |  | -        <others?>
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -More to follow when we think of it...
 | 
	
		
			
				|  |  | +----------------------------------------------------------------
 | 
	
		
			
				|  |  | +heukelum -- heukelum at freemail dot nl writes:
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +Hi everyone,
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +I think uClibc is a great project! And, since I found the file
 | 
	
		
			
				|  |  | +docs/uClibc_vs_SuSv3.txt in the source tarball which mentioned only
 | 
	
		
			
				|  |  | +fmtmsg as a missing function compared to the SUSv3, I got curious about
 | 
	
		
			
				|  |  | +the length of the list denoted by "<others?>". So I built the
 | 
	
		
			
				|  |  | +20040305-snapshot using allyesconfig, extracted the symbols from the
 | 
	
		
			
				|  |  | +(dynamic) libraries, and compared that list to the SUSv3 header files...
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +The largest source of omissions was the mathematical interface
 | 
	
		
			
				|  |  | +(183/355), followed by optional interfaces (134/355). The result: only
 | 
	
		
			
				|  |  | +38 non-mathematical interfaces are missing compared to the minimal
 | 
	
		
			
				|  |  | +SUSv3! Naming only one function as missing was over-enthousiastic, but
 | 
	
		
			
				|  |  | +the result was better than I anticipated.
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +A compact list of omissions is appended.
 | 
	
		
			
				|  |  | +I hope this was a helpful exercise ;)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +Greetings,
 | 
	
		
			
				|  |  | +         Alexander
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +P.S. uClibc was compiled with thread support, but did not provide the
 | 
	
		
			
				|  |  | +interfaces pthread_cleanup_push and pthread_cleanup_pop.
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +Omissions from obligatory interfaces:
 | 
	
		
			
				|  |  | +-------------------------------------
 | 
	
		
			
				|  |  | +stdlib.h: _Exit, a64l, l64a, lcong48, lldiv, mkstemp, posix_openpt;
 | 
	
		
			
				|  |  | +         mktemp, ecvt, fcvt
 | 
	
		
			
				|  |  | +ndbm.h: [all=9] dbm_*
 | 
	
		
			
				|  |  | +utmpx.h: [all=6] *utx* (but functions without "x" do exist!)
 | 
	
		
			
				|  |  | +nl_types.h: [all] catclose, catgets, catopen
 | 
	
		
			
				|  |  | +unistd.h: getwd, ualarm
 | 
	
		
			
				|  |  | +inttypes.h: imaxdiv
 | 
	
		
			
				|  |  | +fmtmsg.h: fmtmsg
 | 
	
		
			
				|  |  | +string.h: strerror_r
 | 
	
		
			
				|  |  | +setjmp.h: setsigjmp
 | 
	
		
			
				|  |  | +monetary.h: strfmon
 | 
	
		
			
				|  |  | +sys/select.h: pselect
 | 
	
		
			
				|  |  | +sys/socket.h: sockatmark
 | 
	
		
			
				|  |  | +sys/wait.h: waitid
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +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_*
 | 
	
		
			
				|  |  | +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)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +Unimplemented mathematical interfaces:
 | 
	
		
			
				|  |  | +--------------------------------------
 | 
	
		
			
				|  |  | +math.h: [126] many
 | 
	
		
			
				|  |  | +complex.h: [46] all, except cabs
 | 
	
		
			
				|  |  | +fenv.h: [11] all
 | 
	
		
			
				|  |  | +_______________________________________________
 |