When using --print-memory-usage, the printed size can be zero and in
that case, the unit should be B and not GB.
ld/
* ldlang.c (lang_print_memory_size) Print 0 B instead of 0 GB.
* testsuite/ld-scripts/print-memory-usage-1.l: Validate emplty region.
* testsuite/ld-scripts/print-memory-usage-1.t: Define empty region.
Signed-off-by: Torbjörn SVENSSON <torbjorn.svensson@foss.st.com>
static void
lang_print_memory_size (uint64_t sz)
{
- if ((sz & 0x3fffffff) == 0)
+ if (sz == 0)
+ printf (" %10" PRIu64 " B", sz);
+ else if ((sz & 0x3fffffff) == 0)
printf ("%10" PRIu64 " GB", sz >> 30);
else if ((sz & 0xfffff) == 0)
printf ("%10" PRIu64 " MB", sz >> 20);
Memory region Used Size Region Size %age Used
ROM: 32 B 1 KB 3.1[23]%
RAM: 32 B 256 KB 0.01%
+ FOO: 0 B 1 KB 0.00%
{
ROM (RX) : ORIGIN = 0x1000, LENGTH = 1K
RAM (W) : ORIGIN = 0x100000, LENGTH = 256K
+ FOO (RX) : ORIGIN = 0x100, LENGTH = 1K
}