Previously, we always set the work buffer to 64 bytes, without
checking it was no less the actual program size. But we can't
simply switch to use the program size for the work buffer,
because if it's too small (e.g. 1 byte in some cases), we
will not be able to read the status header (24 bytes), and
small buffers means more underlying write operations and
lower efficiency.
This PR changes the work buffer size to be the program size,
or 64 bytes as an absolute minimum like before.
Previously, when writing a record header into a TDBStore, we
took the pointer to the record_header_t variable as the input,
but used a program-aligned chunk size which is larger.
As a result, garbage from the stack memory gets written.
This commit fixes that by buffering the record header.
Co-authored-by: Seppo Takalo <seppo.takalo@arm.com>