From 00894ecf4636a242fbd11536acdf50f7891b374a Mon Sep 17 00:00:00 2001 From: Simon Marchi Date: Mon, 30 Aug 2021 13:54:45 -0400 Subject: gdb: fix build error in unittests/parallel-for-selftests.c We get this error when building GDB on some platforms. I get it using g++-10 on Ubuntu 20.04 (installed using the distro package). It was also reported by John Baldwin, using a clang that uses libc++. CXX unittests/parallel-for-selftests.o cc1plus: warning: command line option '-Wmissing-prototypes' is valid for C/ObjC but not for C++ /home/smarchi/src/binutils-gdb/gdb/unittests/parallel-for-selftests.c: In function 'void selftests::parallel_for::test(int)': /home/smarchi/src/binutils-gdb/gdb/unittests/parallel-for-selftests.c:53:30: error: use of deleted function 'std::atomic::atomic(const std::atomic&)' 53 | std::atomic counter = 0; | ^ In file included from /usr/include/c++/9/future:42, from /home/smarchi/src/binutils-gdb/gdb/../gdbsupport/thread-pool.h:29, from /home/smarchi/src/binutils-gdb/gdb/../gdbsupport/parallel-for.h:26, from /home/smarchi/src/binutils-gdb/gdb/unittests/parallel-for-selftests.c:22: /usr/include/c++/9/atomic:755:7: note: declared here 755 | atomic(const atomic&) = delete; | ^~~~~~ /usr/include/c++/9/atomic:759:17: note: after user-defined conversion: 'constexpr std::atomic::atomic(std::atomic::__integral_type)' 759 | constexpr atomic(__integral_type __i) noexcept : __base_type(__i) { } | ^~~~~~ I haven't dug to know why it does not happen everywhere, but this patch fixes it by using the constructor to initialize the variable, rather than the assignment operator. Change-Id: I6b27958171bf6187f6a875657395fd10441db7e6 --- gdb/unittests/parallel-for-selftests.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gdb/unittests/parallel-for-selftests.c b/gdb/unittests/parallel-for-selftests.c index 7f61b70..a2cd472 100644 --- a/gdb/unittests/parallel-for-selftests.c +++ b/gdb/unittests/parallel-for-selftests.c @@ -50,7 +50,7 @@ test (int n_threads) #define NUMBER 10000 - std::atomic counter = 0; + std::atomic counter (0); gdb::parallel_for_each (0, NUMBER, [&] (int start, int end) { -- cgit v1.1