This is the mail archive of the
gdb-patches@sourceware.org
mailing list for the GDB project.
Re: [PATCH 1/3] Avoid find_thread_ptid with null_ptid
On 10/01/2018 04:53 PM, Tom Tromey wrote:
>>>>>> "Pedro" == Pedro Alves <palves@redhat.com> writes:
>
> Pedro> This patch prepares for the change, by avoiding passing down null_ptid
> Pedro> to find_thread_ptid or to functions that naturally use it
>
> Should find_thread_ptid assert this?
I didn't think it's useful, since the code will end up like this:
struct thread_info *
find_thread_ptid (ptid_t ptid)
{
inferior *inf = find_inferior_ptid (ptid);
if (inf == NULL)
return NULL;
return find_thread_ptid (inf, ptid);
}
and null_ptid hits that assertion in:
struct inferior *
find_inferior_pid (int pid)
{
/* Looking for inferior pid == 0 is always wrong, and indicative of
a bug somewhere else. There may be more than one with pid == 0,
for instance. */
gdb_assert (pid != 0);
But I can add it if you prefer.
>
> Pedro> if (print_inferior_events)
> Pedro> - printf_unfiltered (_("[New inferior %d (%s)]\n"),
> Pedro> - inf->num,
> Pedro> - target_pid_to_str (ptid_t (pid)));
> Pedro> + {
> Pedro> + if (pid != 0)
> Pedro> + printf_unfiltered (_("[New inferior %d (%s)]\n"),
> Pedro> + inf->num,
> Pedro> + target_pid_to_str (ptid_t (pid)));
> Pedro> + else
> Pedro> + printf_unfiltered (_("[New inferior %d]\n"), inf->num);
>
> I wonder if it is possible for an RSP implementation to say that the
> inferior has PID 0.
GDB would break down badly. Throughout we assume pid == 0 means the
inferior/process is not started.
The RSP docs say:
"In addition, the remote protocol supports a multiprocess feature in
which the @var{thread-id} syntax is extended to optionally include both
process and thread ID fields, as @samp{p@var{pid}.@var{tid}}.
The @var{pid} (process) and @var{tid} (thread) components each have the
format described above: a positive number with target-specific
^^^^^^^^^^^^^^^^^
interpretation formatted as a big-endian hex string, literal @samp{-1}
to indicate all processes or threads (respectively), or @samp{0} to
^^^^^^^^^^^^^^
indicate an arbitrary process or thread. Specifying just a process, as
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Thanks,
Pedro Alves