Today SizeBench fails to open binaries/PDBs produced by Zig. There are a few issues with Zig's toolchain, but SizeBench can still be made functional with some minimal changes until Zig can produce better PDBs.
In the future it would be good if Zig produced real command lines data for compilands (it comes through now as just "0"), and had its own CV_CFL_LANG enum value from DIA, but in the meantime we can special-case code that says it is CV_CFL_LANG_C and built with a tool name of "zig" to assume this is Zig code.
Zig also links in by default a library that uses __float128 so we should support that 16-byte floating point type, which benefits GCC and Clang as well, which I believe can both compile that type.
Zig also produces the longest, most convoluted COFF Group names I've ever seen which exposed bugs in how COFF Group names got converted to XAML property paths in the UI code. That's fixed now, though honestly Zig shouldn't generate COFF Group names so absurd.
Briefly summarize what changed
Add Zig to the list of compiland/tool languages
Add support for 16-byte floating point types
Escape COFF Group names in XAML property path bindings
How was the change tested?
Added a Zig RealPETests set of tests that check for loading symbols, type layouts, etc. Also check that the Zig language is detected correctly on a compiland, and that the built-in __float128-using function parses correctly.
PR Checklist
[x] Contributor License Agreement (CLA) has been signed. If not, go here and sign the CLA
[x] Changes have been validated
[x] Documentation updated. Please add or update any docs in the repo as necessary.
Why is this change being made?
Today SizeBench fails to open binaries/PDBs produced by Zig. There are a few issues with Zig's toolchain, but SizeBench can still be made functional with some minimal changes until Zig can produce better PDBs.
In the future it would be good if Zig produced real command lines data for compilands (it comes through now as just "0"), and had its own
CV_CFL_LANG
enum value from DIA, but in the meantime we can special-case code that says it isCV_CFL_LANG_C
and built with a tool name of "zig" to assume this is Zig code.Zig also links in by default a library that uses
__float128
so we should support that 16-byte floating point type, which benefits GCC and Clang as well, which I believe can both compile that type.Zig also produces the longest, most convoluted COFF Group names I've ever seen which exposed bugs in how COFF Group names got converted to XAML property paths in the UI code. That's fixed now, though honestly Zig shouldn't generate COFF Group names so absurd.
Briefly summarize what changed
How was the change tested?
Added a Zig
RealPETests
set of tests that check for loading symbols, type layouts, etc. Also check that the Zig language is detected correctly on a compiland, and that the built-in__float128
-using function parses correctly.PR Checklist