summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSimon Marchi <simon.marchi@efficios.com>2022-04-29 23:21:15 -0400
committerSimon Marchi <simon.marchi@polymtl.ca>2022-05-04 08:24:37 -0400
commit901e4e8d5c4f1d32c50e4a31b228bc7ef4210775 (patch)
treea918ecaf5efafb88db7f6f9bec53345377171da0 /gdbserver
parentgdb/remote: iterate on pspace inferiors in remote_new_objfile (diff)
downloadbinutils-gdb-901e4e8d5c4f1d32c50e4a31b228bc7ef4210775.tar.gz
binutils-gdb-901e4e8d5c4f1d32c50e4a31b228bc7ef4210775.tar.bz2
binutils-gdb-901e4e8d5c4f1d32c50e4a31b228bc7ef4210775.zip
gdb/remote: send qSymbol to all inferiors on startup
start_remote_1 calls remote_check_symbols after things are set up to give the remote side a chance to look up symbols. One call to remote_check_symbols sets the "general thread", if needed, and sends one qSymbol packet. However, a remote target could have more than one process on initial connection, and this would send a qSymbol for only one of these processes. Change it to iterate on all the target's inferiors and send a qSymbol packet for each one. I tested this by changing gdbserver to spawn two processes on startup: diff --git a/gdbserver/server.cc b/gdbserver/server.cc index 33c42714e72..9b682e9f85f 100644 --- a/gdbserver/server.cc +++ b/gdbserver/server.cc @@ -3939,6 +3939,7 @@ captured_main (int argc, char *argv[]) /* Wait till we are at first instruction in program. */ target_create_inferior (program_path.get (), program_args); + target_create_inferior (program_path.get (), program_args); /* We are now (hopefully) stopped at the first instruction of the target process. This assumes that the target process was Instead of hacking GDBserver, it should also be possible to test this by starting manually two inferiors on an "extended-remote" connection, disconnecting from GDBserver (with the disconnect command), and re-connecting. I was able to see qSymbol being sent for each inferior: [remote] Sending packet: $Hgp828dc.828dc#1f [remote] Packet received: OK [remote] Sending packet: $qSymbol::#5b [remote] Packet received: qSymbol:6764625f6167656e745f6764625f74705f686561705f627566666572 [remote] Sending packet: $qSymbol::6764625f6167656e745f6764625f74705f686561705f627566666572#1e [remote] Packet received: qSymbol:6e70746c5f76657273696f6e [remote] Sending packet: $qSymbol::6e70746c5f76657273696f6e#4d [remote] Packet received: OK [remote] Sending packet: $Hgp828dd.828dd#21 [remote] Packet received: OK [remote] Sending packet: $qSymbol::#5b [remote] Packet received: qSymbol:6764625f6167656e745f6764625f74705f686561705f627566666572 [remote] Sending packet: $qSymbol::6764625f6167656e745f6764625f74705f686561705f627566666572#1e [remote] Packet received: qSymbol:6e70746c5f76657273696f6e [remote] Sending packet: $qSymbol::6e70746c5f76657273696f6e#4d [remote] Packet received: OK Note that there would probably be more work to be done to fully support this scenario, more things that need to be done for each discovered inferior instead of just for one. Change-Id: I21c4ecf6367391e2e389b560f0b4bd906cf6472f
Diffstat (limited to 'gdbserver')
0 files changed, 0 insertions, 0 deletions