google / syzygy

Syzygy Transformation Toolchain
Apache License 2.0
355 stars 59 forks source link

Make decomposition work for PGO binaries. #13

Closed chhamilton closed 9 years ago

chhamilton commented 9 years ago

This will be needed once we enable PGO, and will assist with investigations into making PGO deltas smaller.

Breakpad supports PGO, and there is some code that hints at where the additional data lives and looks like. Initially we can use the DIA API directly, but it would also be good to add direct support to pdb_dumper so we can parse the appropriate data ourselves.

https://code.google.com/p/chromium/codesearch#chromium/src/breakpad/src/common/windows/pdb_source_line_writer.cc&sq=package:chromium&l=443

(If I had to guess it looks like there will simply be additional 'Block' symbols as children of the 'Function' symbol, and those blocks will be discontiguous.)

chhamilton commented 9 years ago

Turns out that this is a non-issue. Syzygy happily decomposes PGO optimized binaries, however it doesn't parse any of the semantic information that indicates which blocks are "children" of which other blocks (which occurs during hot/cold separation). Closing this for now.