diff options
author | Simon Marchi <simon.marchi@polymtl.ca> | 2020-01-19 19:47:49 -0500 |
---|---|---|
committer | Simon Marchi <simon.marchi@polymtl.ca> | 2020-01-19 19:48:16 -0500 |
commit | cf1d9e092f871df3b34a58cfcde915c689ac9067 (patch) | |
tree | 19397e11e631fb022503649708a5313e14f8c124 /ChangeLog | |
parent | b760fb3a1cd35fda01843ee7cdb3e420f07d27b9 (diff) | |
download | gdb-cf1d9e092f871df3b34a58cfcde915c689ac9067.zip gdb-cf1d9e092f871df3b34a58cfcde915c689ac9067.tar.gz gdb-cf1d9e092f871df3b34a58cfcde915c689ac9067.tar.bz2 |
sim: don't rely on inferior_ptid in gdbsim_target::wait
When running a program with the simulator target, I get:
/home/simark/src/binutils-gdb/gdb/inferior.c:279: internal-error: inferior* find_inferior_pid(process_stratum_target*, int): Assertion `pid != 0' failed.
This can be reproduced by building a GDB for --target=arm-none-gnueabi,
and running with
$ ./gdb -nx --data-directory=data-directory a.out -ex "target sim" -ex load -ex "b main" -ex r
Where a.out is any program with a main.
The problem is that gdbsim_target::wait assumes that inferior_ptid has
the value of the thread it wants to report an event for.
Actually, it's the target's responsibility to come up with the ptid of
the thread the event is for. In the sim target, that ptid is stored in
sim_inferior_data::remote_sim_ptid, so return that instead of
inferior_ptid.
ChangeLog:
* remote-sim.c (gdbsim_target::wait): Return
sim_data->remote_sim_ptid instead of inferior_ptid.
Diffstat (limited to 'ChangeLog')
-rw-r--r-- | ChangeLog | 5 |
1 files changed, 5 insertions, 0 deletions
@@ -1,3 +1,8 @@ +2020-01-19 Simon Marchi <simon.marchi@polymtl.ca> + + * remote-sim.c (gdbsim_target::wait): Return + sim_data->remote_sim_ptid instead of inferior_ptid. + 2020-01-18 Nick Clifton <nickc@redhat.com> Binutils 2.34 branch created. |