<h3>musl vs c99 api</h3>
-<h4>commit</h4><p>commit <a href="http://git.etalabs.net/cgi-bin/gitweb.cgi?p=musl;a=commit;h=af3d5405b8d7b00c121643d7a0c0b9bb31cc7139">af3d5405b8d7b00c121643d7a0c0b9bb31cc7139</a><br>Date: Wed Jun 29 00:42:42 2011 -0400<br><br> work around linux bug in mprotect<br> <br> per POSIX: The mprotect() function shall change the access protections<br> to be that specified by prot for those whole pages containing any part<br> of the address space of the process starting at address addr and<br> continuing for len bytes.<br> <br> on the other hand, linux mprotect fails with EINVAL if the base<br> address and/or length is not page-aligned, so we have to align them<br> before making the syscall.
+<h4>commit</h4><p>commit <a href="http://git.etalabs.net/cgi-bin/gitweb.cgi?p=musl;a=commit;h=c0fe5b9da9f98b83262717c0090817f1fbb3d8a0">c0fe5b9da9f98b83262717c0090817f1fbb3d8a0</a><br>Date: Fri Jul 22 00:25:56 2011 -0400<br><br> check for fd exhaustion in forkpty<br> <br> we cannot report failure after forking, so the idea is to ensure prior<br> to fork that fd 0,1,2 exist. this will prevent dup2 from possibly<br> hitting a resource limit and failing in the child process. fcntl<br> rather than dup2 is used prior to forking to avoid race conditions.
<h4>legend</h4><ul><li>status: musl implementation status summary<ul><li>(empty) - implemented<li>nosym - prototype found in include files (see decl) but not in libc.a (see sym)<li>nodecl - symbol is in libc.a but not declared in a public header<li>missing - neither in include files (see decl) nor in libc.a (see sym)</ul><li>sym: external symbol kind as found by `nm libc.a` (symbol kind only reported once)<ul><li>C - symbol is common (uninitialized data)<li>D - symbol is in the initialized data section<li>R - symbol is in the read only data section<li>T - symbol is in the text section<li>V - weak object<li>W - weak symbol</ul><li>decl: kind of declaration as found by `ctags -R include` (every occurance is reported, arch specific definitions are not linked)<ul><li>d - macro definition<li>t - typedef<li>s - struct declaration<li>u - union declaration<li>p - function prototype<li>x - external and forward variable declaration</ul></ul>
<h4>table</h4><table border=1><tr><th colspan=3>musl<th colspan=4>c99<tr><th>status<th>sym<th>decl<th>name<th>header<th>proto<th>section
<tr><td>missing<td> <td> <td>NDEBUG<td>assert.h<td> <td>B.1 Diagnostics
<h3>musl vs posix api</h3>
-<h4>commit</h4><p>commit <a href="http://git.etalabs.net/cgi-bin/gitweb.cgi?p=musl;a=commit;h=af3d5405b8d7b00c121643d7a0c0b9bb31cc7139">af3d5405b8d7b00c121643d7a0c0b9bb31cc7139</a><br>Date: Wed Jun 29 00:42:42 2011 -0400<br><br> work around linux bug in mprotect<br> <br> per POSIX: The mprotect() function shall change the access protections<br> to be that specified by prot for those whole pages containing any part<br> of the address space of the process starting at address addr and<br> continuing for len bytes.<br> <br> on the other hand, linux mprotect fails with EINVAL if the base<br> address and/or length is not page-aligned, so we have to align them<br> before making the syscall.
+<h4>commit</h4><p>commit <a href="http://git.etalabs.net/cgi-bin/gitweb.cgi?p=musl;a=commit;h=c0fe5b9da9f98b83262717c0090817f1fbb3d8a0">c0fe5b9da9f98b83262717c0090817f1fbb3d8a0</a><br>Date: Fri Jul 22 00:25:56 2011 -0400<br><br> check for fd exhaustion in forkpty<br> <br> we cannot report failure after forking, so the idea is to ensure prior<br> to fork that fd 0,1,2 exist. this will prevent dup2 from possibly<br> hitting a resource limit and failing in the child process. fcntl<br> rather than dup2 is used prior to forking to avoid race conditions.
<h4>legend</h4><ul><li>status: musl implementation status summary<ul><li>(empty) - implemented<li>nosym - prototype found in include files (see decl) but not in libc.a (see sym)<li>nodecl - symbol is in libc.a but not declared in a public header<li>missing - neither in include files (see decl) nor in libc.a (see sym)</ul><li>sym: external symbol kind as found by `nm libc.a` (symbol kind only reported once)<ul><li>C - symbol is common (uninitialized data)<li>D - symbol is in the initialized data section<li>R - symbol is in the read only data section<li>T - symbol is in the text section<li>V - weak object<li>W - weak symbol</ul><li>decl: kind of declaration as found by `ctags -R include` (every occurance is reported)<ul><li>d - macro definition<li>p - function prototype<li>x - external and forward variable declaration</ul></ul><p>(any option mark found in the synopsis of a manual is listed in the option column, this is often wrong)<p>(STREAMS and posix_trace* api is excluded)
<h4>table</h4><table border=1><tr><th colspan=3>musl<th colspan=4>posix<tr><th>status<th>sym<th>decl<th>name<th>header<th>option<th>desc
<tr><td> <td> <td><a href="http://git.etalabs.net/cgi-bin/gitweb.cgi?p=musl;a=blob;f=include/sys/select.h#l27">d</a> <td><a href="http://pubs.opengroup.org/onlinepubs/9699919799/functions/FD_CLR.html">FD_CLR</a><td> <a href="http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/sys_select.h.html">sys_select.h</a><td> <td>pselect, select - synchronous I/O multiplexing
<tr><td> <td>T<td><a href="http://git.etalabs.net/cgi-bin/gitweb.cgi?p=musl;a=blob;f=include/unistd.h#l116">p</a> <td><a href="http://pubs.opengroup.org/onlinepubs/9699919799/functions/getlogin.html">getlogin</a><td> <a href="http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/unistd.h.html">unistd.h</a><td> <td>getlogin, getlogin_r - get login name
<tr><td> <td>T<td><a href="http://git.etalabs.net/cgi-bin/gitweb.cgi?p=musl;a=blob;f=include/unistd.h#l117">p</a> <td><a href="http://pubs.opengroup.org/onlinepubs/9699919799/functions/getlogin_r.html">getlogin_r</a><td> <a href="http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/unistd.h.html">unistd.h</a><td> <td>getlogin, getlogin_r - get login name
<tr><td> <td>T<td><a href="http://git.etalabs.net/cgi-bin/gitweb.cgi?p=musl;a=blob;f=include/netdb.h#l63">p</a> <td><a href="http://pubs.opengroup.org/onlinepubs/9699919799/functions/getnameinfo.html">getnameinfo</a><td> <a href="http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/sys_socket.h.html">sys_socket.h</a> <a href="http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/netdb.h.html">netdb.h</a><td> <td>getnameinfo - get name information
-<tr><td>nosym<td> <td><a href="http://git.etalabs.net/cgi-bin/gitweb.cgi?p=musl;a=blob;f=include/netdb.h#l118">p</a> <td><a href="http://pubs.opengroup.org/onlinepubs/9699919799/functions/getnetbyaddr.html">getnetbyaddr</a><td> <a href="http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/netdb.h.html">netdb.h</a><td> <td>endnetent, getnetbyaddr, getnetbyname, getnetent, setnetent - network database functions
-<tr><td>nosym<td> <td><a href="http://git.etalabs.net/cgi-bin/gitweb.cgi?p=musl;a=blob;f=include/netdb.h#l119">p</a> <td><a href="http://pubs.opengroup.org/onlinepubs/9699919799/functions/getnetbyname.html">getnetbyname</a><td> <a href="http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/netdb.h.html">netdb.h</a><td> <td>endnetent, getnetbyaddr, getnetbyname, getnetent, setnetent - network database functions
+<tr><td> <td>T<td><a href="http://git.etalabs.net/cgi-bin/gitweb.cgi?p=musl;a=blob;f=include/netdb.h#l118">p</a> <td><a href="http://pubs.opengroup.org/onlinepubs/9699919799/functions/getnetbyaddr.html">getnetbyaddr</a><td> <a href="http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/netdb.h.html">netdb.h</a><td> <td>endnetent, getnetbyaddr, getnetbyname, getnetent, setnetent - network database functions
+<tr><td> <td>T<td><a href="http://git.etalabs.net/cgi-bin/gitweb.cgi?p=musl;a=blob;f=include/netdb.h#l119">p</a> <td><a href="http://pubs.opengroup.org/onlinepubs/9699919799/functions/getnetbyname.html">getnetbyname</a><td> <a href="http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/netdb.h.html">netdb.h</a><td> <td>endnetent, getnetbyaddr, getnetbyname, getnetent, setnetent - network database functions
<tr><td> <td>W<td><a href="http://git.etalabs.net/cgi-bin/gitweb.cgi?p=musl;a=blob;f=include/netdb.h#l117">p</a> <td><a href="http://pubs.opengroup.org/onlinepubs/9699919799/functions/getnetent.html">getnetent</a><td> <a href="http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/netdb.h.html">netdb.h</a><td> <td>endnetent, getnetbyaddr, getnetbyname, getnetent, setnetent - network database functions
<tr><td> <td>T<td><a href="http://git.etalabs.net/cgi-bin/gitweb.cgi?p=musl;a=blob;f=include/getopt.h#l8">p</a> <a href="http://git.etalabs.net/cgi-bin/gitweb.cgi?p=musl;a=blob;f=include/unistd.h#l121">p</a> <td><a href="http://pubs.opengroup.org/onlinepubs/9699919799/functions/getopt.html">getopt</a><td> <a href="http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/unistd.h.html">unistd.h</a><td> <td>getopt, optarg, opterr, optind, optopt - command option parsing
<tr><td> <td>T<td><a href="http://git.etalabs.net/cgi-bin/gitweb.cgi?p=musl;a=blob;f=include/sys/socket.h#l46">p</a> <td><a href="http://pubs.opengroup.org/onlinepubs/9699919799/functions/getpeername.html">getpeername</a><td> <a href="http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/sys_socket.h.html">sys_socket.h</a><td> <td>getpeername - get the name of the peer socket
<tr><td>nosym<td> <td><a href="http://git.etalabs.net/cgi-bin/gitweb.cgi?p=musl;a=blob;f=include/math.h#l311">p</a> <td><a href="http://pubs.opengroup.org/onlinepubs/9699919799/functions/y1.html">y1</a><td> <a href="http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/math.h.html">math.h</a><td> <a href="http://pubs.opengroup.org/onlinepubs/9699919799/help/codes.html#XSI">XSI</a><td>y0, y1, yn - Bessel functions of the second kind
<tr><td>nosym<td> <td><a href="http://git.etalabs.net/cgi-bin/gitweb.cgi?p=musl;a=blob;f=include/math.h#l312">p</a> <td><a href="http://pubs.opengroup.org/onlinepubs/9699919799/functions/yn.html">yn</a><td> <a href="http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/math.h.html">math.h</a><td> <a href="http://pubs.opengroup.org/onlinepubs/9699919799/help/codes.html#XSI">XSI</a><td>y0, y1, yn - Bessel functions of the second kind
</table>
-<h4>stats</h4><ul><li>missing: 137<li>nosym: 125<li>nodecl: 3</ul>
+<h4>stats</h4><ul><li>missing: 137<li>nosym: 123<li>nodecl: 3</ul>