There are three formats that SuperSize uses:
.size
files:supersize archive
.padding
, short_name
, and template_name
are omitted and re-derived when loading..size
files:supersize console
..size
file..sizediff
files:supersize console
or supersize save_diff
..size
files, where unchanged symbols are removed from each.The file format is a gzipped
encoding of symbols, where some symbol fields are delta-encoded to improve compressibility. Text was chosen over binary because it is easier to work with in Python and is easier than binary to debug. An effort was made to make the text highly compressible in order to keep the file sizes as small as possible.
Each .size
file contains:
The following specifies the .size
file format.
The JSON for the header fields looks like:
{ "build_config": { "git_revision": "f49193cacf8ed34160a04ada4acf2ad6a1a030c8", "gn_args": [ ... ], "tool_prefix": "third_party/llvm-build/Release+Asserts/bin/llvm-" }, "containers": [ { "name": "TrichromeLibrary.apk", "metadata": { ... (see models.py METADATA_ for list of keys) }, "section_sizes": { ".rodata": 8344540, ".shstrtab": 287, ".text": 52389250 ... } }, ... ], "has_components": true, "has_disassembly": true, "has_padding": false }
object_path
, source_path
) where the two parts are tab-separated.has_components
is True in header fields."<Container Name>section_names"
.In each section, the number of rows is the same as the number of items per line in Symbol Counts. The values on a row are space separated, in the order of the symbols in each group.
The numeric values are:
has_padding
is True in header fields.has_components
is True in header fields.full_name
,num_aliases
(omitted when identical to previous line),flags
(omitted when 0).The .sizediff
file stores two sparse .size
files.
The JSON for the header fields looks like:
{ "before_length": 1234, "version": 1 }
A sparse .size
file (gzipped).
A sparse .size
file (gzipped).