On Wed, Aug 29, 2007 at 11:02:17PM -0400, Filipus Klutiero wrote:
> Hi Sébastien,
> since glibc 2.6-2, Debian's glibc and vanilla glibc are different WRT this 
> bug. The bug is fixed with Debian's glibc, but not vanilla glibc. It's not 
> clear whether this is a gcc or glibc bug. Is it OK if we consider this report 
> to be only about an incompatibility between Debian's glibc and gcc, and thus 
> fixed, or do you consider the problem a gcc bug which isn't fixed?
> 

Further investigation showed that the problem was in the glibc.
Visibility was improperly defined. The patch unhides this problem, it's not the 
culprit.

If you want the gory details, please see the thread glibc is broken because of 
gcc on parisc-linux or debian-hppa 
mailing list.

I would like to quote the conclusion by aurelien jarno :
--------------------------------------------------------
The patch below based on the m68k version of sysdep-cancel.h fixes the
problem.


2007-07-10  Aurelien Jarno  <[EMAIL PROTECTED]>

        * sysdeps/unix/sysv/linux/hppa/linuxthreads/sysdep-cancel.h:
        (__local_multiple_threads): Declare as hidden only in libc and
        in libpthread.

Index: ports/sysdeps/unix/sysv/linux/hppa/linuxthreads/sysdep-cancel.h 
===================================================================
--- ports/sysdeps/unix/sysv/linux/hppa/linuxthreads/sysdep-cancel.h.orig
+++ ports/sysdeps/unix/sysv/linux/hppa/linuxthreads/sysdep-cancel.h
@@ -206,7 +206,11 @@
 # endif
 
 # ifndef __ASSEMBLER__
- extern int __local_multiple_threads attribute_hidden;
+#  if !defined NOT_IN_libc || defined IS_IN_libpthread
+extern int __local_multiple_threads attribute_hidden;
+#  else
+extern int __local_multiple_threads;
+#  endif
 #  define SINGLE_THREAD_P __builtin_expect (__local_multiple_threads == 0, 1)
 # else
 /* This ALT version requires newer kernel support */

---------------------------------------------------------

Reply via email to