]> git.dujemihanovic.xyz Git - u-boot.git/commitdiff
Makefile: fix generation of defaultenv.h from empty initial file
authorRasmus Villemoes <rasmus.villemoes@prevas.dk>
Thu, 22 Apr 2021 07:44:18 +0000 (09:44 +0200)
committerTom Rini <trini@konsulko.com>
Tue, 27 Apr 2021 12:05:30 +0000 (08:05 -0400)
When CONFIG_USE_DEFAULT_ENV_FILE=y and the file
CONFIG_DEFAULT_ENV_FILE is empty (or at least doesn't contain any
non-comment, non-empty lines), we end up feeding nothing into xxd,
which in turn then outputs nothing. Then blindly appending ", 0x00"
means that we end up trying to compile (roughly)

const char defaultenv[] = { , 0x00 }

which is of course broken.

To fix that, change the frobbing of the text file so that we always
end up printing an extra empty line (which gets turned into that extra
nul byte we need) - that corresponds better to the binary format
consisting of a series of key=val nul terminated strings, terminated
by an empty string.

Reported-by: Oleksandr Suvorov <oleksandr.suvorov@toradex.com>
Signed-off-by: Rasmus Villemoes <rasmus.villemoes@prevas.dk>
Reviewed-by: Oleksandr Suvorov <oleksandr.suvorov@toradex.com>
Makefile

index a0ab464ea9c679d1c5a7fbc85c4204355755b671..404977efa527d2205381fd7561823442e280570d 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -1854,11 +1854,10 @@ define filechk_timestamp.h
 endef
 
 define filechk_defaultenv.h
-       (grep -v '^#' | \
-        grep -v '^$$' | \
+       ( { grep -v '^#' | grep -v '^$$' || true ; echo '' ; } | \
         tr '\n' '\0' | \
         sed -e 's/\\\x0\s*//g' | \
-        xxd -i ; echo ", 0x00" ; )
+        xxd -i ; )
 endef
 
 define filechk_dt.h