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: