Don't let PDBSourceLineWriter::GetSymbolFunctionName return empty function names

It's possible for `IDiaSymbol::get_name` to return S_OK and provide
and empty string. I haven't figured out the exact root cause yet
(the symbols in question are coming from the Rust standard library),
but FUNC lines with missing function names break the processor and
so we should never do it. This change makes it output "<name omitted>"
which matches the behavior of the DWARF dumping code.

R=mark@chromium.org
BUG=https://bugzilla.mozilla.org/show_bug.cgi?id=1272278

Review URL: https://codereview.chromium.org/1985643004 .
This commit is contained in:
Ted Mielczarek 2016-05-16 12:30:59 -04:00
parent a875991e73
commit 67d5567177

View file

@ -975,6 +975,16 @@ bool PDBSourceLineWriter::GetSymbolFunctionName(IDiaSymbol *function,
fprintf(stderr, "failed to get function name\n"); fprintf(stderr, "failed to get function name\n");
return false; return false;
} }
// It's possible for get_name to return an empty string, so
// special-case that.
if (wcscmp(*name, L"") == 0) {
SysFreeString(*name);
// dwarf_cu_to_module.cc uses "<name omitted>", so match that.
*name = SysAllocString(L"<name omitted>");
return true;
}
// If a name comes from get_name because no undecorated form existed, // If a name comes from get_name because no undecorated form existed,
// it's already formatted properly to be used as output. Don't do any // it's already formatted properly to be used as output. Don't do any
// additional processing. // additional processing.