Inetd.c sigpause() --> __xpg_sigpause() not in uClibc
John Z. Bohach
jzb at aexorsyst.com
Tue Nov 8 15:40:43 PST 2005
The recent synching of inetd.c with the Slackware version has the undesirable
sideffect of using sigpause() (network/inetd.c, line 1386).
According to the sigpause() manpage, sigpause is deprecated and sigsuspend()
should be used instead.
Philosophical arguments aside, when buildroot attempts to build busybox with
uClibc, the sigpause call is mangled to __xpg_sigpause(), perhaps for POSIX
compliance, though the rationale for such mangling's a bit beyond my
expertise. However, there is no __xpg_sigpause provided by uClibc, just
__sigpause().
So you guessed it, linker chokes with undefined reference error to
__xpg_sigpause(), which is why I'm emailing this list...
In looking at the diff that caused the changed:
http://www.busybox.net/cgi-bin/viewcvs.cgi/trunk/busybox/networking/inetd.c?rev=11732&r1=11010&r2=11732
it appears that reverting the few lines around the sigpause() back to the way
it used to be with the sigsuspend in rev. 11010 would not do any harm, though
appearances can be deceiving. Either that, or try to get uClibc to add
__xpg_sigpause as a weak-definition for __sigpause might also work. But
since sigpause is deprecated, I'd vote for the busybox solution (to not use
sigpause()).
I can test this out and send the results back, if anyone's interested...
Regards,
John
P.S.: By the way, this isn't an issue with glibc, since glibc provides
__xpg_sigpause (as well as __sigpause).
--
### Any similarity between my views and the truth is completely ###
### coincidental, except that they are endorsed by NO ONE ###
More information about the busybox
mailing list