In an effort to chase down a libc_r bug, I compiled libc_r with CFLAGS=-g
(and later CFLAGS=-g3), but ran into linker problems as a result.
blitz:~> gcc poll.c -pthread
/usr/lib/libc_r.so: undefined reference to `__sigisempty'
Even the simplest of C programs will get this linker error if using the
-pthread option.
So, __sigisempty is an inline function, defined in
/usr/include/sys/signalvar.h:
extern __inline int
__sigisempty(sigset_t *set)
{
int i;
for (i = 0; i < _SIG_WORDS; i++) {
if (set->__bits[i])
return (0);
}
return (1);
}
__sigisempty() is used in the expansion of SIGNOTEMPTY in
/usr/src/lib/libc_r/uthread/uthread_sig[wait].c. SIGNOTEMPTY is:
#define SIGNOTEMPTY(set) (!__sigisempty(&(set)))
Both of those files correctly #include <sys/signalvar.h>. If I compile
those two files without the -g flag, the linker error goes away.
In summary, it seems that using the -g flag to gcc can cause inline
functions to be ignored.
Can anyone shed some light on this?
Thanks,
Jason
To Unsubscribe: send mail to [EMAIL PROTECTED]
with "unsubscribe freebsd-current" in the body of the message