Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 7 Jan 2000 14:19:20 -0800
From:      Jason Evans <jasone@canonware.com>
To:        current@freebsd.org
Subject:   __sigisempty() undefined if "cc -g" used.
Message-ID:  <20000107141920.J4938@sturm.canonware.com>

next in thread | raw e-mail | index | archive | help
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 majordomo@FreeBSD.org
with "unsubscribe freebsd-current" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20000107141920.J4938>