Re: [gentoo-user] Build error in threads.c, maybe related to nptlonly use flag.

2006-05-12 Thread Richard Fish

On 5/12/06, Bob Young <[EMAIL PROTECTED]> wrote:

checking for pthread_mutexattr_setrobust_np... no



checking for pthread_mutexattr_setrobust_np in -lc... yes



threads.c:145: error: `pthread_mutexattr_setrobust_np' undeclared (first use
in this function)



I think the "nptl nptlonly " use flags are relevant to this, but am not
sure. I know the "kerberos" flag is related, but since the box will be
interacting with an Active Directory domain controler kerberos seems
appropiate to have.


Not an nptl issue, looks like a bug in the configure to me.

The configure is finding that glibc has the
pthread_mutexattr_setrobust_np function, so in threads.c it is
activating this piece of code:

# ifdef HAVE_PTHREAD_MUTEXATTR_SETROBUST_NP_IN_THREAD_LIB
   || &pthread_mutexattr_setrobust_np == 0
# endif

However, looking at /usr/include/pthread.h, we find this:

#ifdef __USE_GNU
/* Get the robustness flag of the mutex attribute ATTR.  */
extern int pthread_mutexattr_getrobust_np (__const pthread_mutexattr_t *__attr,
  int *__robustness) __THROW;

/* Set the robustness flag of the mutex attribute ATTR.  */
extern int pthread_mutexattr_setrobust_np (pthread_mutexattr_t *__attr,
  int __robustness) __THROW;
#endif

So these functions are GNU only, and a program is supposed to set the
define the __USE_GNU flag if it wants to use them.

This has already been reported to bugzilla, with patches:

http://bugs.gentoo.org/show_bug.cgi?id=125966

If you don't want to try and patch it yourself, try masking out this
version of mit-krb in /etc/portage/package.mask so you build the
previous one.


Comment: Okay...It's available in "-lc" what does that mean?


That the function is available in glibc (GNU libc).


and if it's available why is it causing a build error?


The program didn't see the prototype of the function, because it
didn't define __USE_GNU


Comment: What does "-lc" mean?


Link against the 'c' library.  The linker adds a 'lib' prefix and a
'.so' suffix to whatever is passed to the -l option, to come up with
libc.so.

Another example, -lqt means to link against libqt.so.


Would declaring
pthread_mutexattr_setrobust_np as "external" on the condition of some define
solve the problem?


Actually, that _is_ the problem!!


Again sorry for the long post,


No problem, you gave _plenty_ of information to figure out what was
wrong.  Always a good thing!

-Richard

--
gentoo-user@gentoo.org mailing list



RE: [gentoo-user] Build error in threads.c, maybe related to nptlonly use flag.

2006-05-12 Thread Bob Young


> -Original Message-
> From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED]
> Behalf Of Richard Fish
> Sent: Friday, May 12, 2006 10:48 AM
> To: gentoo-user@lists.gentoo.org
> Subject: Re: [gentoo-user] Build error in threads.c, maybe related to
> nptlonly use flag.
> 
> Not an nptl issue, looks like a bug in the configure to me.
> 
> The configure is finding that glibc has the
> pthread_mutexattr_setrobust_np function, so in threads.c it is
> activating this piece of code:
 
Thanks for the detailed explaination and the solution, much appreciated.

Regards,
Bob Young

-- 
gentoo-user@gentoo.org mailing list