without SYS_ERRLIST support in uclibc we cannot compile the dhcp plugin of pppd. Reproducible: Always Steps to Reproduce: 1. 2. 3. Actual Results: compiling the ebuild you can see this error message: ---- for d in rp-pppoe dhcp radius; do make -w -C $d all; done make[2]: Entering directory `/var/tmp/portage/ppp-2.4.2-r10/work/ppp-2.4.2/pppd/plugins/rp-pppoe' gcc -Os -pipe -I../../../include/linux '-DVERSION="3.3"' -c -o discovery.o -fPIC discovery.c gcc -Os -pipe -I../../../include/linux '-DVERSION="3.3"' -c -o if.o -fPIC if.c gcc -Os -pipe -I../../../include/linux '-DVERSION="3.3"' -c -o common.o -fPIC common.c gcc -Os -pipe -I../../../include/linux '-DVERSION="3.3"' -c -o debug.o -fPIC debug.c ar -rc libplugin.a discovery.o if.o common.o debug.o gcc '-DRP_VERSION="3.3"' -Os -pipe -I../../../include/linux -I../../.. -c -o plugin.o -fPIC plugin.c gcc -o rp-pppoe.so -shared plugin.o libplugin.a make[2]: Leaving directory `/var/tmp/portage/ppp-2.4.2-r10/work/ppp-2.4.2/pppd/plugins/rp-pppoe' make[2]: Entering directory `/var/tmp/portage/ppp-2.4.2-r10/work/ppp-2.4.2/pppd/plugins/dhcp' cc -I../.. -I../../../include -Os -pipe -c -o dhcpc.o dhcpc.c dhcpc.c: In function `change_mode': dhcpc.c:147: error: `sys_errlist' undeclared (first use in this function) dhcpc.c:147: error: (Each undeclared identifier is reported only once dhcpc.c:147: error: for each function it appears in.) dhcpc.c: In function `dhcp_rx': dhcpc.c:211: error: `sys_errlist' undeclared (first use in this function) dhcpc.c: In function `dhcp_request_new': dhcpc.c:383: error: `sys_errlist' undeclared (first use in this function) make[2]: *** [dhcpc.o] Error 1 make[2]: Leaving directory `/var/tmp/portage/ppp-2.4.2-r10/work/ppp-2.4.2/pppd/plugins/dhcp' make[2]: Entering directory `/var/tmp/portage/ppp-2.4.2-r10/work/ppp-2.4.2/pppd/plugins/radius' gcc -Os -pipe -I../.. -I../../../include -Iradiusclient/include -DCHAPMS=1 -DMPPE=1 -DMAXOCTETS=1 -c -o radius.o -fPIC radius.c radius.c: In function `add_avp': radius.c:178: warning: initialization makes pointer from integer without a cast gcc -o radius.so -shared radius.o radiusclient/lib/.libs/libradiusclient.a gcc -Os -pipe -I../.. -I../../../include -Iradiusclient/include -DCHAPMS=1 -DMPPE=1 -DMAXOCTETS=1 -c -o radattr.o -fPIC radattr.c gcc -o radattr.so -shared radattr.o gcc -Os -pipe -I../.. -I../../../include -Iradiusclient/include -DCHAPMS=1 -DMPPE=1 -DMAXOCTETS=1 -c -o radrealms.o -fPIC radrealms.c gcc -o radrealms.so -shared radrealms.o make[2]: Leaving directory `/var/tmp/portage/ppp-2.4.2-r10/work/ppp-2.4.2/pppd/plugins/radius' --- Expected Results: adding UCLIBC_HAS_SYS_ERRLIST=y to uclibc config you can fix the problem Portage 2.0.51-r3 (uclibc/x86/hardened, gcc-3.3.5, uclibc-0.9.26-r7, 2.6.10-hardened-r1 i686) ================================================================= System uname: 2.6.10-hardened-r1 i686 AMD Athlon(TM) XP 2500+ Gentoo Base System version 1.4.16 ccache version 2.3 [enabled] Autoconf: sys-devel/autoconf-2.59-r5 Automake: sys-devel/automake-1.8.5-r1 Binutils: sys-devel/binutils-2.15.92.0.2-r1 Headers: sys-kernel/linux-headers-2.4.21-r1 Libtools: sys-devel/libtool-1.5.2-r7 ACCEPT_KEYWORDS="x86" AUTOCLEAN="yes" CFLAGS="-Os -pipe" CHOST="i386-pc-linux-uclibc" COMPILER="" CONFIG_PROTECT="/etc /usr/kde/2/share/config /usr/kde/3/share/config /usr/share/config /var/qmail/control" CONFIG_PROTECT_MASK="/etc/gconf /etc/terminfo /etc/env.d" CXXFLAGS="-Os -pipe" DISTDIR="/usr/portage/distfiles" FEATURES="autoaddcvs autoconfig buildpkg ccache digest distlocks nodoc noinfo noman sandbox sfperms strict" GENTOO_MIRRORS="http://mirror.switch.ch/mirror/gentoo/ ftp://ftp.wh2.tu-dresden.de/pub/mirrors/gentoo ftp://mirror.switch.ch/mirror/gentoo/" MAKEOPTS="-j1" PKGDIR="/usr/portage/packages/x86/embedded" PORTAGE_TMPDIR="/var/tmp" PORTDIR="/usr/portage" PORTDIR_OVERLAY="/usr/local/portage" SYNC="rsync://10.0.4.11/gentoo-portage" USE="berkdb crypt dhcp gdbm hardened hostap-noplx justify libwww make-busybox-symlinks multicall ncurses oggvorbis pcmcia pic pie png readline snmp ssl tcpd uclibc x86 zlib"
you should convert the program to use strerror()
ok I'll work on it
strerror() and SYS_ERRLIST[] are interchangeable, so shouldnt be too much work ;) i would suggest sending the patch upstream and apply this for all setups (not just uclibc) ... SYS_ERRLIST is the old style method of getting error strings
done. You can find the patch here: http://dev.gentoo.org/~xmerlin/ppp-sys_error_to_strerror.patch I'll file a bug to request the integration in the ppp ebuild, and I'll ask to integrate it upstream.