]> git.ipfire.org Git - thirdparty/binutils-gdb.git/commitdiff
gdbserver: use reference in range for loop
authorSimon Marchi <simon.marchi@efficios.com>
Wed, 23 Jul 2025 18:41:42 +0000 (14:41 -0400)
committerSimon Marchi <simon.marchi@efficios.com>
Wed, 23 Jul 2025 18:44:01 +0000 (14:44 -0400)
The armhf buildbot fails to build GDB, with:

    ../../binutils-gdb/gdbserver/server.cc: In function ‘void handle_general_set(char*)’:
    ../../binutils-gdb/gdbserver/server.cc:1021:23: error: loop variable ‘<structured bindings>’ creates a copy from type ‘const std::pair<thread_info*, enum_flags<gdb_thread_option> >’ [-Werror=range-loop-construct]
     1021 |       for (const auto [thread, options] : set_options)
          |                       ^~~~~~~~~~~~~~~~~
    ../../binutils-gdb/gdbserver/server.cc:1021:23: note: use reference type to prevent copying
     1021 |       for (const auto [thread, options] : set_options)
          |                       ^~~~~~~~~~~~~~~~~
          |                       &

I did not use a reference on purpose, because the pair is very small.  I
don't see the problem when building on amd64, I presume it is because
the pair is considered too big to copy on a 32-bit architecture, but not
on a 64-bit architecture.

In any case, fix it by adding a reference.

Change-Id: I8e95235d6e53f032361950cf6e0c7d46b082f951

gdbserver/server.cc

index 4875df7c100bdfe9fd94496a1cfe095efdf16b67..ce84c7f75d98999117752465fd129226b0f443e9 100644 (file)
@@ -1018,7 +1018,7 @@ handle_general_set (char *own_buf)
            });
        }
 
-      for (const auto [thread, options] : set_options)
+      for (const auto &[thread, options] : set_options)
        if (thread->thread_options != options)
          {
            threads_debug_printf ("[options for %s are now %s]\n",