[gdb/build] Fix build breaker with -std=c++11
authorTom de Vries <tdevries@suse.de>
Tue, 8 Aug 2023 08:08:04 +0000 (10:08 +0200)
committerTom de Vries <tdevries@suse.de>
Tue, 8 Aug 2023 08:08:04 +0000 (10:08 +0200)
When building with -std=c++11 I run into:
...
gdb/dwarf2/cooked-index.c: In member function \
  ‘void cooked_index::start_writing_index(dwarf2_per_bfd*)’:
gdb/dwarf2/cooked-index.c:469:10: error: lambda capture initializers only \
  available with -std=c++14 or -std=gnu++14 [-Werror]
          ctx = std::move (ctx)] ()
          ^~~
...

Fix this by capturing a copy instead when using -std=c++11:
...
    = gdb::thread_pool::g_thread_pool->post_task ([this, per_bfd, ctx] ()
...

Tested by building with and without -stdc=++11 on x86_64-linux.

Reported-By: Tom Tromey <tom@tromey.com>
Reviewed-by: John Baldwin <jhb@FreeBSD.org>
gdb/dwarf2/cooked-index.c

index df82e86b6902ba5fff69b38f26b7b8287552857c..92ef0e35c5e47ead25824f2eeb9e4c27c9d98e6a 100644 (file)
@@ -466,7 +466,12 @@ cooked_index::start_writing_index (dwarf2_per_bfd *per_bfd)
      started, because it may call 'wait'.  */
   m_write_future
     = gdb::thread_pool::g_thread_pool->post_task ([this, per_bfd,
-                                                  ctx = std::move (ctx)] ()
+#if __cplusplus >= 201402L
+                                                  ctx = std::move (ctx)
+#else
+                                                  ctx
+#endif
+                                                  ] ()
        {
          maybe_write_index (per_bfd, ctx);
        });