From: Tom Tromey Date: Tue, 10 Jun 2025 13:15:10 +0000 (-0600) Subject: Fix Solaris build X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=e82bc90812c54d32991326cdf3be973a5784a507;p=thirdparty%2Fbinutils-gdb.git Fix Solaris build Commit 58984e4a ("Use gdb::function_view in iterate_over_threads") broke the Solaris build. This patch attempts to fix it, changing find_signalled_thread to have the correct signature, and correcting a couple of problems in sol_thread_target::get_ada_task_ptid. Bug: https://sourceware.org/bugzilla/show_bug.cgi?id=33073 --- diff --git a/gdb/procfs.c b/gdb/procfs.c index 76a61680d38..aba2ab9e477 100644 --- a/gdb/procfs.c +++ b/gdb/procfs.c @@ -3550,21 +3550,17 @@ procfs_corefile_thread_callback (procinfo *pi, procinfo *thread, void *data) return 0; } -static int -find_signalled_thread (struct thread_info *info, void *data) +static bool +find_signalled_thread (struct thread_info *info) { - if (info->stop_signal () != GDB_SIGNAL_0 - && info->ptid.pid () == inferior_ptid.pid ()) - return 1; - - return 0; + return (info->stop_signal () != GDB_SIGNAL_0 + && info->ptid.pid () == inferior_ptid.pid ()); } static enum gdb_signal find_stop_signal (void) { - struct thread_info *info = - iterate_over_threads (find_signalled_thread, NULL); + struct thread_info *info = iterate_over_threads (find_signalled_thread); if (info) return info->stop_signal (); diff --git a/gdb/sol-thread.c b/gdb/sol-thread.c index ae1e5c07457..07e00a21ff7 100644 --- a/gdb/sol-thread.c +++ b/gdb/sol-thread.c @@ -1111,19 +1111,21 @@ info_solthreads (const char *args, int from_tty) ptid_t sol_thread_target::get_ada_task_ptid (long lwp, ULONGEST thread) { - struct thread_info *thread_info - = iterate_over_threads ([&] (struct thread_info *thread) + auto thread_db_find_thread_from_tid + = [&] (struct thread_info *iter) { - return thread->ptid.tid () == thread; - }); + return iter->ptid.tid () == thread; + }; + + struct thread_info *thread_info + = iterate_over_threads (thread_db_find_thread_from_tid); if (thread_info == NULL) { /* The list of threads is probably not up to date. Find any thread that is missing from the list, and try again. */ update_thread_list (); - thread_info = iterate_over_threads (thread_db_find_thread_from_tid, - &thread); + thread_info = iterate_over_threads (thread_db_find_thread_from_tid); } gdb_assert (thread_info != NULL);