public inbox for gdb-patches@sourceware.org
 help / color / mirror / Atom feed
From: Luis Machado <luis.machado@arm.com>
To: Jan Kratochvil <jkratochvil@azul.com>
Cc: gdb-patches@sourceware.org, Alan Hayward <alan.hayward@arm.com>
Subject: Re: [PING] [PATCH] gdb/arm: Fix backtrace for pthread_cond_timedwait
Date: Fri, 20 Jan 2023 17:41:00 +0000	[thread overview]
Message-ID: <1cb89b33-4656-6588-c677-1907241a252f@arm.com> (raw)
In-Reply-To: <Y8i1tia0S0Ad/lkn@host1.jankratochvil.net>

[-- Attachment #1: Type: text/plain, Size: 1688 bytes --]

On 1/19/23 03:15, Jan Kratochvil wrote:
> On Wed, 18 Jan 2023 22:22:51 +0800, Luis Machado wrote:
>> I'm on Ubuntu 22.04/20.04, but running 32-bit on a 64-bit system via Docker.
> 
> Ubuntu is the host OS. But I haven't found recent armv7 (32-bit) Ubuntu.
> What is the Docker container you use?

It is a custom one built with Ubuntu 22.04/20.04 images/packages.

> 
> 
>> x/i $pc
>> => 0xf7eadb04 <__libc_do_syscall+4>:    svc     0
>>
>> The test seems to be expecting a pattern of
>>
>> x/i $pc
>> => 0xf7eadb04 <__libc_do_syscall+4>:    svc     0x00000000
>>
>> If I replaced the pattern to force a match, the test continues until the unwinder check.
> 
> I forgot to update this pattern but it would not help the testcase anyway.
> The purpose is to stop in the function pthread_cond_timedwait.
> Here it stops in function __libc_do_syscall.
> It would be helpful at least a backtrace but I would more like to reproduce
> your environment.

I've attached a gdb.log file. Hopefully that will bring some light. Please note I used
"nosharedlibrary" to remove the symbols for my test.

> 
> 
>> Then it runs into a
>> UNTESTED again because I see the dwarf2 unwinder being used.
>>
>> That may be because I have debug info installed I suppose. I wonder if there
>> is a way to force gdb not to use the dwarf2 unwinder for libc, even if it is
>> available on the system.
> 
> I have fixed that part:
> 	gdb_test_no_output "set debug-file-directory" ""

For my case, it looks like gdb will still find the symbols. The command "nosharedlibrary" will
drop the symbols completely though. But then I see the prologue unwinders being used instead of the
exception frame.

> 
> 
> Thanks,
> Jan

[-- Attachment #2: gdb.log --]
[-- Type: text/x-log, Size: 17063 bytes --]

Test run by user on Fri Jan 20 08:30:05 2023
Native configuration is armv8l-unknown-linux-gnueabihf

		=== gdb tests ===

Schedule of variations:
    unix

Running target unix
Using /usr/share/dejagnu/baseboards/unix.exp as board description file for target.
Using /usr/share/dejagnu/config/unix.exp as generic interface file for target.
Using /builds/binutils-gdb-armhf-jammy/gdb/testsuite/../../../../repos/binutils-gdb/gdb/testsuite/config/unix.exp as tool-and-target-specific interface file.
Running /builds/binutils-gdb-armhf-jammy/gdb/testsuite/../../../../repos/binutils-gdb/gdb/testsuite/gdb.arch/arm-pthread_cond_timedwait-bt.exp ...
Executing on host: gcc   -fdiagnostics-color=never -c -o /builds/binutils-gdb-armhf-jammy/gdb/testsuite/temp/3155654/ccopts3155654.o /builds/binutils-gdb-armhf-jammy/gdb/testsuite/temp/3155654/ccopts3155654.c    (timeout = 300)
builtin_spawn -ignore SIGHUP gcc -fdiagnostics-color=never -c -o /builds/binutils-gdb-armhf-jammy/gdb/testsuite/temp/3155654/ccopts3155654.o /builds/binutils-gdb-armhf-jammy/gdb/testsuite/temp/3155654/ccopts3155654.c
get_compiler_info: gcc-11-3-0
Executing on host: gcc  -fno-stack-protector  -fdiagnostics-color=never -c -g  -o /builds/binutils-gdb-armhf-jammy/gdb/testsuite/outputs/gdb.arch/arm-pthread_cond_timedwait-bt/arm-pthread_cond_timedwait-bt0.o /builds/binutils-gdb-armhf-jammy/gdb/testsuite/../../../../repos/binutils-gdb/gdb/testsuite/gdb.arch/arm-pthread_cond_timedwait-bt.c    (timeout = 300)
builtin_spawn -ignore SIGHUP gcc -fno-stack-protector -fdiagnostics-color=never -c -g -o /builds/binutils-gdb-armhf-jammy/gdb/testsuite/outputs/gdb.arch/arm-pthread_cond_timedwait-bt/arm-pthread_cond_timedwait-bt0.o /builds/binutils-gdb-armhf-jammy/gdb/testsuite/../../../../repos/binutils-gdb/gdb/testsuite/gdb.arch/arm-pthread_cond_timedwait-bt.c
Executing on host: gcc  -fno-stack-protector /builds/binutils-gdb-armhf-jammy/gdb/testsuite/outputs/gdb.arch/arm-pthread_cond_timedwait-bt/arm-pthread_cond_timedwait-bt0.o  -fdiagnostics-color=never -g  -lpthreads -lm   -o /builds/binutils-gdb-armhf-jammy/gdb/testsuite/outputs/gdb.arch/arm-pthread_cond_timedwait-bt/arm-pthread_cond_timedwait-bt    (timeout = 300)
builtin_spawn -ignore SIGHUP gcc -fno-stack-protector /builds/binutils-gdb-armhf-jammy/gdb/testsuite/outputs/gdb.arch/arm-pthread_cond_timedwait-bt/arm-pthread_cond_timedwait-bt0.o -fdiagnostics-color=never -g -lpthreads -lm -o /builds/binutils-gdb-armhf-jammy/gdb/testsuite/outputs/gdb.arch/arm-pthread_cond_timedwait-bt/arm-pthread_cond_timedwait-bt
/usr/bin/ld: cannot find -lpthreads: No such file or directory
collect2: error: ld returned 1 exit status
compiler exited with status 1
output is:
/usr/bin/ld: cannot find -lpthreads: No such file or directory
collect2: error: ld returned 1 exit status

Executing on host: gcc  -fno-stack-protector /builds/binutils-gdb-armhf-jammy/gdb/testsuite/outputs/gdb.arch/arm-pthread_cond_timedwait-bt/arm-pthread_cond_timedwait-bt0.o  -fdiagnostics-color=never -g  -lpthread -lm   -o /builds/binutils-gdb-armhf-jammy/gdb/testsuite/outputs/gdb.arch/arm-pthread_cond_timedwait-bt/arm-pthread_cond_timedwait-bt    (timeout = 300)
builtin_spawn -ignore SIGHUP gcc -fno-stack-protector /builds/binutils-gdb-armhf-jammy/gdb/testsuite/outputs/gdb.arch/arm-pthread_cond_timedwait-bt/arm-pthread_cond_timedwait-bt0.o -fdiagnostics-color=never -g -lpthread -lm -o /builds/binutils-gdb-armhf-jammy/gdb/testsuite/outputs/gdb.arch/arm-pthread_cond_timedwait-bt/arm-pthread_cond_timedwait-bt
PASS: gdb.arch/arm-pthread_cond_timedwait-bt.exp: successfully compiled posix threads test case
builtin_spawn /builds/binutils-gdb-armhf-jammy/gdb/testsuite/../../gdb/gdb -nw -nx -iex set height 0 -iex set width 0 -data-directory /builds/binutils-gdb-armhf-jammy/gdb/testsuite/../data-directory
GNU gdb (GDB) 14.0.50.20230120-git
Copyright (C) 2023 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Type "show copying" and "show warranty" for details.
This GDB was configured as "armv8l-unknown-linux-gnueabihf".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
<https://www.gnu.org/software/gdb/bugs/>.
Find the GDB manual and other documentation resources online at:
    <http://www.gnu.org/software/gdb/documentation/>.

For help, type "help".
Type "apropos word" to search for commands related to "word".
(gdb) set height 0
(gdb) set width 0
(gdb) dir
Reinitialize source path to empty? (y or n) y
Source directories searched: $cdir:$cwd
(gdb) dir /builds/binutils-gdb-armhf-jammy/gdb/testsuite/../../../../repos/binutils-gdb/gdb/testsuite/gdb.arch
Source directories searched: /builds/binutils-gdb-armhf-jammy/gdb/testsuite/../../../../repos/binutils-gdb/gdb/testsuite/gdb.arch:$cdir:$cwd
(gdb) kill
The program is not being run.
(gdb) file /builds/binutils-gdb-armhf-jammy/gdb/testsuite/outputs/gdb.arch/arm-pthread_cond_timedwait-bt/arm-pthread_cond_timedwait-bt
Reading symbols from /builds/binutils-gdb-armhf-jammy/gdb/testsuite/outputs/gdb.arch/arm-pthread_cond_timedwait-bt/arm-pthread_cond_timedwait-bt...
(gdb) delete breakpoints
(gdb) info breakpoints
No breakpoints or watchpoints.
(gdb) break -qualified main
Breakpoint 1 at 0x6ae: file /builds/binutils-gdb-armhf-jammy/gdb/testsuite/../../../../repos/binutils-gdb/gdb/testsuite/gdb.arch/arm-pthread_cond_timedwait-bt.c, line 52.
(gdb) run 
Starting program: /builds/binutils-gdb-armhf-jammy/gdb/testsuite/outputs/gdb.arch/arm-pthread_cond_timedwait-bt/arm-pthread_cond_timedwait-bt 
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/arm-linux-gnueabihf/libthread_db.so.1".

Breakpoint 1, main () at /builds/binutils-gdb-armhf-jammy/gdb/testsuite/../../../../repos/binutils-gdb/gdb/testsuite/gdb.arch/arm-pthread_cond_timedwait-bt.c:52
52	  err = pthread_mutex_lock(&mutex);
(gdb) set debug-file-directory
(gdb) PASS: gdb.arch/arm-pthread_cond_timedwait-bt.exp: set debug-file-directory
nosharedlibrary
(gdb) PASS: gdb.arch/arm-pthread_cond_timedwait-bt.exp: nosharedlibrary
advance 58
[New Thread 0xf7e8f3a0 (LWP 3155781)]
main () at /builds/binutils-gdb-armhf-jammy/gdb/testsuite/../../../../repos/binutils-gdb/gdb/testsuite/gdb.arch/arm-pthread_cond_timedwait-bt.c:58
58	  err = pthread_join(thread, &ret); // break-line
(gdb) PASS: gdb.arch/arm-pthread_cond_timedwait-bt.exp: advance to break-line
thread 2
[Switching to thread 2 (Thread 0xf7e8f3a0 (LWP 3155781))]
#0  0xf7eadb04 in ?? ()
(gdb) PASS: gdb.arch/arm-pthread_cond_timedwait-bt.exp: thread 2 for svc check
x/i $pc
=> 0xf7eadb04:	svc	0
(gdb) PASS: gdb.arch/arm-pthread_cond_timedwait-bt.exp: pc points to svc
thread 1
[Switching to thread 1 (Thread 0xf7feae40 (LWP 3155779))]
#0  main () at /builds/binutils-gdb-armhf-jammy/gdb/testsuite/../../../../repos/binutils-gdb/gdb/testsuite/gdb.arch/arm-pthread_cond_timedwait-bt.c:58
58	  err = pthread_join(thread, &ret); // break-line
(gdb) PASS: gdb.arch/arm-pthread_cond_timedwait-bt.exp: thread 1
set debug frame 1
(gdb) PASS: gdb.arch/arm-pthread_cond_timedwait-bt.exp: set debug frame 1
thread 2
[frame] reinit_frame_cache: generation=119
[frame] reinit_frame_cache: generation=120
[Switching to thread 2 (Thread 0xf7e8f3a0 (LWP 3155781))]
[frame] create_sentinel_frame:   -> {level=-1,type=SENTINEL_FRAME,unwinder="sentinel",pc=<unknown>,id={stack=<sentinel>,!code,special=0x0000000000000000},func=<unknown>}
[frame] get_prev_frame_always_1: enter
  [frame] get_prev_frame_always_1: this_frame=-1
  [frame] frame_unwind_arch: next_frame=-1 -> armv7
  [frame] operator==: l={stack=<sentinel>,!code,special=0x0000000000000000}, r={stack=<outer>,!code,special=0x0000000000000000} -> 0
  [frame] get_prev_frame_raw:   -> {level=0,type=<unknown>,unwinder=<unknown>,pc=<unknown>,id=<not computed>,func=<unknown>}
[frame] get_prev_frame_always_1: exit
[frame] frame_unwind_register_value: enter
  [frame] frame_unwind_register_value: frame=-1, regnum=15(pc)
  [frame] frame_unwind_register_value:   -> register=15 bytes=[04dbeaf7]
[frame] frame_unwind_register_value: exit
[frame] frame_unwind_pc: this_frame=-1 -> 0xf7eadb04
[frame] frame_unwind_find_by_frame: enter
  [frame] frame_unwind_find_by_frame: this_frame=0
  [frame] frame_unwind_try_unwinder: trying unwinder "dummy"
  [frame] frame_unwind_try_unwinder: no
  [frame] frame_unwind_try_unwinder: trying unwinder "dwarf2 tailcall"
  [frame] frame_unwind_try_unwinder: no
  [frame] frame_unwind_try_unwinder: trying unwinder "inline"
  [frame] frame_unwind_try_unwinder: no
  [frame] frame_unwind_try_unwinder: trying unwinder "jit"
  [frame] frame_unwind_try_unwinder: no
  [frame] frame_unwind_try_unwinder: trying unwinder "python"
  [frame] frame_unwind_try_unwinder: no
  [frame] frame_unwind_try_unwinder: trying unwinder "(null)"
  [frame] frame_unwind_try_unwinder: no
  [frame] frame_unwind_try_unwinder: trying unwinder "(null)"
  [frame] frame_unwind_try_unwinder: no
  [frame] frame_unwind_try_unwinder: trying unwinder "(null)"
  [frame] frame_unwind_try_unwinder: no
  [frame] frame_unwind_try_unwinder: trying unwinder "(null)"
  [frame] frame_unwind_try_unwinder: no
  [frame] frame_unwind_try_unwinder: trying unwinder "(null)"
  [frame] frame_unwind_try_unwinder: no
  [frame] frame_unwind_try_unwinder: trying unwinder "(null)"
  [frame] frame_unwind_try_unwinder: no
  [frame] frame_unwind_try_unwinder: trying unwinder "(null)"
  [frame] frame_unwind_try_unwinder: no
  [frame] frame_unwind_try_unwinder: trying unwinder "(null)"
  [frame] frame_unwind_try_unwinder: no
  [frame] frame_unwind_try_unwinder: trying unwinder "arm stub"
  [frame] frame_unwind_register_value: enter
    [frame] frame_unwind_register_value: frame=-1, regnum=25(cpsr)
    [frame] frame_unwind_register_value:   -> register=25 bytes=[30000380]
  [frame] frame_unwind_register_value: exit
  [frame] frame_unwind_try_unwinder: no
  [frame] frame_unwind_try_unwinder: trying unwinder "dwarf2"
  [frame] frame_unwind_try_unwinder: no
  [frame] frame_unwind_try_unwinder: trying unwinder "dwarf2 signal"
  [frame] frame_unwind_try_unwinder: no
  [frame] frame_unwind_try_unwinder: trying unwinder "arm exidx"
  [frame] frame_unwind_try_unwinder: no
  [frame] frame_unwind_try_unwinder: trying unwinder "arm epilogue"
  [frame] frame_unwind_register_value: enter
    [frame] frame_unwind_register_value: frame=-1, regnum=25(cpsr)
    [frame] frame_unwind_register_value:   -> register=25 bytes=[30000380]
  [frame] frame_unwind_register_value: exit
  [frame] frame_unwind_try_unwinder: no
  [frame] frame_unwind_try_unwinder: trying unwinder "arm prologue"
  [frame] frame_unwind_try_unwinder: yes
[frame] frame_unwind_find_by_frame: exit
#0  0xf7eadb04 in ?? ([frame] frame_id_p: l={!stack,!code,!special} -> 0
)
[frame] get_prev_frame_always_1: enter
  [frame] get_prev_frame_always_1: this_frame=-1
  [frame] get_prev_frame_always_1:   -> {level=0,type=NORMAL_FRAME,unwinder="arm prologue",pc=0xf7eadb04,id=<not computed>,func=<unknown>} // cached
[frame] get_prev_frame_always_1: exit
(gdb) FAIL: gdb.arch/arm-pthread_cond_timedwait-bt.exp: unwinder is arm exidx
thread 2
[frame] reinit_frame_cache: generation=121
[frame] reinit_frame_cache: generation=122
[Switching to thread 2 (Thread 0xf7e8f3a0 (LWP 3155781))]
[frame] create_sentinel_frame:   -> {level=-1,type=SENTINEL_FRAME,unwinder="sentinel",pc=<unknown>,id={stack=<sentinel>,!code,special=0x0000000000000000},func=<unknown>}
[frame] get_prev_frame_always_1: enter
  [frame] get_prev_frame_always_1: this_frame=-1
  [frame] frame_unwind_arch: next_frame=-1 -> armv7
  [frame] operator==: l={stack=<sentinel>,!code,special=0x0000000000000000}, r={stack=<outer>,!code,special=0x0000000000000000} -> 0
  [frame] get_prev_frame_raw:   -> {level=0,type=<unknown>,unwinder=<unknown>,pc=<unknown>,id=<not computed>,func=<unknown>}
[frame] get_prev_frame_always_1: exit
[frame] frame_unwind_register_value: enter
  [frame] frame_unwind_register_value: frame=-1, regnum=15(pc)
  [frame] frame_unwind_register_value:   -> register=15 bytes=[04dbeaf7]
[frame] frame_unwind_register_value: exit
[frame] frame_unwind_pc: this_frame=-1 -> 0xf7eadb04
[frame] frame_unwind_find_by_frame: enter
  [frame] frame_unwind_find_by_frame: this_frame=0
  [frame] frame_unwind_try_unwinder: trying unwinder "dummy"
  [frame] frame_unwind_try_unwinder: no
  [frame] frame_unwind_try_unwinder: trying unwinder "dwarf2 tailcall"
  [frame] frame_unwind_try_unwinder: no
  [frame] frame_unwind_try_unwinder: trying unwinder "inline"
  [frame] frame_unwind_try_unwinder: no
  [frame] frame_unwind_try_unwinder: trying unwinder "jit"
  [frame] frame_unwind_try_unwinder: no
  [frame] frame_unwind_try_unwinder: trying unwinder "python"
  [frame] frame_unwind_try_unwinder: no
  [frame] frame_unwind_try_unwinder: trying unwinder "(null)"
  [frame] frame_unwind_try_unwinder: no
  [frame] frame_unwind_try_unwinder: trying unwinder "(null)"
  [frame] frame_unwind_try_unwinder: no
  [frame] frame_unwind_try_unwinder: trying unwinder "(null)"
  [frame] frame_unwind_try_unwinder: no
  [frame] frame_unwind_try_unwinder: trying unwinder "(null)"
  [frame] frame_unwind_try_unwinder: no
  [frame] frame_unwind_try_unwinder: trying unwinder "(null)"
  [frame] frame_unwind_try_unwinder: no
  [frame] frame_unwind_try_unwinder: trying unwinder "(null)"
  [frame] frame_unwind_try_unwinder: no
  [frame] frame_unwind_try_unwinder: trying unwinder "(null)"
  [frame] frame_unwind_try_unwinder: no
  [frame] frame_unwind_try_unwinder: trying unwinder "(null)"
  [frame] frame_unwind_try_unwinder: no
  [frame] frame_unwind_try_unwinder: trying unwinder "arm stub"
  [frame] frame_unwind_register_value: enter
    [frame] frame_unwind_register_value: frame=-1, regnum=25(cpsr)
    [frame] frame_unwind_register_value:   -> register=25 bytes=[30000380]
  [frame] frame_unwind_register_value: exit
  [frame] frame_unwind_try_unwinder: no
  [frame] frame_unwind_try_unwinder: trying unwinder "dwarf2"
  [frame] frame_unwind_try_unwinder: no
  [frame] frame_unwind_try_unwinder: trying unwinder "dwarf2 signal"
  [frame] frame_unwind_try_unwinder: no
  [frame] frame_unwind_try_unwinder: trying unwinder "arm exidx"
  [frame] frame_unwind_try_unwinder: no
  [frame] frame_unwind_try_unwinder: trying unwinder "arm epilogue"
  [frame] frame_unwind_register_value: enter
    [frame] frame_unwind_register_value: frame=-1, regnum=25(cpsr)
    [frame] frame_unwind_register_value:   -> register=25 bytes=[30000380]
  [frame] frame_unwind_register_value: exit
  [frame] frame_unwind_try_unwinder: no
  [frame] frame_unwind_try_unwinder: trying unwinder "arm prologue"
  [frame] frame_unwind_try_unwinder: yes
[frame] frame_unwind_find_by_frame: exit
#0  0xf7eadb04 in ?? ([frame] frame_id_p: l={!stack,!code,!special} -> 0
)
[frame] get_prev_frame_always_1: enter
  [frame] get_prev_frame_always_1: this_frame=-1
  [frame] get_prev_frame_always_1:   -> {level=0,type=NORMAL_FRAME,unwinder="arm prologue",pc=0xf7eadb04,id=<not computed>,func=<unknown>} // cached
[frame] get_prev_frame_always_1: exit
(gdb) PASS: gdb.arch/arm-pthread_cond_timedwait-bt.exp: thread 2 for debug frame check
set debug frame 0
(gdb) PASS: gdb.arch/arm-pthread_cond_timedwait-bt.exp: set debug frame 0
bt
#0  0xf7eadb04 in ?? ()
#1  0xf7ee912e in ?? ()
Backtrace stopped: previous frame identical to this frame (corrupt stack?)
(gdb) FAIL: gdb.arch/arm-pthread_cond_timedwait-bt.exp: unwind of pthread_cond_timedwait
testcase /builds/binutils-gdb-armhf-jammy/gdb/testsuite/../../../../repos/binutils-gdb/gdb/testsuite/gdb.arch/arm-pthread_cond_timedwait-bt.exp completed in 1 seconds

		=== gdb Summary ===

# of expected passes		10
# of unexpected failures	2
Executing on host: /builds/binutils-gdb-armhf-jammy/gdb/testsuite/../../gdb/gdb -nw -nx -iex "set height 0" -iex "set width 0" -data-directory /builds/binutils-gdb-armhf-jammy/gdb/testsuite/../data-directory --version    (timeout = 300)
builtin_spawn -ignore SIGHUP /builds/binutils-gdb-armhf-jammy/gdb/testsuite/../../gdb/gdb -nw -nx -iex set height 0 -iex set width 0 -data-directory /builds/binutils-gdb-armhf-jammy/gdb/testsuite/../data-directory --version
GNU gdb (GDB) 14.0.50.20230120-git
Copyright (C) 2023 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
/builds/binutils-gdb-armhf-jammy/gdb/gdb version  14.0.50.20230120-git -nw -nx -iex "set height 0" -iex "set width 0" -data-directory /builds/binutils-gdb-armhf-jammy/gdb/testsuite/../data-directory 

runtest completed at Fri Jan 20 08:30:06 2023

  reply	other threads:[~2023-01-20 17:41 UTC|newest]

Thread overview: 17+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-12-31  8:48 Jan Kratochvil
2023-01-16 16:10 ` [PING] " Jan Kratochvil
2023-01-17 11:14   ` Luis Machado
2023-01-18 11:51     ` Jan Kratochvil
2023-01-18 14:22       ` Luis Machado
2022-12-31  8:48         ` [PATCH v2] " Jan Kratochvil
2023-01-19  3:15         ` [PING] [PATCH] " Jan Kratochvil
2023-01-20 17:41           ` Luis Machado [this message]
2022-12-31  8:48             ` [PATCH v3] " Jan Kratochvil
2023-02-24 13:38             ` [PING] [PATCH] " Jan Kratochvil
2023-02-24 16:56               ` Luis Machado
2022-12-31  8:48                 ` [PATCH v4] " Jan Kratochvil
2023-02-25 10:04                 ` [PING] [PATCH] " Jan Kratochvil
2023-03-20 12:51                   ` [PING^2] " Jan Kratochvil
2023-03-30 14:30                     ` Luis Machado
2023-03-30 16:09                       ` Luis Machado
2023-04-01 13:49                         ` [committed] " Jan Kratochvil

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=1cb89b33-4656-6588-c677-1907241a252f@arm.com \
    --to=luis.machado@arm.com \
    --cc=alan.hayward@arm.com \
    --cc=gdb-patches@sourceware.org \
    --cc=jkratochvil@azul.com \
    /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).