aboutsummaryrefslogtreecommitdiff
path: root/gdb/jit.c
diff options
context:
space:
mode:
authorPedro Alves <palves@redhat.com>2020-06-22 10:54:08 +0100
committerPedro Alves <palves@redhat.com>2020-06-22 11:10:49 +0100
commitf809832224cc45eb58812f6d4bb03cbf52fad980 (patch)
tree18c54e3f54aeb3178283c2407617f17bc4386726 /gdb/jit.c
parent39ff0b812324f4b050bb0b367b269db6d4d0cb8b (diff)
downloadgdb-f809832224cc45eb58812f6d4bb03cbf52fad980.zip
gdb-f809832224cc45eb58812f6d4bb03cbf52fad980.tar.gz
gdb-f809832224cc45eb58812f6d4bb03cbf52fad980.tar.bz2
Solaris, target_wait(), don't rely on inferior_ptid
Debugging on Solaris is broken, with the procfs target backend failing with: procfs: couldn't find pid 0 in procinfo list. as soon as you start a program. The problem is procfs_target::wait assuming that inferior_ptid is meaningful on entry, but, since the multi-target series, inferior_ptid is null_ptid before we call target_wait, in infrun.c: static ptid_t do_target_wait_1 (inferior *inf, ptid_t ptid, target_waitstatus *status, int options) { ... /* We know that we are looking for an event in the target of inferior INF, but we don't know which thread the event might come from. As such we want to make sure that INFERIOR_PTID is reset so that none of the wait code relies on it - doing so is always a mistake. */ switch_to_inferior_no_thread (inf); This patch tweaks the backend to remove the assumption that inferior_ptid points at something. sol-thread.c (the thread_stratum that sits on top of procfs.c) also has the same issue. Some spots in procfs_target::wait were returning TARGET_WAITKIND_SPURIOUS+inferior_ptid. This commit replaces those with waiting again without returning to the core. This fixes the relying on inferior_ptid, and also should fix the issue discussed here: https://sourceware.org/pipermail/gdb/2020-May/048616.html https://sourceware.org/pipermail/gdb/2020-June/048660.html gdb/ChangeLog: 2020-06-22 Pedro Alves <palves@redhat.com> PR gdb/25939 * procfs.c (procfs_target::wait): Don't reference inferior_ptid. Use the current inferior instead. Don't return TARGET_WAITKIND_SPURIOUS/inferior_ptid -- instead continue and wait again. * sol-thread.c (sol_thread_target::wait): Don't reference inferior_ptid. (ps_lgetregs, ps_lsetregs, ps_lgetfpregs, ps_lsetfpregs) (sol_update_thread_list_callback): Use the current inferior's pid instead of inferior_ptid.
Diffstat (limited to 'gdb/jit.c')
0 files changed, 0 insertions, 0 deletions