arm-float-detector

Detect software floating point usage in arm binaries


License
MIT
Install
pip install arm-float-detector==0.2.1

Documentation

Code style: black Travis (.com) branch PyPI version PyPI pyversions

🔍 arm-float-detector

Utility to detect soft float/double math library inclusion in arm binaries (objects/archives/elfs).

# install
$ pip install arm-float-detector

# run
$ arm-float-detector --double a.out && echo OK
No soft double libs found!
OK

Requirements

Besides python, needs the nm utility. If you're on *nix, you probably have it.

What is this

Some processors do not have single- and/or double-precision floating point hardware, but instead rely on float math software libraries, which are relatively slow and add take up additional space in the application.

Unfortunately I can't find options for gcc/ld to detect and prohibit (eg warnings/errors/configuration options) using these functions; I believe the definitions are in the compiler somehow (TODO actually research this).

This utility enables detecting usage of this soft floating point libraries in binaries, suitable for being integrated into a CI check to prevent them.

Features

  1. detect presence of single- or double-precision soft floating point libraries
  2. TODO whitelist objects allowed to reference these libs (eg vsprintf)
  3. TODO enable printing objects containing the references for simpler elimination

NOTE only tested on linux, where grep supports -E 'string|string'. You use a mac, good for you, no idea if this will work there. Dependency on grep will probably be removed in the future.