On my debian/sarge system with stock libc and php:
kef@flash:~$ nm --defined-only /usr/lib/libc.a|awk '$2 == "T" {print $3;}'|grep -v '^_' > libc.symbols kef@flash:~$ objdump -R `which php` | awk '{print $3;}' > php4.symbols kef@flash:~$ cat php4.symbols| while read f; do if grep -q "^$f$" libc.symbols; then echo "$f"; fi; done > php4-libc kef@flash:~$ wc -l * 758 libc.symbols 97 php4-libc 866 php4.symbols 1721 total kef@flash:~$ php -r 'echo 97/758 . "\n";' 0.127968337731
PHP4 uses only tenth (97) of 758 functions libc provides.
kef@flash:~$ cat php4-libc|while read f; do echo "$f `man -S 2:3 -w "$f"`"; done|grep man2|wc -l 22 kef@flash:~$ php -r 'echo 22/97 . "\n";' 0.226804123711
22 of overall 97 are just wrappers for kernel syscalls.
kef@flash:~$ mkdir x; cd x; ar x /usr/lib/libc.a; cd .. kef@flash:~$ cat php4-libc|while read f; do test -e "/usr/share/man/man3/$f.3.gz" && echo "$f" $((0x`objdump -h "x/$(nm --defined-only /usr/lib/libc.a -A 2>/dev/null |grep "T $f\$"|cut -d: -f2)" |grep text | awk '{print $3}'`)); done | awk '{sum+=$2} END {print sum}' 66161
Other 75 functions weight 64kb.
kef@flash:~$ ls -lh /lib/libc-2.3.2.so -rwxr-xr-x 1 root root 1.2M Apr 2 2006 /lib/libc-2.3.2.so
Do we realy need this 1.2M?