From: "Aktemur, Tankut Baris" <tankut.baris.aktemur@intel.com>
To: Andrew Burgess <aburgess@redhat.com>,
"gdb-patches@sourceware.org" <gdb-patches@sourceware.org>
Subject: RE: [PATCHv2 06/13] gdb: avoid repeated signal reporting during failed conditional breakpoint
Date: Thu, 19 Jan 2023 10:33:38 +0000 [thread overview]
Message-ID: <DM4PR11MB730371013C2FD5A5FA5A1E5CC4C49@DM4PR11MB7303.namprd11.prod.outlook.com> (raw)
In-Reply-To: <63d1953385883e9ed1bd87aecc928784fc41ae91.1674058360.git.aburgess@redhat.com>
On Wednesday, January 18, 2023 5:18 PM, Andrew Burgess wrote:
> Consider the following case:
>
> (gdb) list some_func
> 1 int
> 2 some_func ()
> 3 {
> 4 int *p = 0;
> 5 return *p;
> 6 }
> 7
> 8 void
> 9 foo ()
> 10 {
> (gdb) break foo if (some_func ())
> Breakpoint 1 at 0x40111e: file bpcond.c, line 11.
> (gdb) r
> Starting program: /tmp/bpcond
>
> Program received signal SIGSEGV, Segmentation fault.
> 0x0000000000401116 in some_func () at bpcond.c:5
> 5 return *p;
> Error in testing breakpoint condition:
> The program being debugged was signaled while in a function called from GDB.
> GDB remains in the frame where the signal was received.
> To change this behavior use "set unwindonsignal on".
> Evaluation of the expression containing the function
> (some_func) will be abandoned.
> When the function is done executing, GDB will silently stop.
>
> Program received signal SIGSEGV, Segmentation fault.
>
> Breakpoint 1, 0x0000000000401116 in some_func () at bpcond.c:5
> 5 return *p;
> (gdb)
>
> Notice that this line:
>
> Program received signal SIGSEGV, Segmentation fault.
>
> Appears twice in the output. The first time is followed by the
> current location. The second time is a little odd, why do we print
> that?
>
> Printing that line is controlled, in part, by a global variable,
> stopped_by_random_signal. This variable is reset to zero in
> handle_signal_stop, and is set if/when GDB figures out that the
> inferior stopped due to some random signal.
>
> The problem is, in our case, GDB first stops at the breakpoint for
> foo, and enters handle_signal_stop and the stopped_by_random_signal
> global is reset to 0.
>
> Later within handle_signal_stop GDB calls bpstat_stop_status, it is
> within this function (via bpstat_check_breakpoint_conditions) that the
> breakpoint condition is checked, and, we end up calling the inferior
> function (some_func in our example above).
>
> In our case above the thread performing the inferior function call
> segfaults in some_func. GDB catches the SIGSEGV and handles the stop,
> this causes us to reenter handle_signal_stop. The global variable
> stopped_by_random_signal is updated, this time it is set to true
> because the thread stopped due to SIGSEGV. As a result of this we
> print the first instance of the line (as seen above in the example).
>
> Finally we unwind GDB's call stack, the inferior function call is
> complete, and we return to the original handle_signal_stop. However,
> the stopped_by_random_signal global is still carrying the value as
> computed for the inferior function call's stop, which is why we now
> print a second instance of the line, as seen in the example.
>
> To prevent this, I propose adding a scoped_restore before we start an
> inferior function call, this will save and restore the global
> stopped_by_random_signal value.
Nit: It'd read better, I think, if this read
"... function call. This will save ..."
> With this done, the output from our example is now this:
>
> (gdb) list some_func
> 1 int
> 2 some_func ()
> 3 {
> 4 int *p = 0;
> 5 return *p;
> 6 }
> 7
> 8 void
> 9 foo ()
> 10 {
> (gdb) break foo if (some_func ())
> Breakpoint 1 at 0x40111e: file bpcond.c, line 11.
> (gdb) r
> Starting program: /tmp/bpcond
>
> Program received signal SIGSEGV, Segmentation fault.
> 0x0000000000401116 in some_func () at bpcond.c:5
> 5 return *p;
> Error in testing condition for breakpoint 1:
> The program being debugged stopped while in a function called from GDB.
> Evaluation of the expression containing the function
> (some_func) will be abandoned.
> When the function is done executing, GDB will silently stop.
>
> Breakpoint 1, 0x0000000000401116 in some_func () at bpcond.c:5
> 5 return *p;
> (gdb)
>
> We now only see the 'Program received signal SIGSEGV, ...' line once,
> which I think makes more sense.
>
> Finally, I'm aware that the last few lines, that report the stop as
> being at 'Breakpoint 1', when this is not where the thread is actually
> located anymore, is not great. I'll address that in the next commit.
> ---
> gdb/infcall.c | 9 +
> gdb/testsuite/gdb.base/infcall-failure.c | 48 ++++++
> gdb/testsuite/gdb.base/infcall-failure.exp | 184 +++++++++++++++++++++
> 3 files changed, 241 insertions(+)
> create mode 100644 gdb/testsuite/gdb.base/infcall-failure.c
> create mode 100644 gdb/testsuite/gdb.base/infcall-failure.exp
>
> diff --git a/gdb/infcall.c b/gdb/infcall.c
> index e09904f9a35..e1b785e437b 100644
> --- a/gdb/infcall.c
> +++ b/gdb/infcall.c
> @@ -1296,6 +1296,15 @@ call_function_by_hand_dummy (struct value *function,
> /* Register a clean-up for unwind_on_terminating_exception_breakpoint. */
> SCOPE_EXIT { delete_std_terminate_breakpoint (); };
>
> + /* The stopped_by_random_signal variable is global. If we are here
> + as part of a breakpoint condition check then the global will have
> + already been setup as part of the original breakpoint stop. By
> + making the inferior call the global will be changed when GDB
> + handles the stop after the inferior call. Avoid confusion by
> + restoring the current value after the inferior call. */
> + scoped_restore restore_stopped_by_random_signal
> + = make_scoped_restore (&stopped_by_random_signal, 0);
> +
> /* - SNIP - SNIP - SNIP - SNIP - SNIP - SNIP - SNIP - SNIP - SNIP -
> If you're looking to implement asynchronous dummy-frames, then
> just below is the place to chop this function in two.. */
> diff --git a/gdb/testsuite/gdb.base/infcall-failure.c b/gdb/testsuite/gdb.base/infcall-
> failure.c
> new file mode 100644
> index 00000000000..00f4369e164
> --- /dev/null
> +++ b/gdb/testsuite/gdb.base/infcall-failure.c
> @@ -0,0 +1,48 @@
> +/* Copyright 2022 Free Software Foundation, Inc.
2022-2023?
> +
> + This file is part of GDB.
> +
> + This program is free software; you can redistribute it and/or modify
> + it under the terms of the GNU General Public License as published by
> + the Free Software Foundation; either version 3 of the License, or
> + (at your option) any later version.
> +
> + This program is distributed in the hope that it will be useful,
> + but WITHOUT ANY WARRANTY; without even the implied warranty of
> + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
> + GNU General Public License for more details.
> +
> + You should have received a copy of the GNU General Public License
> + along with this program. If not, see <http://www.gnu.org/licenses/>. */
> +
> +/* A function that segfaults (assuming that reads of address zero are
> + prohibited), this is used from within a breakpoint condition. */
> +int
> +func_segfault ()
> +{
> + volatile int *p = 0;
> + return *p; /* Segfault here. */
> +}
> +
> +/* A function in which we will place a breakpoint. This function is itself
> + then used from within a breakpoint condition. */
> +int
> +func_bp ()
> +{
> + int res = 0; /* Second breakpoint. */
> + return res;
> +}
> +
> +int
> +foo ()
> +{
> + return 0; /* First breakpoint. */
> +}
> +
> +int
> +main ()
> +{
> + int res = foo ();
> +
> + return res;
> +}
> diff --git a/gdb/testsuite/gdb.base/infcall-failure.exp b/gdb/testsuite/gdb.base/infcall-
> failure.exp
> new file mode 100644
> index 00000000000..2dcdda34b4d
> --- /dev/null
> +++ b/gdb/testsuite/gdb.base/infcall-failure.exp
> @@ -0,0 +1,184 @@
> +# Copyright 2022 Free Software Foundation, Inc.
2022-2023?
> +
> +# This program is free software; you can redistribute it and/or modify
> +# it under the terms of the GNU General Public License as published by
> +# the Free Software Foundation; either version 3 of the License, or
> +# (at your option) any later version.
> +#
> +# This program is distributed in the hope that it will be useful,
> +# but WITHOUT ANY WARRANTY; without even the implied warranty of
> +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
> +# GNU General Public License for more details.
> +#
> +# You should have received a copy of the GNU General Public License
> +# along with this program. If not, see <http://www.gnu.org/licenses/>.
> +
> +# Some simple tests of inferior function calls from breakpoint
> +# conditions, in a single-threaded inferior.
> +#
> +# Test what happens when the inferior function (from a breakpoint
> +# condition) either hits a nested breakpoint, or segfaults.
> +
> +standard_testfile
> +
> +if { [build_executable "failed to prepare" ${binfile} "${srcfile}" \
> + {debug}] == -1 } {
> + return
> +}
> +
> +set bp_1_line [gdb_get_line_number "First breakpoint"]
> +set bp_2_line [gdb_get_line_number "Second breakpoint"]
> +set segv_line [gdb_get_line_number "Segfault here"]
> +
> +# Start GDB based on TARGET_ASYNC and TARGET_NON_STOP, and then runto
> +# main.
> +proc start_gdb_and_runto_main { target_async target_non_stop } {
> + save_vars { ::GDBFLAGS } {
> + append ::GDBFLAGS \
> + " -ex \"maint set target-non-stop $target_non_stop\""
> + append ::GDBFLAGS \
> + " -ex \"maintenance set target-async ${target_async}\""
> +
> + clean_restart ${::binfile}
> + }
> +
> + if {![runto_main]} {
Other if-statements in this file put spaces around the condition.
> + fail "run to main"
Commit 4dfef5be6812dd7abfbc8f18e9c0384f2522b511 ("gdb/testsuite: make
runto_main not pass no-message to runto") eliminated the need to emit a
fail explicitly.
> + return -1
> + }
> +
> + return 0
> +}
> +
> +# Start GDB according to ASYNC_P and NON_STOP_P, then setup a
> +# conditional breakpoint. The breakpoint condition includes an
> +# inferior function call that will itself hit a breakpoint. Check how
> +# GDB reports this to the user.
> +proc_with_prefix run_cond_hits_breakpoint_test { async_p non_stop_p } {
> + if { [start_gdb_and_runto_main $async_p $non_stop_p] == -1 } {
> + return
> + }
> +
> + # Setup the conditional breakpoint and record its number.
> + gdb_breakpoint "${::srcfile}:${::bp_1_line} if (func_bp ())"
> + set bp_1_num [get_integer_valueof "\$bpnum" "*UNKNOWN*" \
> + "get number of first breakpoint"]
> +
> + # Setup a breakpoint inside func_bp.
> + gdb_breakpoint "${::srcfile}:${::bp_2_line}"
> + set bp_2_num [get_integer_valueof "\$bpnum" "*UNKNOWN*" \
> + "get number of second breakpoint"]
> +
> + gdb_test "continue" \
> + [multi_line \
> + "Continuing\\." \
> + "" \
> + "Breakpoint ${bp_2_num}, func_bp \\(\\) at \[^\r\n\]+:${::bp_2_line}" \
> + "${::decimal}\\s+\[^\r\n\]+Second breakpoint\[^\r\n\]+" \
> + "Error in testing condition for breakpoint ${bp_1_num}:" \
> + "The program being debugged stopped while in a function called from GDB\\." \
> + "Evaluation of the expression containing the function" \
> + "\\(func_bp\\) will be abandoned\\." \
> + "When the function is done executing, GDB will silently stop\\." \
> + "" \
> + "Breakpoint ${bp_1_num}, \[^\r\n\]+" \
> + "${::decimal}\\s+\[^\r\n\]+Second breakpoint\[^\r\n\]+"]
> +}
> +
> +# Start GDB according to ASYNC_P and NON_STOP_P, then call an inferior
> +# function. The inferior function being called will itself have a
> +# breakpoint within it. Check how GDB reports this to the user.
> +proc_with_prefix run_call_hits_breakpoint_test { async_p non_stop_p } {
> + if { [start_gdb_and_runto_main $async_p $non_stop_p] == -1 } {
> + return
> + }
> +
> + # Setup a breakpoint inside func_bp.
> + gdb_breakpoint "${::srcfile}:${::bp_2_line}"
> + set bp_2_num [get_integer_valueof "\$bpnum" "*UNKNOWN*" \
> + "get number of second breakpoint"]
> +
> +
> + gdb_test "call func_bp ()" \
> + [multi_line \
> + "" \
> + "Breakpoint ${bp_2_num}, func_bp \\(\\) at \[^\r\n\]+:${::bp_2_line}" \
> + "${::decimal}\\s+\[^\r\n\]+Second breakpoint\[^\r\n\]+" \
> + "The program being debugged stopped while in a function called from GDB\\." \
> + "Evaluation of the expression containing the function" \
> + "\\(func_bp\\) will be abandoned\\." \
> + "When the function is done executing, GDB will silently stop\\."]
> +}
> +
> +# Start GDB according to ASYNC_P and NON_STOP_P, then setup a
> +# conditional breakpoint. The breakpoint condition includes an
> +# inferior function call that segfaults. Check how GDB reports this
> +# to the user.
> +proc_with_prefix run_cond_hits_segfault_test { async_p non_stop_p } {
> + if { [start_gdb_and_runto_main $async_p $non_stop_p] == -1 } {
> + return
> + }
> +
> + # This test relies on the inferior segfaulting when trying to
> + # access address zero.
> + if { [is_address_zero_readable] } {
Maybe emit an UNTESTED in this case?
> + return
> + }
> +
> + # Setup the conditional breakpoint and record its number.
> + gdb_breakpoint "${::srcfile}:${::bp_1_line} if (func_segfault ())"
> + set bp_1_num [get_integer_valueof "\$bpnum" "*UNKNOWN*" \
> + "get number of first breakpoint"]
> +
> + gdb_test "continue" \
> + [multi_line \
> + "Continuing\\." \
> + "" \
> + "Program received signal SIGSEGV, Segmentation fault\\." \
> + "${::hex} in func_segfault \\(\\) at \[^\r\n\]+:${::segv_line}" \
> + "${::decimal}\\s+\[^\r\n\]+Segfault here\[^\r\n\]+" \
> + "Error in testing condition for breakpoint ${bp_1_num}:" \
> + "The program being debugged stopped while in a function called from GDB\\." \
> + "Evaluation of the expression containing the function" \
> + "\\(func_segfault\\) will be abandoned\\." \
> + "When the function is done executing, GDB will silently stop\\." \
> + "" \
> + "Breakpoint ${bp_1_num}, \[^\r\n\]+" \
> + "${::decimal}\\s+\[^\r\n\]+Segfault here\[^\r\n\]+"]
> +}
> +
> +# Start GDB according to ASYNC_P and NON_STOP_P, then call an inferior
> +# function. The inferior function will segfault. Check how GDB
> +# reports this to the user.
> +proc_with_prefix run_call_hits_segfault_test { async_p non_stop_p } {
> + if { [start_gdb_and_runto_main $async_p $non_stop_p] == -1 } {
> + return
> + }
> +
> + # This test relies on the inferior segfaulting when trying to
> + # access address zero.
> + if { [is_address_zero_readable] } {
Here, too.
> + return
> + }
> +
> + gdb_test "call func_segfault ()" \
> + [multi_line \
> + "" \
> + "Program received signal SIGSEGV, Segmentation fault\\." \
> + "${::hex} in func_segfault \\(\\) at \[^\r\n\]+:${::segv_line}" \
> + "${::decimal}\\s+\[^\r\n\]+Segfault here\[^\r\n\]+" \
> + "The program being debugged stopped while in a function called from GDB\\." \
> + "Evaluation of the expression containing the function" \
> + "\\(func_segfault\\) will be abandoned\\." \
> + "When the function is done executing, GDB will silently stop\\."]
> +}
> +
> +foreach_with_prefix target_async { "on" "off" } {
> + foreach_with_prefix target_non_stop { "on" "off" } {
> + run_cond_hits_breakpoint_test $target_async $target_non_stop
> + run_call_hits_breakpoint_test $target_async $target_non_stop
> +
> + run_cond_hits_segfault_test $target_async $target_non_stop
> + run_call_hits_segfault_test $target_async $target_non_stop
> + }
> +}
> --
> 2.25.4
Regards
-Baris
Intel Deutschland GmbH
Registered Address: Am Campeon 10, 85579 Neubiberg, Germany
Tel: +49 89 99 8853-0, www.intel.de <http://www.intel.de>
Managing Directors: Christin Eisenschmid, Sharon Heck, Tiffany Doon Silva
Chairperson of the Supervisory Board: Nicole Lau
Registered Office: Munich
Commercial Register: Amtsgericht Muenchen HRB 186928
next prev parent reply other threads:[~2023-01-19 10:33 UTC|newest]
Thread overview: 202+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-10-21 8:43 [PATCH 00/12] Infcalls from B/P conditions in multi-threaded inferiors Andrew Burgess
2022-10-21 8:43 ` [PATCH 01/12] gdb: int to bool conversion for normal_stop Andrew Burgess
2022-11-04 12:20 ` Lancelot SIX
2023-01-13 16:35 ` Andrew Burgess
2022-10-21 8:43 ` [PATCH 02/12] gdb/infrun: add debug print in print_signal_received_reason Andrew Burgess
2023-01-13 16:38 ` Andrew Burgess
2022-10-21 8:43 ` [PATCH 03/12] gdb: include breakpoint number in testing condition error message Andrew Burgess
2022-10-21 8:43 ` [PATCH 04/12] gdbserver: add comments to read_inferior_memory function Andrew Burgess
2023-01-13 16:42 ` Andrew Burgess
2022-10-21 8:43 ` [PATCH 05/12] gdbserver: allows agent_mem_read to return an error code Andrew Burgess
2022-10-21 8:43 ` [PATCH 06/12] gdbserver: allow agent expressions to fail with invalid memory access Andrew Burgess
2022-10-21 8:43 ` [PATCH 07/12] gdb: avoid repeated signal reporting during failed conditional breakpoint Andrew Burgess
2022-10-21 8:43 ` [PATCH 08/12] gdb: don't always print breakpoint location after failed condition check Andrew Burgess
2022-10-21 8:43 ` [PATCH 09/12] Revert "gdb: remove unnecessary parameter wait_ptid from do_target_wait" Andrew Burgess
2022-10-21 8:43 ` [PATCH 10/12] gdb: fix b/p conditions with infcalls in multi-threaded inferiors Andrew Burgess
2022-10-21 8:43 ` [PATCH 11/12] gdb: add timeouts for inferior function calls Andrew Burgess
2022-10-21 11:08 ` Eli Zaretskii
2023-01-14 11:00 ` Andrew Burgess
2023-01-14 11:48 ` Eli Zaretskii
2023-01-16 17:22 ` Andrew Burgess
2023-01-16 17:27 ` Eli Zaretskii
2022-11-04 23:17 ` Lancelot SIX
2023-01-13 16:49 ` Andrew Burgess
2023-01-16 9:44 ` Lancelot SIX
2022-10-21 8:43 ` [PATCH 12/12] gdb/remote: avoid SIGINT after calling remote_target::stop Andrew Burgess
2023-01-18 16:17 ` [PATCHv2 00/13] Infcalls from B/P conditions in multi-threaded inferiors Andrew Burgess
2023-01-18 16:17 ` [PATCHv2 01/13] gdb/doc: extended documentation for inferior function calls Andrew Burgess
2023-01-18 17:20 ` Eli Zaretskii
2023-03-16 17:15 ` Andrew Burgess
2023-01-19 9:00 ` Aktemur, Tankut Baris
2023-01-18 16:17 ` [PATCHv2 02/13] gdb/doc: extend the documentation for conditional breakpoints Andrew Burgess
2023-01-18 17:22 ` Eli Zaretskii
2023-01-19 9:04 ` Aktemur, Tankut Baris
2023-01-19 10:07 ` Eli Zaretskii
2023-01-18 16:17 ` [PATCHv2 03/13] gdb: include breakpoint number in testing condition error message Andrew Burgess
2023-01-19 9:54 ` Aktemur, Tankut Baris
2023-01-19 10:54 ` Aktemur, Tankut Baris
2023-01-19 11:34 ` Eli Zaretskii
2023-01-20 9:46 ` Aktemur, Tankut Baris
2023-01-25 16:49 ` Andrew Burgess
2023-01-25 17:09 ` Eli Zaretskii
2023-01-18 16:18 ` [PATCHv2 04/13] gdbserver: allows agent_mem_read to return an error code Andrew Burgess
2023-01-19 9:59 ` Aktemur, Tankut Baris
2023-01-18 16:18 ` [PATCHv2 05/13] gdbserver: allow agent expressions to fail with invalid memory access Andrew Burgess
2023-01-19 10:13 ` Aktemur, Tankut Baris
2023-01-18 16:18 ` [PATCHv2 06/13] gdb: avoid repeated signal reporting during failed conditional breakpoint Andrew Burgess
2023-01-19 10:33 ` Aktemur, Tankut Baris [this message]
2023-01-18 16:18 ` [PATCHv2 07/13] gdb: don't always print breakpoint location after failed condition check Andrew Burgess
2023-01-19 10:49 ` Aktemur, Tankut Baris
2023-01-18 16:18 ` [PATCHv2 08/13] Revert "gdb: remove unnecessary parameter wait_ptid from do_target_wait" Andrew Burgess
2023-01-19 11:05 ` Aktemur, Tankut Baris
2023-01-18 16:18 ` [PATCHv2 09/13] gdb: fix b/p conditions with infcalls in multi-threaded inferiors Andrew Burgess
2023-01-20 7:13 ` Aktemur, Tankut Baris
2023-01-18 16:18 ` [PATCHv2 10/13] gdb: add timeouts for inferior function calls Andrew Burgess
2023-01-18 17:30 ` Eli Zaretskii
2023-01-20 8:50 ` Aktemur, Tankut Baris
2023-01-18 16:18 ` [PATCHv2 11/13] gdb/remote: avoid SIGINT after calling remote_target::stop Andrew Burgess
2023-01-20 9:14 ` Aktemur, Tankut Baris
2023-01-18 16:18 ` [PATCHv2 12/13] gdb: introduce unwind-on-timeout setting Andrew Burgess
2023-01-18 17:33 ` Eli Zaretskii
2023-01-20 9:26 ` Aktemur, Tankut Baris
2023-01-18 16:18 ` [PATCHv2 13/13] gdb: rename unwindonsignal to unwind-on-signal Andrew Burgess
2023-01-18 17:35 ` Eli Zaretskii
2023-01-20 9:34 ` [PATCHv2 00/13] Infcalls from B/P conditions in multi-threaded inferiors Aktemur, Tankut Baris
2023-01-25 15:53 ` Andrew Burgess
2023-02-16 11:09 ` Aktemur, Tankut Baris
2023-01-31 17:27 ` [PATCHv3 " Andrew Burgess
2023-01-31 17:27 ` [PATCHv3 01/13] gdb/doc: extended documentation for inferior function calls Andrew Burgess
2023-01-31 17:27 ` [PATCHv3 02/13] gdb/doc: extend the documentation for conditional breakpoints Andrew Burgess
2023-01-31 18:07 ` Eli Zaretskii
2023-02-01 17:47 ` Andrew Burgess
2023-02-01 18:25 ` Eli Zaretskii
2023-02-02 13:34 ` Andrew Burgess
2023-01-31 17:27 ` [PATCHv3 03/13] gdb: include breakpoint number in testing condition error message Andrew Burgess
2023-02-16 10:15 ` Aktemur, Tankut Baris
2023-01-31 17:27 ` [PATCHv3 04/13] gdbserver: allows agent_mem_read to return an error code Andrew Burgess
2023-01-31 17:27 ` [PATCHv3 05/13] gdbserver: allow agent expressions to fail with invalid memory access Andrew Burgess
2023-02-16 10:29 ` Aktemur, Tankut Baris
2023-01-31 17:27 ` [PATCHv3 06/13] gdb: avoid repeated signal reporting during failed conditional breakpoint Andrew Burgess
2023-01-31 17:27 ` [PATCHv3 07/13] gdb: don't always print breakpoint location after failed condition check Andrew Burgess
2023-01-31 17:27 ` [PATCHv3 08/13] Revert "gdb: remove unnecessary parameter wait_ptid from do_target_wait" Andrew Burgess
2023-01-31 17:27 ` [PATCHv3 09/13] gdb: fix b/p conditions with infcalls in multi-threaded inferiors Andrew Burgess
2023-02-16 10:47 ` Aktemur, Tankut Baris
2023-01-31 17:27 ` [PATCHv3 10/13] gdb: add timeouts for inferior function calls Andrew Burgess
2023-01-31 18:11 ` Eli Zaretskii
2023-02-01 17:50 ` Andrew Burgess
2023-02-01 18:29 ` Eli Zaretskii
2023-02-16 10:53 ` Aktemur, Tankut Baris
2023-01-31 17:27 ` [PATCHv3 11/13] gdb/remote: avoid SIGINT after calling remote_target::stop Andrew Burgess
2023-01-31 17:27 ` [PATCHv3 12/13] gdb: introduce unwind-on-timeout setting Andrew Burgess
2023-01-31 18:09 ` Eli Zaretskii
2023-02-16 11:01 ` Aktemur, Tankut Baris
2023-01-31 17:27 ` [PATCHv3 13/13] gdb: rename unwindonsignal to unwind-on-signal Andrew Burgess
2023-01-31 18:12 ` Eli Zaretskii
2023-02-28 16:42 ` [PATCHv4 00/12] Infcalls from B/P conditions in multi-threaded inferiors Andrew Burgess
2023-02-28 16:42 ` [PATCHv4 01/12] gdb/doc: extended documentation for inferior function calls Andrew Burgess
2024-03-21 9:03 ` Tom de Vries
2024-03-21 9:11 ` Tom de Vries
2023-02-28 16:42 ` [PATCHv4 02/12] gdb: include breakpoint number in testing condition error message Andrew Burgess
2023-02-28 16:42 ` [PATCHv4 03/12] gdbserver: allows agent_mem_read to return an error code Andrew Burgess
2023-02-28 16:42 ` [PATCHv4 04/12] gdbserver: allow agent expressions to fail with invalid memory access Andrew Burgess
2023-02-28 16:42 ` [PATCHv4 05/12] gdb: avoid repeated signal reporting during failed conditional breakpoint Andrew Burgess
2023-02-28 16:42 ` [PATCHv4 06/12] gdb: don't always print breakpoint location after failed condition check Andrew Burgess
2023-02-28 16:42 ` [PATCHv4 07/12] Revert "gdb: remove unnecessary parameter wait_ptid from do_target_wait" Andrew Burgess
2023-02-28 16:42 ` [PATCHv4 08/12] gdb: fix b/p conditions with infcalls in multi-threaded inferiors Andrew Burgess
2023-02-28 16:42 ` [PATCHv4 09/12] gdb: add timeouts for inferior function calls Andrew Burgess
2023-02-28 16:42 ` [PATCHv4 10/12] gdb/remote: avoid SIGINT after calling remote_target::stop Andrew Burgess
2023-02-28 16:42 ` [PATCHv4 11/12] gdb: introduce unwind-on-timeout setting Andrew Burgess
2023-02-28 16:42 ` [PATCHv4 12/12] gdb: rename unwindonsignal to unwind-on-signal Andrew Burgess
2023-03-16 17:36 ` [PATCHv5 00/11] Infcalls from B/P conditions in multi-threaded inferiors Andrew Burgess
2023-03-16 17:36 ` [PATCHv5 01/11] gdb: include breakpoint number in testing condition error message Andrew Burgess
2023-04-03 13:50 ` Andrew Burgess
2023-07-07 12:08 ` Pedro Alves
2023-07-07 15:43 ` Andrew Burgess
2023-07-07 16:19 ` Pedro Alves
2023-07-10 10:30 ` Andrew Burgess
2023-03-16 17:36 ` [PATCHv5 02/11] gdbserver: allows agent_mem_read to return an error code Andrew Burgess
2023-04-03 13:50 ` Andrew Burgess
2023-03-16 17:36 ` [PATCHv5 03/11] gdbserver: allow agent expressions to fail with invalid memory access Andrew Burgess
2023-04-03 13:50 ` Andrew Burgess
2023-07-07 12:25 ` Pedro Alves
2023-07-07 16:28 ` Andrew Burgess
2023-07-07 17:26 ` Pedro Alves
2023-07-07 21:19 ` Andrew Burgess
2023-07-10 10:32 ` Andrew Burgess
2023-07-10 10:44 ` Pedro Alves
2023-07-10 13:44 ` Andrew Burgess
2023-03-16 17:36 ` [PATCHv5 04/11] gdb: avoid repeated signal reporting during failed conditional breakpoint Andrew Burgess
2023-04-03 13:50 ` Andrew Burgess
2023-03-16 17:37 ` [PATCHv5 05/11] gdb: don't always print breakpoint location after failed condition check Andrew Burgess
2023-04-03 13:51 ` Andrew Burgess
2023-07-07 15:20 ` Pedro Alves
2023-07-07 15:24 ` Pedro Alves
2023-07-07 21:18 ` Andrew Burgess
2023-07-11 12:06 ` Pedro Alves
2023-07-14 12:17 ` Andrew Burgess
2023-07-17 17:17 ` Pedro Alves
2023-08-03 13:57 ` Andrew Burgess
2023-03-16 17:37 ` [PATCHv5 06/11] Revert "gdb: remove unnecessary parameter wait_ptid from do_target_wait" Andrew Burgess
2023-03-16 17:37 ` [PATCHv5 07/11] gdb: fix b/p conditions with infcalls in multi-threaded inferiors Andrew Burgess
2023-03-16 17:37 ` [PATCHv5 08/11] gdb: add timeouts for inferior function calls Andrew Burgess
2023-03-16 17:37 ` [PATCHv5 09/11] gdb/remote: avoid SIGINT after calling remote_target::stop Andrew Burgess
2023-03-16 17:37 ` [PATCHv5 10/11] gdb: introduce unwind-on-timeout setting Andrew Burgess
2023-03-16 17:37 ` [PATCHv5 11/11] gdb: rename unwindonsignal to unwind-on-signal Andrew Burgess
2023-04-03 14:01 ` [PATCHv6 0/6] Infcalls from B/P conditions in multi-threaded inferiors Andrew Burgess
2023-04-03 14:01 ` [PATCHv6 1/6] Revert "gdb: remove unnecessary parameter wait_ptid from do_target_wait" Andrew Burgess
2023-04-03 14:01 ` [PATCHv6 2/6] gdb: fix b/p conditions with infcalls in multi-threaded inferiors Andrew Burgess
2023-04-03 14:01 ` [PATCHv6 3/6] gdb: add timeouts for inferior function calls Andrew Burgess
2023-07-11 14:23 ` Pedro Alves
2023-07-14 15:20 ` Andrew Burgess
2023-07-14 19:52 ` Andrew Burgess
2023-04-03 14:01 ` [PATCHv6 4/6] gdb/remote: avoid SIGINT after calling remote_target::stop Andrew Burgess
2023-04-03 14:01 ` [PATCHv6 5/6] gdb: introduce unwind-on-timeout setting Andrew Burgess
2023-04-03 14:01 ` [PATCHv6 6/6] gdb: rename unwindonsignal to unwind-on-signal Andrew Burgess
2023-05-15 19:22 ` [PATCHv7 0/6] Infcalls from B/P conditions in multi-threaded inferiors Andrew Burgess
2023-05-15 19:22 ` [PATCHv7 1/6] Revert "gdb: remove unnecessary parameter wait_ptid from do_target_wait" Andrew Burgess
2023-05-16 15:08 ` Aktemur, Tankut Baris
2023-05-15 19:22 ` [PATCHv7 2/6] gdb: fix b/p conditions with infcalls in multi-threaded inferiors Andrew Burgess
2023-05-16 15:09 ` Aktemur, Tankut Baris
2023-06-05 13:53 ` Andrew Burgess
2023-05-15 19:22 ` [PATCHv7 3/6] gdb: add timeouts for inferior function calls Andrew Burgess
2023-05-16 15:42 ` Aktemur, Tankut Baris
2023-06-05 13:54 ` Andrew Burgess
2023-05-15 19:22 ` [PATCHv7 4/6] gdb/remote: avoid SIGINT after calling remote_target::stop Andrew Burgess
2023-05-16 16:00 ` Aktemur, Tankut Baris
2023-06-05 13:55 ` Andrew Burgess
2023-05-15 19:22 ` [PATCHv7 5/6] gdb: introduce unwind-on-timeout setting Andrew Burgess
2023-05-15 19:22 ` [PATCHv7 6/6] gdb: rename unwindonsignal to unwind-on-signal Andrew Burgess
2023-06-07 10:01 ` [PATCHv8 0/6] Infcalls from B/P conditions in multi-threaded inferiors Andrew Burgess
2023-06-07 10:01 ` [PATCHv8 1/6] Revert "gdb: remove unnecessary parameter wait_ptid from do_target_wait" Andrew Burgess
2023-06-07 10:01 ` [PATCHv8 2/6] gdb: fix b/p conditions with infcalls in multi-threaded inferiors Andrew Burgess
2023-06-07 10:01 ` [PATCHv8 3/6] gdb: add timeouts for inferior function calls Andrew Burgess
2023-06-07 10:01 ` [PATCHv8 4/6] gdb/remote: avoid SIGINT after calling remote_target::stop Andrew Burgess
2023-07-07 17:18 ` Pedro Alves
2023-07-10 20:04 ` Andrew Burgess
2023-06-07 10:01 ` [PATCHv8 5/6] gdb: introduce unwind-on-timeout setting Andrew Burgess
2023-06-07 10:01 ` [PATCHv8 6/6] gdb: rename unwindonsignal to unwind-on-signal Andrew Burgess
2023-06-07 12:41 ` Eli Zaretskii
2023-06-07 14:29 ` Andrew Burgess
2023-06-07 15:31 ` Eli Zaretskii
2023-07-04 11:20 ` [PATCHv8 0/6] Infcalls from B/P conditions in multi-threaded inferiors Andrew Burgess
2023-12-02 10:52 ` [PATCHv9 0/5] " Andrew Burgess
2023-12-02 10:52 ` [PATCHv9 1/5] Revert "gdb: remove unnecessary parameter wait_ptid from do_target_wait" Andrew Burgess
2023-12-02 10:52 ` [PATCHv9 2/5] gdb: fix b/p conditions with infcalls in multi-threaded inferiors Andrew Burgess
2023-12-02 10:52 ` [PATCHv9 3/5] gdb: add timeouts for inferior function calls Andrew Burgess
2023-12-02 10:52 ` [PATCHv9 4/5] gdb: introduce unwind-on-timeout setting Andrew Burgess
2023-12-02 10:52 ` [PATCHv9 5/5] gdb: rename unwindonsignal to unwind-on-signal Andrew Burgess
2024-01-02 15:57 ` [PATCHv10 0/5] Infcalls from B/P conditions in multi-threaded inferiors Andrew Burgess
2024-01-02 15:57 ` [PATCHv10 1/5] Revert "gdb: remove unnecessary parameter wait_ptid from do_target_wait" Andrew Burgess
2024-01-02 15:57 ` [PATCHv10 2/5] gdb: fix b/p conditions with infcalls in multi-threaded inferiors Andrew Burgess
2024-01-02 15:57 ` [PATCHv10 3/5] gdb: add timeouts for inferior function calls Andrew Burgess
2024-01-02 15:57 ` [PATCHv10 4/5] gdb: introduce unwind-on-timeout setting Andrew Burgess
2024-01-02 15:57 ` [PATCHv10 5/5] gdb: rename unwindonsignal to unwind-on-signal Andrew Burgess
2024-03-05 15:40 ` [PATCHv11 0/5] Infcalls from B/P conditions in multi-threaded inferiors Andrew Burgess
2024-03-05 15:40 ` [PATCHv11 1/5] Revert "gdb: remove unnecessary parameter wait_ptid from do_target_wait" Andrew Burgess
2024-03-05 15:40 ` [PATCHv11 2/5] gdb: fix b/p conditions with infcalls in multi-threaded inferiors Andrew Burgess
2024-03-05 15:40 ` [PATCHv11 3/5] gdb: add timeouts for inferior function calls Andrew Burgess
2024-03-05 15:40 ` [PATCHv11 4/5] gdb: introduce unwind-on-timeout setting Andrew Burgess
2024-03-05 15:40 ` [PATCHv11 5/5] gdb: rename unwindonsignal to unwind-on-signal Andrew Burgess
2024-03-14 16:08 ` [PATCHv11 0/5] Infcalls from B/P conditions in multi-threaded inferiors Keith Seitz
2024-03-15 13:26 ` Luis Machado
2024-03-25 17:47 ` Andrew Burgess
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=DM4PR11MB730371013C2FD5A5FA5A1E5CC4C49@DM4PR11MB7303.namprd11.prod.outlook.com \
--to=tankut.baris.aktemur@intel.com \
--cc=aburgess@redhat.com \
--cc=gdb-patches@sourceware.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).