Currently (8.2.1), SymtabAPI aggregates represent a collection of symbols at the same offset, with access to uniqified vectors of names via const-ref. This is less than optimal from a storage perspective, and allows some funny inconsistencies--adding a name will sometimes, but not always, add a symbol to an aggregate, for instance.

For 9.x, we are planning to remove these accessors (get*Names) and replace them with range accessors (get_*_names_begin, get_*_names_end); we are further planning on a slight change to the semantics of add*Name, such that it will check the existing (pretty/mangled/typed) names for duplication, but if it's a new name, will always add a corresponding symbol.

These changes will only affect users who use Symtab's name access and modification methods directly on Aggregates/Functions/Variables; the interfaces of other components are untouched.

Feedback on these changes is welcome, though we want to ensure that we keep the memory gains we've made by not having aggregates maintain their own name collections.

--bw

Bill Williams
Paradyn Project
[email protected]
_______________________________________________
Dyninst-api mailing list
[email protected]
https://lists.cs.wisc.edu/mailman/listinfo/dyninst-api

Reply via email to