Re: [PATCH v3 5/8] gdbserver: Transmit target description ID in thread list and stop reply

Thiago Jung Bauermann via Gdb-patches
2023-02-02T19:53:04Z

Simon Marchi <simark@simark.ca> writes:

>> Having read some of the later patches, I have some additional thoughts
>> here:
>>
>> I think we should make it explicit here that IDs are connection wide,
>> not per-process. We should also make it clear that GDB might[1] cache
>> target descriptions per remote connection, and so a remote target should
>> not reuse a target description ID except where the target description is
>> identical.

Ah, good point. I will make that clarification.

>> [1] I say "GDB might" here because if we say "GDB will" then this would
>> imply each target description will only be asked for once. And I
>> figure, why be overly restrictive.
>
> Thanks for pointing this out, I had the same thought while reading the
> patch.
>
> In my original idea, I imagined that target description IDs could be
> some hashes computed from the XML content (a bit like git hashes or ELF
> build IDs), such that a given target description would always have the
> same ID. This would give clients the possibility to cache target
> descriptions locally, a bit like the index cache. It did sound nice,
> but perhaps it's not really important.

Ah, sorry I misunderstood this part of your suggestion. I thought that
the caching was supposed to be limited to the duration of the connection,
and thus the m_tdescs map in struct remote state would be enough to
provide that functionality. Do you mean that the cache should be on
disk, so that it survives GDB quitting? I can look into that if you want
and implement it, if not complicated.

In this case, I think the tdesc ID should be of the format
<prefix>:<hex number>, so that <prefix> can be “sha1”, “sha256” etc to
indicate that <hex number> is a hash with the given algo, or even
“number” to indicate that it's a simple integer like it is today.

Perhaps we can do the prefix thing even if not implementing the cache,
to leave the possibility of adding it in the future?

--
Thiago