Summary
This patch addresses the case where we have a DW_AT_external
subprogram for a constructor (and/or destructor) that doesn't carry
a DW_AT_linkage_name attribute. The corresponding DIE(s) that
represent the definition will have a linkage name, but if the name
contains constructs that LLDBs fallback mechanism for guessing mangled
names to resolve external symbols doesn't support (e.g., abi-tags)
then we end up failing to resolve the function call.
We address this by trying to find the linkage name before we create
the constructor/destructor decl, which will get attached using
an AsmLabelAttr to make symbol resolution easier.
This is useful for cases where we try to evaluate expressions that return libcxx
types whose constructors/destructors are labelled with ABI tags (e.g., std::shared_ptr)
Testing
- Added API test