Background here:
https://bugzilla.mozilla.org/show_bug.cgi?id=526484
But in short: when building with VC++'s PGO, one of the optimizations it will
perform is moving not-called (or not-frequently called) code to separate pages.
(See http://msdn.microsoft.com/en-us/library/e7k32f4k%28VS.80%29.aspx ) This
means that functions can become non-contiguous. Currently pdb_source_line_writer
does not see these blocks, so crash stacks that go through these blocks wind up
without function names.
This patch enumerates these blocks and writes out an extra FUNC line for each of
them. Source line data is unfortunately unavailable, at least with VC2005, due
to what looks like a compiler bug. Still, function names are better than nothing
in this case. I ran dump_syms on xul.pdb from a Firefox built with PGO, and
diffed the output against the original, and the only changes were the additional
FUNC lines.
We see this in the wild with some of our crash reports (the impetus for
investigating this was a topcrash whose top frame was in one of these blocks.
:-/)
Mark, can you take a look at this patch?