DynamoRIO / dynamorio

Dynamic Instrumentation Tool Platform
Other
2.61k stars 554 forks source link

separate debug info into separate files from the main release packages #2167

Open derekbruening opened 7 years ago

derekbruening commented 7 years ago

The 7.0 release is significantly larger than 6.2, due to the static DR library:

25MB larger: 111132 DynamoRIO-Windows-6.2.0-2.zip 136356 DynamoRIO-Windows-7.0.0-RC1.zip

Unpacked it's 92M larger:

# du -sh DynamoRIO-Windows-7.0.0-RC1 rel-6.2.0/DynamoRIO-Windows-6.2.0-2
536M    DynamoRIO-Windows-7.0.0-RC1
444M    rel-6.2.0/DynamoRIO-Windows-6.2.0-2

37M of that is adding drcachesim (pdb's are large!) The rest is the static DR build, which is huge: 15MB each x 4!

Linux is also much bigger:

98312 DynamoRIO-Linux-7.0.0-RC1.tar.gz 75036 DynamoRIO-Linux-6.2.0-2.tar.gz

Also from static DR: 20MB each x 4!

Should we consider putting the pdb's and .debugs in a separate package? That cuts Windows more than in half: shrinks from 536M to 242M. For Linux, from 319M to 231M.

derekbruening commented 7 years ago

Dropping VS2010 support and building with a later VS would also shrink the pdb's; should measure and see by how much.

derekbruening commented 7 years ago

Actually VS2013 produces a much larger build than VS2010: both binaries and pdb's are larger. I believe that the only reason I thought they might be smaller is that VS2010 made smaller pdbs than VS2008.

VS2010: 136356 DynamoRIO-Windows-7.0.0-RC1.zip VS2013: 179116 DynamoRIO-Windows-7.0.0-RC2.zip

% ls -sh samples/bin64/bbbuf*
 80K samples/bin64/bbbuf.dll  4.0K samples/bin64/bbbuf.lib  604K samples/bin64/bbbuf.pdb
% ls -sh samples/bin64/bbbuf*
184K samples/bin64/bbbuf.dll  4.0K samples/bin64/bbbuf.lib  1.2M samples/bin64/bbbuf.pdb

Adding "/opt:ref /opt:icf /pdbcompress" to both DR and DrM top-level (adding to CMAKE_LINKER_FLAGS) we have a size almost as small as VS2010 (maybe drltrace binary and some other new stuff is here too): 138424 DynamoRIO-Windows-7.0.0-RC3.zip

Looking at samples/bin64: it's still 5M total bigger, everything being slightly larger.

% ls -sh samples/bin64/bbbuf*
 84K samples/bin64/bbbuf.dll  4.0K samples/bin64/bbbuf.lib  924K samples/bin64/bbbuf.pdb

So we have to put in effort to try and get a VS2013 build to get close to the VS2010 build size.

derekbruening commented 7 years ago

The same flags for VS2010: 116752 DynamoRIO-Windows-7.0.0-RC3-VS2010.zip

% ls -sh samples/bin64/bbbuf*
 40K samples/bin64/bbbuf.dll  4.0K samples/bin64/bbbuf.lib  556K samples/bin64/bbbuf.pdb
derekbruening commented 7 years ago

I put these in: