Received: by 2002:a25:8b91:0:0:0:0:0 with SMTP id j17csp4247494ybl; Mon, 13 Jan 2020 10:18:03 -0800 (PST) X-Google-Smtp-Source: APXvYqxyAPAt46+gBb0UW+EVGvEufOb6VDoh4XWhpLi5wcJPR2sAuL9B/N2/0GghTVQBtqnByQra X-Received: by 2002:a9d:7315:: with SMTP id e21mr14563218otk.255.1578939482934; Mon, 13 Jan 2020 10:18:02 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1578939482; cv=none; d=google.com; s=arc-20160816; b=EHL2AqzzZfVXQ9pQbZPzwAWwAB0iTVXNdjX54ScV/ko/VTAm5Qvc3T6iZid0xaqqSd k+mINnG+WS4JjHLM76MZkNH4/3LTqQ5jmktMsiisAao2QzwUye8Crx7Vn6dvQJxc8HLX 4GhJWbE9RKLAJMqIhb1h4w59l5R455bct33Qr68VarzH9STn7UuBzir8ew0IBbfqWl9U qAPcv6h5zia4dFXmw3MbIZyjils5hCBD3nrQUqLcYDdNDgcbeSBStnTPLz70ZDkiUgan FGcOFIg1DWh8mVThZOoLZdcoWmMTNLtdzaVy00dFrs3Ddo8y5E6zxx6MNREE13RX7mvX /iSg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:dkim-signature; bh=jqz4VLQz2pbgJRJ9HLcUA7hHoCj0rPEjHAlpBG1sbDM=; b=djJXHatEP8YYH96FmMEpRPk8Q9THqTi3dEy8/6IsAPDcQE7mTvzZhJ8wyG598Yxnsi u8b4n1MqaTnfaoOucFEM5QPzd0GTIJ2FK8KLbCTpM7BJKGuKAxstgbnQZAQNJXpdG1xT 7Zt0dq7O+IM01CV6/OnZN5FXM4SNFMmjmK7I9SmS/IxswqeWzmpg4Q2HDklMP3BXpA6H shLd5nLeupPHayTVktvx7lxQcARodrqYM0iPkO82AgC5XhikS5mJiyvQCisPx7sNGXt+ Yzt3MygjgyL/81bowyjCZatxqLBilg1kWGjFSz+/fnHJl4V9YblcUQIP/qUYCBSkyZNy lSgQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@st.com header.s=STMicroelectronics header.b=Ubb3nfV8; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=st.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id c26si7643766otf.288.2020.01.13.10.17.51; Mon, 13 Jan 2020 10:18:02 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@st.com header.s=STMicroelectronics header.b=Ubb3nfV8; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=st.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728943AbgAMSQy (ORCPT + 99 others); Mon, 13 Jan 2020 13:16:54 -0500 Received: from mx08-00178001.pphosted.com ([91.207.212.93]:37348 "EHLO mx07-00178001.pphosted.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1728689AbgAMSQv (ORCPT ); Mon, 13 Jan 2020 13:16:51 -0500 Received: from pps.filterd (m0046661.ppops.net [127.0.0.1]) by mx07-00178001.pphosted.com (8.16.0.42/8.16.0.42) with SMTP id 00DICJLZ013375; Mon, 13 Jan 2020 19:16:32 +0100 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=st.com; h=from : to : cc : subject : date : message-id : in-reply-to : references : mime-version : content-type; s=STMicroelectronics; bh=jqz4VLQz2pbgJRJ9HLcUA7hHoCj0rPEjHAlpBG1sbDM=; b=Ubb3nfV8EsWSDtDcV2HNBGGHkPLs8aK7mzlgH8n6yzasB7xdJ+04qlM2NwWe5Xid6rKy hUzRVXxWyOXwU5zdAYG2wNigZHu3ATSOZ+uLvLfL34XT9sHfuHAMn736owgsRFC6A8r6 n/bn/O56cPlKKcS3WsjfwmrWU6x3FNQe3eJ1uY8+pp9JMOWtB53F5IGUAVmGelpzEvCm CEYHQfYNk7Wqd9E611K9VarG0kQylIrJdn+lLNUZlGkawli91K7uGOFS3Oq33x+HJwbz 6jzNnz6GtNDrY4txXGlRXpuPMHQIeI2ylnhKd54xPSgW9+rMgv7lYvve2+vNr3ZX91/K TA== Received: from beta.dmz-eu.st.com (beta.dmz-eu.st.com [164.129.1.35]) by mx07-00178001.pphosted.com with ESMTP id 2xf7jp9cja-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Mon, 13 Jan 2020 19:16:32 +0100 Received: from euls16034.sgp.st.com (euls16034.sgp.st.com [10.75.44.20]) by beta.dmz-eu.st.com (STMicroelectronics) with ESMTP id 74F19100039; Mon, 13 Jan 2020 19:16:29 +0100 (CET) Received: from Webmail-eu.st.com (sfhdag3node2.st.com [10.75.127.8]) by euls16034.sgp.st.com (STMicroelectronics) with ESMTP id 636142B1891; Mon, 13 Jan 2020 19:16:29 +0100 (CET) Received: from localhost (10.75.127.51) by SFHDAG3NODE2.st.com (10.75.127.8) with Microsoft SMTP Server (TLS) id 15.0.1347.2; Mon, 13 Jan 2020 19:16:29 +0100 From: Alexandre Torgue To: , Frank Rowand , Masahiro Yamada , Michal Marek , , CC: , Alexandre Torgue , , , Subject: [RFC PATCH 1/3] dtc: Add dtb build information option Date: Mon, 13 Jan 2020 19:16:23 +0100 Message-ID: <20200113181625.3130-2-alexandre.torgue@st.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20200113181625.3130-1-alexandre.torgue@st.com> References: <20200113181625.3130-1-alexandre.torgue@st.com> MIME-Version: 1.0 Content-Type: text/plain X-Originating-IP: [10.75.127.51] X-ClientProxiedBy: SFHDAG3NODE2.st.com (10.75.127.8) To SFHDAG3NODE2.st.com (10.75.127.8) X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:6.0.138,18.0.572 definitions=2020-01-13_06:2020-01-13,2020-01-13 signatures=0 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org This commit adds the possibility to add build information for a DTB. Build information can be: build date, DTS version, "who built the DTB" (same kind of information that we get in Linux with the Linux banner). To do this, an extra option "-B" using an information file as argument has been added. If this option is used, input device tree is appended with a new string property "Build-info". This property is built with information found in information file given as argument. This file has to be generated by user and shouldn't exceed 256 bytes. Signed-off-by: Alexandre Torgue diff --git a/scripts/dtc/dtc.c b/scripts/dtc/dtc.c index bdb3f5945699..294828bac20b 100644 --- a/scripts/dtc/dtc.c +++ b/scripts/dtc/dtc.c @@ -18,6 +18,7 @@ int padsize; /* Additional padding to blob */ int alignsize; /* Additional padding to blob accroding to the alignsize */ int phandle_format = PHANDLE_EPAPR; /* Use linux,phandle or phandle properties */ int generate_symbols; /* enable symbols & fixup support */ +int generate_build_info; /* Add build information: time, source version ... */ int generate_fixups; /* suppress generation of fixups on symbol support */ int auto_label_aliases; /* auto generate labels -> aliases */ int annotate; /* Level of annotation: 1 for input source location @@ -45,9 +46,42 @@ static void fill_fullpaths(struct node *tree, const char *prefix) fill_fullpaths(child, tree->fullpath); } +static void fill_build_info(struct node *tree, const char *fname) +{ + struct data d = empty_data; + char *tmp; + FILE *f; + int len; + + tmp = xmalloc(sizeof(char) * 256); + + f = fopen(fname, "r"); + if (!f) { + printf("Can't open file %s\n", fname); + return; + } + + len = fread(tmp, sizeof(char), 256, f); + if (!len) { + printf("Can't read file %s\n", fname); + fclose(f); + free(tmp); + } + fclose(f); + + tmp[len - 1] = '\0'; + + d = data_add_marker(d, TYPE_STRING, tmp); + d = data_append_data(d, tmp, len); + + add_property(tree, build_property("Build-info", d, NULL)); + + free(tmp); +} + /* Usage related data. */ static const char usage_synopsis[] = "dtc [options] "; -static const char usage_short_opts[] = "qI:O:o:V:d:R:S:p:a:fb:i:H:sW:E:@AThv"; +static const char usage_short_opts[] = "qI:O:o:V:d:R:S:p:a:fb:i:H:sW:E:@AT:B:hv"; static struct option const usage_long_opts[] = { {"quiet", no_argument, NULL, 'q'}, {"in-format", a_argument, NULL, 'I'}, @@ -69,6 +103,7 @@ static struct option const usage_long_opts[] = { {"symbols", no_argument, NULL, '@'}, {"auto-alias", no_argument, NULL, 'A'}, {"annotate", no_argument, NULL, 'T'}, + {"build-info", a_argument, NULL, 'B'}, {"help", no_argument, NULL, 'h'}, {"version", no_argument, NULL, 'v'}, {NULL, no_argument, NULL, 0x0}, @@ -106,6 +141,7 @@ static const char * const usage_opts_help[] = { "\n\tEnable generation of symbols", "\n\tEnable auto-alias of labels", "\n\tAnnotate output .dts with input source file and line (-T -T for more details)", + "\n\tAdd build information (date, version, ...) in the blob", "\n\tPrint this help and exit", "\n\tPrint version and exit", NULL, @@ -164,6 +200,7 @@ int main(int argc, char *argv[]) const char *outform = NULL; const char *outname = "-"; const char *depname = NULL; + const char *version = NULL; bool force = false, sort = false; const char *arg; int opt; @@ -256,9 +293,12 @@ int main(int argc, char *argv[]) case 'T': annotate++; break; - case 'h': usage(NULL); + case 'B': + version = optarg; + generate_build_info = 1; + break; default: usage("unknown option"); } @@ -296,14 +336,17 @@ int main(int argc, char *argv[]) } if (annotate && (!streq(inform, "dts") || !streq(outform, "dts"))) die("--annotate requires -I dts -O dts\n"); - if (streq(inform, "dts")) + if (streq(inform, "dts")) { dti = dt_from_source(arg); - else if (streq(inform, "fs")) + if (generate_build_info) + fill_build_info(dti->dt, version); + } else if (streq(inform, "fs")) { dti = dt_from_fs(arg); - else if(streq(inform, "dtb")) + } else if (streq(inform, "dtb")) { dti = dt_from_blob(arg); - else + } else { die("Unknown input format \"%s\"\n", inform); + } dti->outname = outname; -- 2.17.1