mirror of
https://source.denx.de/u-boot/u-boot.git
synced 2026-06-02 01:36:37 +03:00
Makefile: remove block from conv=block, sync in SPL alignment dd
The line that produces $(SPL_BIN)-align.bin invokes dd with
conv=block,sync but no cbs= operand. The result of dd conv=block
without cbs= is unspecified. GNU coreutils outputs anyway, but
uutils (default in Ubuntu 26.04 LTS) errors out for files with
newlines, including SPL binaries, producing:
dd: conv=block or conv=ubnblock specified without cbs=N
Either the block operand must be removed, or cbs=N must be added.
conv=block is for converting newline-terminated variable-length
records to fixed-length space-padded ones, which is meaningless
for a binary SPL image. The intent of the rule is 4-byte
alignment, which conv=sync alone provides by padding the final
block to bs= bytes with NULs.
During build, u-boot-spl-align.bin errors silently due to '@'.
Reproduced with uutils dd 0.8.0:
$ dd if=/dev/urandom of=/tmp/in bs=1 count=10000
$ dd if=/tmp/in of=/tmp/out conv=block,sync bs=4
dd: conv=block or conv=unblock specified without cbs=N
$ dd if=/tmp/in of=/tmp/out conv=sync bs=4
[succeeds]
Output is byte-identical to GNU dd's output for binary input.
Signed-off-by: Brad Klingerman <bdklingerman@gmail.com>
Reviewed-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Tom Rini <trini@konsulko.com>
This commit is contained in:
committed by
Tom Rini
parent
3cdd19089f
commit
26b17dbdb0
@@ -257,7 +257,7 @@ MKIMAGEFLAGS_boot.bin = -T zynqmpimage -R $(srctree)/$(CONFIG_BOOT_INIT_FILE) \
|
||||
endif
|
||||
|
||||
$(obj)/$(SPL_BIN)-align.bin: $(obj)/$(SPL_BIN).bin
|
||||
@dd if=$< of=$@ conv=block,sync bs=4 2>/dev/null;
|
||||
@dd if=$< of=$@ conv=sync bs=4 2>/dev/null;
|
||||
|
||||
spl/boot.bin: $(obj)/$(SPL_BIN)-align.bin FORCE
|
||||
$(call if_changed,mkimage)
|
||||
|
||||
Reference in New Issue
Block a user