# pot-head Binary Analysis Report
> **Note:** These are reference results from a specific toolchain version. Binary sizes
> are deterministic and depend only on the compiler version and optimization settings,
> not on hardware. Results should be identical across machines with the same toolchain.
**Generated:** 2026-03-13 07:14:03 UTC
**Targets:**
- Cortex-M0+ (`thumbv6m-none-eabi`) - No FPU, soft-float
- Cortex-M4F (`thumbv7em-none-eabihf`) - Hardware FPU, hard-float
**Optimization:** `opt-level = "z"` (size), LTO enabled
## Flash Footprint Summary
| M0+ | minimal | 1.7KB | - | 0B | 1.7KB | No libm, no grab-mode |
| M0+ | default | 2.9KB | - | 0B | 2.9KB | Logarithmic curves (libm) + grab-mode |
| M0+ | full | 2.9KB | - | 0B | 2.9KB | All features enabled |
| M4F | minimal | 198B | - | 0B | 198B | No libm, no grab-mode |
| M4F | default | 616B | - | 0B | 616B | Logarithmic curves (libm) + grab-mode |
| M4F | full | 624B | - | 0B | 624B | All features enabled |
## Feature Cost Breakdown
Analysis of binary size impact per feature:
### libm (std-math feature) - Logarithmic Curves
- **M0+ soft-float**: +1216B (1.2KB)
- **M4F hard-float**: +418B (0.4KB)
- **FPU savings**: 2340B (2.3KB or 79% reduction)
The logarithmic curve feature requires libm for transcendental functions.
On M0+ (no FPU), this adds significant soft-float emulation code.
On M4F (hardware FPU), libm is much more efficient.
### heapless (moving-average feature)
- **M0+**: +0B
- **M4F**: +8B
Moving average filter uses `heapless::Vec` for sample storage.
Impact is similar across targets (not FPU-dependent).
### grab-mode feature
- **Both targets**: Negligible impact (~0B)
Grab mode (Pickup/PassThrough) has no external dependencies and minimal code.
## Top Symbols by Size
Shows the largest symbols consuming Flash space (default features).
### Cortex-M0+ (default features)
```
File .text Size Crate Name
0.9% 25.8% 752B [Unknown] _start
0.6% 18.1% 528B std compiler_builtins::float::div::__divsf3
0.6% 17.3% 504B std compiler_builtins::float::add::__addsf3
0.5% 14.3% 416B std compiler_builtins::float::mul::__mulsf3
0.1% 3.7% 108B std __clzsi2
0.1% 3.6% 104B std __aeabi_fcmpge
0.1% 2.7% 80B std __aeabi_fcmple
0.1% 2.6% 76B std __aeabi_f2iz
0.1% 2.5% 74B std __aeabi_lmul
0.1% 2.3% 68B std __aeabi_i2f
0.2% 6.8% 198B And 7 smaller methods. Use -n N to show more.
3.3% 100.0% 2.8KiB .text section size, the file size is 86.3KiB
```
### Cortex-M4F (default features)
```
File .text Size Crate Name
30.9% 100.0% 576B [Unknown] _start
30.9% 100.0% 576B .text section size, the file size is 1.8KiB
Warning: it seems like the `.text` section is nearly empty. Try removing `strip = true` from Cargo.toml
```
---
*Generated by `tools/binary-analyzer/generate_report.sh`*