Skip to content

Commit 3c7a8ab

Browse files
authored
Merge pull request #13 from aras-p/raw_pdb
Switch from DIA SDK to raw_pdb
2 parents b500581 + 1e49000 commit 3c7a8ab

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

75 files changed

+6621
-817
lines changed

Sizer.exe

27.5 KB
Binary file not shown.

Sizer.vcxproj

+50
Original file line numberDiff line numberDiff line change
@@ -95,13 +95,63 @@
9595
<ItemGroup>
9696
<ClCompile Include="src\debuginfo.cpp" />
9797
<ClCompile Include="src\main.cpp" />
98+
<ClCompile Include="src\mmapfile.cpp" />
9899
<ClCompile Include="src\parg.c" />
99100
<ClCompile Include="src\pdbfile.cpp" />
101+
<ClCompile Include="src\pdb_typetable.cpp" />
102+
<ClCompile Include="src\pe_utils.cpp" />
103+
<ClCompile Include="src\raw_pdb\PDB.cpp" />
104+
<ClCompile Include="src\raw_pdb\PDB_CoalescedMSFStream.cpp" />
105+
<ClCompile Include="src\raw_pdb\PDB_DBIStream.cpp" />
106+
<ClCompile Include="src\raw_pdb\PDB_DBITypes.cpp" />
107+
<ClCompile Include="src\raw_pdb\PDB_DirectMSFStream.cpp" />
108+
<ClCompile Include="src\raw_pdb\PDB_GlobalSymbolStream.cpp" />
109+
<ClCompile Include="src\raw_pdb\PDB_ImageSectionStream.cpp" />
110+
<ClCompile Include="src\raw_pdb\PDB_InfoStream.cpp" />
111+
<ClCompile Include="src\raw_pdb\PDB_IPIStream.cpp" />
112+
<ClCompile Include="src\raw_pdb\PDB_ModuleInfoStream.cpp" />
113+
<ClCompile Include="src\raw_pdb\PDB_ModuleLineStream.cpp" />
114+
<ClCompile Include="src\raw_pdb\PDB_ModuleSymbolStream.cpp" />
115+
<ClCompile Include="src\raw_pdb\PDB_NamesStream.cpp" />
116+
<ClCompile Include="src\raw_pdb\PDB_PCH.cpp" />
117+
<ClCompile Include="src\raw_pdb\PDB_PublicSymbolStream.cpp" />
118+
<ClCompile Include="src\raw_pdb\PDB_RawFile.cpp" />
119+
<ClCompile Include="src\raw_pdb\PDB_SectionContributionStream.cpp" />
120+
<ClCompile Include="src\raw_pdb\PDB_SourceFileStream.cpp" />
121+
<ClCompile Include="src\raw_pdb\PDB_TPIStream.cpp" />
122+
<ClCompile Include="src\raw_pdb\PDB_Types.cpp" />
100123
</ItemGroup>
101124
<ItemGroup>
102125
<ClInclude Include="src\debuginfo.hpp" />
126+
<ClInclude Include="src\mmapfile.h" />
103127
<ClInclude Include="src\parg.h" />
104128
<ClInclude Include="src\pdbfile.hpp" />
129+
<ClInclude Include="src\pdb_typetable.hpp" />
130+
<ClInclude Include="src\pe_utils.hpp" />
131+
<ClInclude Include="src\raw_pdb\PDB.h" />
132+
<ClInclude Include="src\raw_pdb\PDB_CoalescedMSFStream.h" />
133+
<ClInclude Include="src\raw_pdb\PDB_DBIStream.h" />
134+
<ClInclude Include="src\raw_pdb\PDB_DBITypes.h" />
135+
<ClInclude Include="src\raw_pdb\PDB_DirectMSFStream.h" />
136+
<ClInclude Include="src\raw_pdb\PDB_ErrorCodes.h" />
137+
<ClInclude Include="src\raw_pdb\PDB_GlobalSymbolStream.h" />
138+
<ClInclude Include="src\raw_pdb\PDB_ImageSectionStream.h" />
139+
<ClInclude Include="src\raw_pdb\PDB_InfoStream.h" />
140+
<ClInclude Include="src\raw_pdb\PDB_IPIStream.h" />
141+
<ClInclude Include="src\raw_pdb\PDB_IPITypes.h" />
142+
<ClInclude Include="src\raw_pdb\PDB_ModuleInfoStream.h" />
143+
<ClInclude Include="src\raw_pdb\PDB_ModuleLineStream.h" />
144+
<ClInclude Include="src\raw_pdb\PDB_ModuleSymbolStream.h" />
145+
<ClInclude Include="src\raw_pdb\PDB_NamesStream.h" />
146+
<ClInclude Include="src\raw_pdb\PDB_PCH.h" />
147+
<ClInclude Include="src\raw_pdb\PDB_PublicSymbolStream.h" />
148+
<ClInclude Include="src\raw_pdb\PDB_RawFile.h" />
149+
<ClInclude Include="src\raw_pdb\PDB_SectionContributionStream.h" />
150+
<ClInclude Include="src\raw_pdb\PDB_SourceFileStream.h" />
151+
<ClInclude Include="src\raw_pdb\PDB_TPIStream.h" />
152+
<ClInclude Include="src\raw_pdb\PDB_TPITypes.h" />
153+
<ClInclude Include="src\raw_pdb\PDB_Types.h" />
154+
<ClInclude Include="src\raw_pdb\PDB_Util.h" />
105155
<ClInclude Include="src\types.hpp" />
106156
</ItemGroup>
107157
<ItemGroup>

Sizer.vcxproj.filters

+153
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,9 @@
44
<Filter Include="src">
55
<UniqueIdentifier>{bbd26fb8-fdc8-4995-a8db-0e7a73db789e}</UniqueIdentifier>
66
</Filter>
7+
<Filter Include="src\raw_pdb">
8+
<UniqueIdentifier>{67f8a9c9-048a-41e5-abf8-3ff10b73d784}</UniqueIdentifier>
9+
</Filter>
710
</ItemGroup>
811
<ItemGroup>
912
<ClCompile Include="src\debuginfo.cpp">
@@ -18,6 +21,75 @@
1821
<ClCompile Include="src\parg.c">
1922
<Filter>src</Filter>
2023
</ClCompile>
24+
<ClCompile Include="src\raw_pdb\PDB.cpp">
25+
<Filter>src\raw_pdb</Filter>
26+
</ClCompile>
27+
<ClCompile Include="src\raw_pdb\PDB_CoalescedMSFStream.cpp">
28+
<Filter>src\raw_pdb</Filter>
29+
</ClCompile>
30+
<ClCompile Include="src\raw_pdb\PDB_DBIStream.cpp">
31+
<Filter>src\raw_pdb</Filter>
32+
</ClCompile>
33+
<ClCompile Include="src\raw_pdb\PDB_DBITypes.cpp">
34+
<Filter>src\raw_pdb</Filter>
35+
</ClCompile>
36+
<ClCompile Include="src\raw_pdb\PDB_DirectMSFStream.cpp">
37+
<Filter>src\raw_pdb</Filter>
38+
</ClCompile>
39+
<ClCompile Include="src\raw_pdb\PDB_GlobalSymbolStream.cpp">
40+
<Filter>src\raw_pdb</Filter>
41+
</ClCompile>
42+
<ClCompile Include="src\raw_pdb\PDB_ImageSectionStream.cpp">
43+
<Filter>src\raw_pdb</Filter>
44+
</ClCompile>
45+
<ClCompile Include="src\raw_pdb\PDB_InfoStream.cpp">
46+
<Filter>src\raw_pdb</Filter>
47+
</ClCompile>
48+
<ClCompile Include="src\raw_pdb\PDB_IPIStream.cpp">
49+
<Filter>src\raw_pdb</Filter>
50+
</ClCompile>
51+
<ClCompile Include="src\raw_pdb\PDB_ModuleInfoStream.cpp">
52+
<Filter>src\raw_pdb</Filter>
53+
</ClCompile>
54+
<ClCompile Include="src\raw_pdb\PDB_ModuleLineStream.cpp">
55+
<Filter>src\raw_pdb</Filter>
56+
</ClCompile>
57+
<ClCompile Include="src\raw_pdb\PDB_ModuleSymbolStream.cpp">
58+
<Filter>src\raw_pdb</Filter>
59+
</ClCompile>
60+
<ClCompile Include="src\raw_pdb\PDB_NamesStream.cpp">
61+
<Filter>src\raw_pdb</Filter>
62+
</ClCompile>
63+
<ClCompile Include="src\raw_pdb\PDB_PCH.cpp">
64+
<Filter>src\raw_pdb</Filter>
65+
</ClCompile>
66+
<ClCompile Include="src\raw_pdb\PDB_PublicSymbolStream.cpp">
67+
<Filter>src\raw_pdb</Filter>
68+
</ClCompile>
69+
<ClCompile Include="src\raw_pdb\PDB_RawFile.cpp">
70+
<Filter>src\raw_pdb</Filter>
71+
</ClCompile>
72+
<ClCompile Include="src\raw_pdb\PDB_SectionContributionStream.cpp">
73+
<Filter>src\raw_pdb</Filter>
74+
</ClCompile>
75+
<ClCompile Include="src\raw_pdb\PDB_SourceFileStream.cpp">
76+
<Filter>src\raw_pdb</Filter>
77+
</ClCompile>
78+
<ClCompile Include="src\raw_pdb\PDB_TPIStream.cpp">
79+
<Filter>src\raw_pdb</Filter>
80+
</ClCompile>
81+
<ClCompile Include="src\raw_pdb\PDB_Types.cpp">
82+
<Filter>src\raw_pdb</Filter>
83+
</ClCompile>
84+
<ClCompile Include="src\mmapfile.cpp">
85+
<Filter>src</Filter>
86+
</ClCompile>
87+
<ClCompile Include="src\pdb_typetable.cpp">
88+
<Filter>src</Filter>
89+
</ClCompile>
90+
<ClCompile Include="src\pe_utils.cpp">
91+
<Filter>src</Filter>
92+
</ClCompile>
2193
</ItemGroup>
2294
<ItemGroup>
2395
<ClInclude Include="src\debuginfo.hpp">
@@ -32,6 +104,87 @@
32104
<ClInclude Include="src\parg.h">
33105
<Filter>src</Filter>
34106
</ClInclude>
107+
<ClInclude Include="src\raw_pdb\PDB.h">
108+
<Filter>src\raw_pdb</Filter>
109+
</ClInclude>
110+
<ClInclude Include="src\raw_pdb\PDB_CoalescedMSFStream.h">
111+
<Filter>src\raw_pdb</Filter>
112+
</ClInclude>
113+
<ClInclude Include="src\raw_pdb\PDB_DBIStream.h">
114+
<Filter>src\raw_pdb</Filter>
115+
</ClInclude>
116+
<ClInclude Include="src\raw_pdb\PDB_DBITypes.h">
117+
<Filter>src\raw_pdb</Filter>
118+
</ClInclude>
119+
<ClInclude Include="src\raw_pdb\PDB_DirectMSFStream.h">
120+
<Filter>src\raw_pdb</Filter>
121+
</ClInclude>
122+
<ClInclude Include="src\raw_pdb\PDB_ErrorCodes.h">
123+
<Filter>src\raw_pdb</Filter>
124+
</ClInclude>
125+
<ClInclude Include="src\raw_pdb\PDB_GlobalSymbolStream.h">
126+
<Filter>src\raw_pdb</Filter>
127+
</ClInclude>
128+
<ClInclude Include="src\raw_pdb\PDB_ImageSectionStream.h">
129+
<Filter>src\raw_pdb</Filter>
130+
</ClInclude>
131+
<ClInclude Include="src\raw_pdb\PDB_InfoStream.h">
132+
<Filter>src\raw_pdb</Filter>
133+
</ClInclude>
134+
<ClInclude Include="src\raw_pdb\PDB_IPIStream.h">
135+
<Filter>src\raw_pdb</Filter>
136+
</ClInclude>
137+
<ClInclude Include="src\raw_pdb\PDB_IPITypes.h">
138+
<Filter>src\raw_pdb</Filter>
139+
</ClInclude>
140+
<ClInclude Include="src\raw_pdb\PDB_ModuleInfoStream.h">
141+
<Filter>src\raw_pdb</Filter>
142+
</ClInclude>
143+
<ClInclude Include="src\raw_pdb\PDB_ModuleLineStream.h">
144+
<Filter>src\raw_pdb</Filter>
145+
</ClInclude>
146+
<ClInclude Include="src\raw_pdb\PDB_ModuleSymbolStream.h">
147+
<Filter>src\raw_pdb</Filter>
148+
</ClInclude>
149+
<ClInclude Include="src\raw_pdb\PDB_NamesStream.h">
150+
<Filter>src\raw_pdb</Filter>
151+
</ClInclude>
152+
<ClInclude Include="src\raw_pdb\PDB_PCH.h">
153+
<Filter>src\raw_pdb</Filter>
154+
</ClInclude>
155+
<ClInclude Include="src\raw_pdb\PDB_PublicSymbolStream.h">
156+
<Filter>src\raw_pdb</Filter>
157+
</ClInclude>
158+
<ClInclude Include="src\raw_pdb\PDB_RawFile.h">
159+
<Filter>src\raw_pdb</Filter>
160+
</ClInclude>
161+
<ClInclude Include="src\raw_pdb\PDB_SectionContributionStream.h">
162+
<Filter>src\raw_pdb</Filter>
163+
</ClInclude>
164+
<ClInclude Include="src\raw_pdb\PDB_SourceFileStream.h">
165+
<Filter>src\raw_pdb</Filter>
166+
</ClInclude>
167+
<ClInclude Include="src\raw_pdb\PDB_TPIStream.h">
168+
<Filter>src\raw_pdb</Filter>
169+
</ClInclude>
170+
<ClInclude Include="src\raw_pdb\PDB_TPITypes.h">
171+
<Filter>src\raw_pdb</Filter>
172+
</ClInclude>
173+
<ClInclude Include="src\raw_pdb\PDB_Types.h">
174+
<Filter>src\raw_pdb</Filter>
175+
</ClInclude>
176+
<ClInclude Include="src\raw_pdb\PDB_Util.h">
177+
<Filter>src\raw_pdb</Filter>
178+
</ClInclude>
179+
<ClInclude Include="src\mmapfile.h">
180+
<Filter>src</Filter>
181+
</ClInclude>
182+
<ClInclude Include="src\pdb_typetable.hpp">
183+
<Filter>src</Filter>
184+
</ClInclude>
185+
<ClInclude Include="src\pe_utils.hpp">
186+
<Filter>src</Filter>
187+
</ClInclude>
35188
</ItemGroup>
36189
<ItemGroup>
37190
<None Include="readme.md" />

changelog.md

+19
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,22 @@
1+
### 0.5.0, 2023 Aug 4
2+
3+
Large speedup and removed dependency on `msdia*.dll`, by switching to [MolecularMatters/raw_pdb](https://github.com/MolecularMatters/raw_pdb)
4+
library for PDB file parsing. Sizer no longer uses MS DIA SDK, so maybe someday it will be able to run on Mac or Linux too!
5+
6+
The speedup example of analyzing current Blender build: time goes from 9.6sec down to 2.1sec (only some of that is raw_pdb library
7+
being faster, other speedups are within Sizer itself).
8+
9+
Overall sensible things that were reported before still seem to be sensible, but some "strange" things have changed. For example, previous versions
10+
used to report a massive `.text$mn` function attributed to one object file; that no longer happens. Previous versions used to *not* report
11+
some functions coming from linked static libraries, depending on how these were built.
12+
13+
- Sizer no longer uses MS DIA SDK, and thus no longer needs `msdia_*.dll` being present anywhere.
14+
- Generally much faster now (4x-20x faster in my tests).
15+
- Command line accepts either executable/dll (as before), or directly path to PDB file.
16+
- Change: some "strange" functions (e.g. massive `.text$mn`) are no longer reported.
17+
- Fix: previously some symbols from linked static libraries were not included, depending on how the libraries are built and how their debug symbols are being generated.
18+
- Emits warning when analyzing a partially stripped (`/PDBSTRIPPED`) debug information.
19+
120
### 0.4.0, 2023 Aug 2
221

322
- Sizer itself is now 64 bit executable (aras)

readme.md

+4-3
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# Sizer - Win32/64 executable size report utility
22

3-
See [project page](http://aras-p.info/projSizer.html) for a description.
3+
See [project page](https://aras-p.info/projSizer.html) for a description.
44

55
Changelog [here](changelog.md).
66

@@ -10,5 +10,6 @@ Other similar tools:
1010
* [SymbolSort](https://github.com/adrianstone55/SymbolSort) for Win32/PDB binaries.
1111
* [Bloaty McBloatface](https://github.com/google/bloaty) for ELF/Mach-O binaries.
1212

13-
License is public domain. Source contains CC0-licensed [parg](https://github.com/jibsen/parg)
14-
command line parser.
13+
License of the tool itself is public domain. Source contains third party code:
14+
- CC0-licensed [jibsen/parg](https://github.com/jibsen/parg) command line parser.
15+
- BSD-licensed [MolecularMatters/raw_pdb](https://github.com/MolecularMatters/raw_pdb) PDB library (rev `74b2b97`, 2023 Jul 28).

0 commit comments

Comments
 (0)