Fix regex & startsWith name lookup in SBTarget::FindGlobalVariables
There were two bugs here. eMatchTypeStartsWith searched for "symbol_name" by adding ".*" to the end of the symbol name and treating that as a regex, which isn't actually a regex for "starts with". The ".*" is in fact a no-op. When we finally get to comparing the name, we compare against whatever form of the name was in the accelerator table. But for C++ that might be the mangled name. We should also try demangled names here, since most users are going the see demangled not mangled names. I fixed these two bugs and added a bunch of tests for FindGlobalVariables. This change is in the DWARF parser code, so there may be a similar bug in PDB, but the test for this was already skipped for Windows, so I don't know about this. You might theoretically need to do this Mangled comparison in DWARFMappedHash::MemoryTable::FindByName except when we have names we always chop them before looking them up so I couldn't see any code paths that fail without that change. So I didn't add that to this patch. Differential Revision: https://reviews.llvm.org/D151940
Loading
Please sign in to comment