[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#189431: g++-3.3: unterminated #ifndef in atomicity.h



Package: g++-3.3
Version: 1:3.3-0pre4
Severity: grave
Tags: sid
Justification: renders package unusable

All my compiles act up, eg:

<CUT>
if g++-3.3 -DHAVE_CONFIG_H -I. -I. -I..     -Wall -W -Wformat=2 -Wfloat-equal -Wundef -Wshadow -Wpointer-arith -Wcast-qual -Wcast-align -Wwrite-strings -Wconversion -Wmissing-noreturn -Wmissing-format-attribute -Wpacked -Wredundant-decls -Winline -fmessage-length=0 -Wctor-dtor-privacy -Wnon-virtual-dtor  -Wreorder -Wsign-promo -fno-rtti  -g -O2 -MT client.o -MD -MP -MF ".deps/client.Tpo" \
  -c -o client.o `test -f 'client.cc' || echo './'`client.cc; \
then mv ".deps/client.Tpo" ".deps/client.Po"; \
else rm -f ".deps/client.Tpo"; exit 1; \
fi
In file included from /usr/include/c++/3.3/bits/stl_alloc.h:91,
                 from /usr/include/c++/3.3/vector:68,
                 from client.cc:8:
/usr/include/c++/3.3/i386-linux/bits/atomicity.h:2:1: unterminated #ifndef
In file included from /usr/include/c++/3.3/bits/basic_string.h:45,
                 from /usr/include/c++/3.3/string:53,
                 from error.hh:10,
                 from client.cc:31:
/usr/include/c++/3.3/i386-linux/bits/atomicity.h:2:1: unterminated #ifndef
In file included from /usr/include/c++/3.3/bits/ios_base.h:45,
                 from /usr/include/c++/3.3/ios:49,
                 from /usr/include/c++/3.3/ostream:45,
                 from /usr/include/c++/3.3/iostream:45,
                 from error.hh:11,
                 from client.cc:31:
/usr/include/c++/3.3/i386-linux/bits/atomicity.h:2:1: unterminated #ifndef
In file included from /usr/include/c++/3.3/bits/locale_classes.h:48,
                 from /usr/include/c++/3.3/bits/ios_base.h:47,
                 from /usr/include/c++/3.3/ios:49,
                 from /usr/include/c++/3.3/ostream:45,
                 from /usr/include/c++/3.3/iostream:45,
                 from error.hh:11,
                 from client.cc:31:
/usr/include/c++/3.3/i386-linux/bits/atomicity.h:2:1: unterminated #ifndef
make[2]: *** [client.o] Error 1
<PASTE>

gcc-3.2 works fine...

diff -u:

--- /usr/include/c++/3.3/i386-linux/bits/atomicity.h    2003-04-13 08:15:31.000000000 +0200
+++ /usr/include/c++/3.2/i386-linux/bits/atomicity.h    2003-04-16 06:58:09.000000000 +0200
@@ -60,9 +60,9 @@


 #else
-// Low-level functions for atomic operations: Generic version  -*- C++ -*-
+// Low-level functions for atomic operations: x86, x < 4 version  -*- C++ -*-

-// Copyright (C) 1999, 2001, 2002, 2003 Free Software Foundation, Inc.
+// Copyright (C) 1999, 2000, 2001 Free Software Foundation, Inc.
 //
 // This file is part of the GNU ISO C++ Library.  This library is free
 // software; you can redistribute it and/or modify it under the
@@ -92,49 +92,32 @@
 #ifndef _BITS_ATOMICITY_H
 #define _BITS_ATOMICITY_H      1

-#include <bits/gthr.h>
-
-#define _GLIBCPP_NEED_GENERIC_MUTEX
-
 typedef int _Atomic_word;

-namespace __gnu_cxx
-{
-  extern __gthread_mutex_t _Atomic_add_mutex;
-
-#ifndef __GTHREAD_MUTEX_INIT
-  extern __gthread_once_t _Atomic_add_mutex_once;
-  extern void __gthread_atomic_add_mutex_once();
-#endif
-}
-
-static inline _Atomic_word
+static inline _Atomic_word
 __attribute__ ((__unused__))
-__exchange_and_add (volatile _Atomic_word* __mem, int __val)
+__exchange_and_add (volatile _Atomic_word *__mem, int __val)
 {
-#ifndef __GTHREAD_MUTEX_INIT
-  __gthread_once (&__gnu_cxx::_Atomic_add_mutex_once,
-                  __gnu_cxx::__gthread_atomic_add_mutex_once);
-#endif
-
-  _Atomic_word __result;
-
-  __gthread_mutex_lock (&__gnu_cxx::_Atomic_add_mutex);
-
-  __result = *__mem;
-  *__mem += __val;
-
-  __gthread_mutex_unlock (&__gnu_cxx::_Atomic_add_mutex);
+  register _Atomic_word __result;
+  __asm__ __volatile__ ("lock; xaddl %0,%2"
+                       : "=r" (__result)
+                        : "0" (__val), "m" (*__mem)
+                        : "memory");
   return __result;
 }

-
 static inline void
 __attribute__ ((__unused__))
 __atomic_add (volatile _Atomic_word* __mem, int __val)
 {
-  (void) __exchange_and_add (__mem, __val);
+  __asm__ __volatile__ ("lock; addl %0,%1"
+                       : : "ir" (__val), "m" (*__mem) : "memory");
 }

 #endif /* atomicity.h */
+
+
+
+
+#endif
 #endif /* _DEBIAN_BITS_ATOMICITY_H */



-- System Information:
Debian Release: testing/unstable
Architecture: i386
Kernel: Linux spiker 2.4.20-1-686 #1 Sat Mar 22 13:16:21 EST 2003 i686
Locale: LANG=da_DK, LC_CTYPE=da_DK

Versions of packages g++-3.3 depends on:
ii  gcc-3.3                      1:3.3-0pre4 The GNU C compiler
ii  gcc-3.3-base                 1:3.3-0pre4 The GNU Compiler Collection (base 
ii  libc6                        2.3.1-16    GNU C Library: Shared libraries an
ii  libstdc++5-3.3-dev           1:3.3-0pre4 The GNU Standard C++ Library v3 (d

-- no debconf information




Reply to: