Skip to main content

Tool to analyze the size of a binary from .elf file

Project description

Binsize tool

Tool for analyzing the sizes of symbols in binaries.

It can be used to find out which symbols are taking up the most space in a binary.

It requires bloaty and nm tools to be installed.

It analyzes the .elf file and optionally also the .map file from the binary creation process.

Tool basic usage

Installable by pip install binsize - see PyPI.

Installing this package creates binsize command, which has a lot of subcommands seeable by binsize --help. For example

$ binsize get firmware.elf -d
$ binsize compare firmware.elf other_firmware.elf
$ binsize tree firmware.elf

--help can be used even on the subcommands, for example binsize get --help - to see all available options.

Result will be usually printed into terminal, unless specifying --output option which some commands support.

Setting root directory

To resolve all the files properly, the project's root directory needs to be set correctly.

There are couple of possibilities how to do it.

In the end, all of them are changing the root value in settings.json, from where everything else gets the value. It needs to be an absolute path.

settings.json will be created in a user's home directory, based on platformdirs library (~/.config/binsize/settings.json on linux).

Manually

Just modifying the root in the settings.json file.

Via environmental variable

BINSIZE_ROOT_DIR env variable is checked and when not empty, it will set the root directory.

e.g. BINSIZE_ROOT_DIR=/home/user/project binsize tree /path/to/file.elf

Via CLI argument

binsize accepts -r / --root-dir argument, which can be used to set the root directory.

It has lower priority than the environmental variable.

e.g. binsize -r /home/user/project tree /path/to/file.elf

Via exposed function

binsize exposes set_root_dir function, which can be called from any python script.

e.g. binsize.set_root_dir("/home/user/project")


TODO: document all the CLI commands, exportable symbols, basic functioning, ways to extend it, etc.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

binsize-0.1.3.tar.gz (29.4 kB view details)

Uploaded Source

Built Distribution

binsize-0.1.3-py3-none-any.whl (40.0 kB view details)

Uploaded Python 3

File details

Details for the file binsize-0.1.3.tar.gz.

File metadata

  • Download URL: binsize-0.1.3.tar.gz
  • Upload date:
  • Size: 29.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.4.2 CPython/3.10.10 Linux/5.15.97

File hashes

Hashes for binsize-0.1.3.tar.gz
Algorithm Hash digest
SHA256 d3a92381eefe61ab4cd29f5d71d8d59de6b9622452e4cbc8422cdf926cf61dd1
MD5 b92b05aa8b6a600682d5b2fd0796824b
BLAKE2b-256 373f268cb0091c7230811bb54e46ef7235d86bd987003f550017ca50c3a1e8f8

See more details on using hashes here.

File details

Details for the file binsize-0.1.3-py3-none-any.whl.

File metadata

  • Download URL: binsize-0.1.3-py3-none-any.whl
  • Upload date:
  • Size: 40.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.4.2 CPython/3.10.10 Linux/5.15.97

File hashes

Hashes for binsize-0.1.3-py3-none-any.whl
Algorithm Hash digest
SHA256 af041e449aab8b7166ae404ddb1d8d7815add3196f079f5da48eb4d9e5981205
MD5 8186078c9c59df8827767c221c0342b2
BLAKE2b-256 8a6c0ddb5bc8fe5f513a74709cdf8dd6da7894d0a9cb05420e759e6d35ac1cc6

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page