Hello,
At present GDB maintains a thread-db that contains all the "threads" known to GDB. The list is cross-target. That is, it can include both LWPs from the lower "process layer" and "threads" from the higher "thread layer".
I think the currently implicit target <-> thread relationship should be made more explicit:
- thread_info should point back at it's target
- a target should let you iterate over its "threads"
This, I belive, will help clean-up the current tid:pid dance. A thread would always know its target and hence thread operations would always be applied at the correct level.