]> git.ipfire.org Git - thirdparty/binutils-gdb.git/commitdiff
[gdb/build, c++20] Fix more deprecated implicit capture of this
authorTom de Vries <tdevries@suse.de>
Mon, 21 Oct 2024 06:04:07 +0000 (08:04 +0200)
committerTom de Vries <tdevries@suse.de>
Mon, 21 Oct 2024 06:04:07 +0000 (08:04 +0200)
When building gdb with -std=c++20 I run into:
...
gdb/dwarf2/cooked-index.c: In lambda function:
gdb/dwarf2/cooked-index.c:471:47: error: implicit capture of ‘this’ via \
  ‘[=]’ is deprecated in C++20 [-Werror=deprecated]
  471 |   gdb::thread_pool::g_thread_pool->post_task ([=] ()
      |                                               ^
gdb/dwarf2/cooked-index.c:471:47: note: add explicit ‘this’ or ‘*this’ capture
...

Fix this and two more spots by removing the capture default, and explicitly
listing all captures.

Tested on x86_64-linux.

gdb/dwarf2/cooked-index.c
gdb/dwarf2/read.c

index 46b1c2d1b1249583cd1a2deb168471296cd6ffc0..d776f2f9bcacd3df5ec9062b9ecc0b42eb63e28f 100644 (file)
@@ -468,7 +468,7 @@ cooked_index_shard::find (const std::string &name, bool completing) const
 void
 cooked_index_worker::start ()
 {
-  gdb::thread_pool::g_thread_pool->post_task ([=] ()
+  gdb::thread_pool::g_thread_pool->post_task ([this] ()
   {
     try
       {
@@ -653,7 +653,7 @@ cooked_index::set_contents (vec_type &&vec, deferred_warnings *warn,
      finalization.  However, that would take a slot in the global
      thread pool, and if enough such tasks were submitted at once, it
      would cause a livelock.  */
-  gdb::task_group finalizers ([=] ()
+  gdb::task_group finalizers ([this, warn] ()
   {
     m_state->set (cooked_state::FINALIZED);
     m_state->write_to_cache (index_for_writing (), warn);
index cc49c4779c4053228a6d7f8f851f6be974f80be1..886d14f4896dc0dd8967f0594c1a6e5e07373ddf 100644 (file)
@@ -5033,7 +5033,7 @@ cooked_index_debug_info::do_reading ()
        }
 
       gdb_assert (iter != last);
-      workers.add_task ([=] ()
+      workers.add_task ([this, task_count, iter, last] ()
        {
          process_cus (task_count, iter, last);
        });