From: Frank Rowand <frowand.list-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
To: David Gibson <david-xT8FGy+AXnRB3Ne2BGzF6laj5H9X9Tb+@public.gmane.org>
Cc: Jon Loeliger <jdl-CYoMK+44s/E@public.gmane.org>,
devicetree-compiler-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
Subject: Re: [RFC PATCH 1/3] dtc: dts source location annotation
Date: Mon, 21 Sep 2015 10:55:11 -0700 [thread overview]
Message-ID: <5600447F.8010307@gmail.com> (raw)
In-Reply-To: <20150921063119.GL20331-RXTfZT5YzpxwFLYp8hBm2A@public.gmane.org>
On 9/20/2015 11:31 PM, David Gibson wrote:
> On Tue, Sep 15, 2015 at 09:22:18PM -0700, Frank Rowand wrote:
>>
>> From: Frank Rowand <frank.rowand-/MT0OVThwyLZJqsBc5GL+g@public.gmane.org>
>>
>> Proof of concept patch.
>>
>> Annotates input source file and line number of nodes and properties
>> as comments in output .dts file when --annotate flag is supplied.
>>
>> Not-signed-off-by: Frank Rowand <frank.rowand-/MT0OVThwyLZJqsBc5GL+g@public.gmane.org>
>
> A like the concept, but I have some queries about the implementation.
>
>> ---
>> dtc-lexer.l | 2 +
>> dtc.c | 9 ++++++++
>> dtc.h | 14 +++++++++++++
>> livetree.c | 62 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
>> srcpos.h | 6 +++++
>> treesource.c | 27 ++++++++++++++++++++-----
>> 6 files changed, 115 insertions(+), 5 deletions(-)
>>
>> Index: b/dtc.h
>> ===================================================================
>> --- a/dtc.h
>> +++ b/dtc.h
>> @@ -54,6 +54,7 @@ extern int reservenum; /* Number of mem
>> extern int minsize; /* Minimum blob size */
>> extern int padsize; /* Additional padding to blob */
>> extern int phandle_format; /* Use linux,phandle or phandle properties */
>> +extern bool annotate; /* annotate .dts with input source location */
>>
>> #define PHANDLE_LEGACY 0x1
>> #define PHANDLE_EPAPR 0x2
>> @@ -126,6 +127,16 @@ bool data_is_one_string(struct data d);
>> #define MAX_NODENAME_LEN 31
>>
>> /* Live trees */
>> +struct src {
>> + char *name;
>> + int lineno;
>> +};
>
> I'd prefer to see the existing struct srcpos used, rather than
> creating a new structure.
My next version of the patch will still have struct src, but I
will explain why it exists. If your comment still stands with
me additional explanation, please repeat it.
>
>> +struct prop_src {
>> + struct prop_src *prev;
>> + struct src src;
>> +};
>> +
>> struct label {
>> bool deleted;
>> char *label;
>> @@ -140,6 +151,7 @@ struct property {
>> struct property *next;
>>
>> struct label *labels;
>> + struct src src;
>> };
>>
>> struct node {
>> @@ -158,6 +170,8 @@ struct node {
>> int addr_cells, size_cells;
>>
>> struct label *labels;
>> + struct src begin_src;
>> + struct src end_src;
>> };
>>
>> #define for_each_label_withdel(l0, l) \
>> Index: b/livetree.c
>> ===================================================================
>> --- a/livetree.c
>> +++ b/livetree.c
>> @@ -19,6 +19,9 @@
>> */
>>
>> #include "dtc.h"
>> +#include "srcpos.h"
>> +
>> +struct prop_src *prev_prop_src = NULL;
>
> So you've built a new global stack here, and I don't really understand
> what it's for. The parser already tracks source positions for each
> construct, so you should be able to just use that. You'd need to pass
> the srcpos from dtc-parser.y into the tree building calls in more
> places, but that should be it.
This is the part that I struggled with most. You have given me the clue
that I was overlooking. I'll send out a new version without the global
stack later today.
>
> Or have I missed something?
>
>> /*
>> * Tree building functions
>> @@ -58,6 +61,13 @@ struct property *build_property(char *na
>>
>> new->name = name;
>> new->val = val;
>> + if (current_srcfile) {
>> + new->src.name = current_srcfile->name;
>> + new->src.lineno = current_srcfile->lineno;
>> + } else {
>> + new->src.name = "__builtin__";
>> + new->src.lineno = 0;
>
> A comment explaining when this will happen in practice would be nice.
I'm not sure what you are asking. When current_srcfile will be null?
I'll add a comment for that.
>
> Incidentally.. what happens if you use dtb input and try to annotate?
There is no source information, which means the output would be of no use.
I chose to address this by the check in dtc.c to only allow --annotate
for inform and outform of "dts".
Thanks for the comments.
-Frank
next prev parent reply other threads:[~2015-09-21 17:55 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-09-16 4:08 [RFC PATCH 0/3] dtc: dts source location annotation Frank Rowand
[not found] ` <55F8EB35.5010601-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2015-09-16 4:19 ` Frank Rowand
2015-09-16 4:22 ` [RFC PATCH 1/3] " Frank Rowand
[not found] ` <55F8EE7A.7080301-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2015-09-21 6:31 ` David Gibson
[not found] ` <20150921063119.GL20331-RXTfZT5YzpxwFLYp8hBm2A@public.gmane.org>
2015-09-21 17:55 ` Frank Rowand [this message]
2015-09-16 4:24 ` [RFC PATCH 2/3] dtc: make check test for dtc --annotate Frank Rowand
[not found] ` <55F8EF1B.1040003-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2015-09-21 6:33 ` David Gibson
[not found] ` <20150921063336.GM20331-RXTfZT5YzpxwFLYp8hBm2A@public.gmane.org>
2015-09-21 17:55 ` Frank Rowand
2015-09-16 4:29 ` [RFC PATCH 3/3] dtc: linux kernel build process to create annotated .dts Frank Rowand
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=5600447F.8010307@gmail.com \
--to=frowand.list-re5jqeeqqe8avxtiumwx3w@public.gmane.org \
--cc=david-xT8FGy+AXnRB3Ne2BGzF6laj5H9X9Tb+@public.gmane.org \
--cc=devicetree-compiler-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=jdl-CYoMK+44s/E@public.gmane.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.