DRAFT libdwfl: Elf* caching via dwfl_process_tracker
(Work in progress, based on my testing it's still missing a couple of
pieces in open_elf. Also need to look into using
lib/dynamicsizehash_concurrent.c rather than the boilerplate imitation
here.)
* libdwfl/libdwfl.h (dwfl_process_tracker_find_elf): New function,
serves as a cached version of the dwfl_linux_proc_find_elf callback.
* libdwfl/libdwflP.h (DWFFL_ELFTAB_ENT_USED): New macro.
(dwfltracker_elftab_ent): New struct typedef.
(struct Dwfl_Process_Tracker): Add fields for table of Elf*.
(__libdwfl_process_tracker_elftab_find): New function.
(__libdwfl_process_tracker_elftab_mark_used): New function.
* libdwfl/dwfl_process_tracker.c (dwfl_process_tracker_begin): Init elftab.
(dwfl_process_tracker_end): Free elftab.
(__libdwfl_process_tracker_elftab_resize): New function.
(djb2_hash): New function.
(__libdwfl_process_tracker_elftab_find): New function.
(__libdwfl_process_tracker_elftab_mark_used): New function.
* libdwfl/dwfl_process_tracker_find_elf.c: New file.
* libdwfl/Makefile.am (libdwfl_a_SOURCES): Add dwfl_process_tracker_find_elf.c.
* libdw/libdw.map: Add dwfl_process_tracker_find_elf.