I started doing some work on making libdw thread-safe, based on rough
outline I've gotten back in June. Overall approach is to have a lock
per Dwarf, and rdlock/wrlock that as appropriate if work is done with
data structure "descended" from that given Dwarf. [E.g. lock would be
taken like this: rwlock_rdlock (attr->cu->dbg->lock);]
That's the right approach. I haven't reviewed the code yet.
How much more work do you think there is in the libdw portion (not
including libdwfl)? If it's only a few days then keep at it. But
priorities have shifted so that we don't want to commit much more time to
the thread-safety work right now.
With the demise of Frysk as an active driver, thread-safety has fallen down
lower on the list for elfutils priorities. The long-term goals for that
haven't changed and we will want this work finished and merged at some
point. But all the top-priority goals now are batch-processing uses that
aren't helped by the thread-safety work. By next week I hope to be getting
organized about our roadmap and specific tasks for the elfutils work that
is most needed.
Thanks,
Roland