diff options
-rw-r--r-- | package/utils/dtc/Makefile | 4 | ||||
-rw-r--r-- | package/utils/dtc/patches/0001-Support-r-format-for-printing-raw-bytes-with-fdtget.patch | 137 |
2 files changed, 2 insertions, 139 deletions
diff --git a/package/utils/dtc/Makefile b/package/utils/dtc/Makefile index 94534b9c5e..5b1a38d50f 100644 --- a/package/utils/dtc/Makefile +++ b/package/utils/dtc/Makefile @@ -5,11 +5,11 @@ include $(TOPDIR)/rules.mk PKG_NAME:=dtc -PKG_VERSION:=1.6.1 +PKG_VERSION:=1.7.0 PKG_RELEASE:=$(AUTORELEASE) PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz -PKG_HASH:=65cec529893659a49a89740bb362f507a3b94fc8cd791e76a8d6a2b6f3203473 +PKG_HASH:=29edce3d302a15563d8663198bbc398c5a0554765c83830d0d4c0409d21a16c4 PKG_SOURCE_URL:=@KERNEL/software/utils/dtc PKG_MAINTAINER:=Yousong Zhou <yszhou4tech@gmail.com> diff --git a/package/utils/dtc/patches/0001-Support-r-format-for-printing-raw-bytes-with-fdtget.patch b/package/utils/dtc/patches/0001-Support-r-format-for-printing-raw-bytes-with-fdtget.patch deleted file mode 100644 index f7731f1a9d..0000000000 --- a/package/utils/dtc/patches/0001-Support-r-format-for-printing-raw-bytes-with-fdtget.patch +++ /dev/null @@ -1,137 +0,0 @@ -From 17739b7ef510917471409d71fb45d8eaf6a1e1fb Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= <rafal@milecki.pl> -Date: Thu, 9 Dec 2021 07:14:20 +0100 -Subject: [PATCH] Support 'r' format for printing raw bytes with fdtget -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -FT is sometimes used for storing raw data. That is quite common for -U-Boot FIT images. - -Extracting such data is not trivial currently. Using type 's' (string) -will replace every 0x00 (NUL) with 0x20 (space). Using type 'x' will -print bytes but in xxd incompatible format. - -This commit adds support for 'r' (raw) format. Example usage: -fdtget -t r firmware.itb /images/foo data > image.raw - -Support for encoding isn't added as there isn't any clean way of passing -binary data as command line argument. - -Signed-off-by: Rafał Miłecki <rafal@milecki.pl> -Message-Id: <20211209061420.29466-1-zajec5@gmail.com> -Signed-off-by: David Gibson <david@gibson.dropbear.id.au> ---- - Documentation/manual.txt | 2 +- - fdtget.c | 5 +++++ - fdtput.c | 2 ++ - tests/run_tests.sh | 2 ++ - tests/utilfdt_test.c | 5 ++++- - util.c | 4 ++-- - util.h | 3 ++- - 7 files changed, 18 insertions(+), 5 deletions(-) - ---- a/Documentation/manual.txt -+++ b/Documentation/manual.txt -@@ -712,7 +712,7 @@ The syntax of the fdtget command is: - - where options are: - -- <type> s=string, i=int, u=unsigned, x=hex -+ <type> s=string, i=int, u=unsigned, x=hex, r=raw - Optional modifier prefix: - hh or b=byte, h=2 byte, l=4 byte (default) - ---- a/fdtget.c -+++ b/fdtget.c -@@ -91,6 +91,11 @@ static int show_data(struct display_info - if (len == 0) - return 0; - -+ if (disp->type == 'r') { -+ fwrite(data, 1, len, stdout); -+ return 0; -+ } -+ - is_string = (disp->type) == 's' || - (!disp->type && util_is_printable_string(data, len)); - if (is_string) { ---- a/fdtput.c -+++ b/fdtput.c -@@ -433,6 +433,8 @@ int main(int argc, char *argv[]) - if (utilfdt_decode_type(optarg, &disp.type, - &disp.size)) - usage("Invalid type string"); -+ if (disp.type == 'r') -+ usage("Unsupported raw data type"); - break; - - case 'v': ---- a/tests/run_tests.sh -+++ b/tests/run_tests.sh -@@ -852,6 +852,8 @@ fdtget_tests () { - run_fdtget_test 8000 -tx $dtb /cpus/PowerPC,970@1 d-cache-size - run_fdtget_test "61 62 63 0" -tbx $dtb /randomnode tricky1 - run_fdtget_test "a b c d de ea ad be ef" -tbx $dtb /randomnode blob -+ run_fdtget_test "MyBoardName\0MyBoardFamilyName\0" -tr $dtb / compatible -+ run_fdtget_test "\x0a\x0b\x0c\x0d\xde\xea\xad\xbe\xef" -tr $dtb /randomnode blob - - # Here the property size is not a multiple of 4 bytes, so it should fail - run_wrap_error_test $DTGET -tlx $dtb /randomnode mixed ---- a/tests/utilfdt_test.c -+++ b/tests/utilfdt_test.c -@@ -73,6 +73,9 @@ static void check_sizes(char *modifier, - - *ptr = 's'; - check(fmt, 's', -1); -+ -+ *ptr = 'r'; -+ check(fmt, 'r', -1); - } - - static void test_utilfdt_decode_type(void) -@@ -90,7 +93,7 @@ static void test_utilfdt_decode_type(voi - /* try every other character */ - checkfail(""); - for (ch = ' '; ch < 127; ch++) { -- if (!strchr("iuxs", ch)) { -+ if (!strchr("iuxsr", ch)) { - *fmt = ch; - fmt[1] = '\0'; - checkfail(fmt); ---- a/util.c -+++ b/util.c -@@ -353,11 +353,11 @@ int utilfdt_decode_type(const char *fmt, - } - - /* we should now have a type */ -- if ((*fmt == '\0') || !strchr("iuxs", *fmt)) -+ if ((*fmt == '\0') || !strchr("iuxsr", *fmt)) - return -1; - - /* convert qualifier (bhL) to byte size */ -- if (*fmt != 's') -+ if (*fmt != 's' && *fmt != 'r') - *size = qualifier == 'b' ? 1 : - qualifier == 'h' ? 2 : - qualifier == 'l' ? 4 : -1; ---- a/util.h -+++ b/util.h -@@ -143,6 +143,7 @@ int utilfdt_write_err(const char *filena - * i signed integer - * u unsigned integer - * x hex -+ * r raw - * - * TODO: Implement ll modifier (8 bytes) - * TODO: Implement o type (octal) -@@ -160,7 +161,7 @@ int utilfdt_decode_type(const char *fmt, - */ - - #define USAGE_TYPE_MSG \ -- "<type>\ts=string, i=int, u=unsigned, x=hex\n" \ -+ "<type>\ts=string, i=int, u=unsigned, x=hex, r=raw\n" \ - "\tOptional modifier prefix:\n" \ - "\t\thh or b=byte, h=2 byte, l=4 byte (default)"; - |