diff options
author | imp <imp@FreeBSD.org> | 2012-07-24 16:29:33 +0000 |
---|---|---|
committer | imp <imp@FreeBSD.org> | 2012-07-24 16:29:33 +0000 |
commit | 271289d4bf786cb542f44a7cc435e7eea1463eec (patch) | |
tree | 60be8a4bac3452ea449c82c5dfefde0485cdb631 /contrib/dtc/treesource.c | |
parent | b7a0f04c526af6628c15d9d29f4ea078ad0f4caf (diff) | |
parent | 411f4c1084154670913f56f4218e1d7f103cd348 (diff) | |
download | FreeBSD-src-271289d4bf786cb542f44a7cc435e7eea1463eec.zip FreeBSD-src-271289d4bf786cb542f44a7cc435e7eea1463eec.tar.gz |
Update to latest git version of dtc to get new dtsv2 support,
including the include directive.
Fix minor build issue corrected by converting yypush_buffer_state and
yypop_buffer_state to yy_set_buffer_state and a hard-coded 100-deep
stack. It was easier to fix it here than to import that support into
our flex.
The new tools and test hardness remain unsupported at the moment.
Diffstat (limited to 'contrib/dtc/treesource.c')
-rw-r--r-- | contrib/dtc/treesource.c | 21 |
1 files changed, 13 insertions, 8 deletions
diff --git a/contrib/dtc/treesource.c b/contrib/dtc/treesource.c index cc1751d..33eeba5 100644 --- a/contrib/dtc/treesource.c +++ b/contrib/dtc/treesource.c @@ -23,6 +23,7 @@ extern FILE *yyin; extern int yyparse(void); +extern YYLTYPE yylloc; struct boot_info *the_boot_info; int treesource_error; @@ -32,8 +33,9 @@ struct boot_info *dt_from_source(const char *fname) the_boot_info = NULL; treesource_error = 0; - srcpos_file = dtc_open_file(fname, NULL); - yyin = srcpos_file->file; + srcfile_push(fname); + yyin = current_srcfile->f; + yylloc.file = current_srcfile; if (yyparse() != 0) die("Unable to parse input tree\n"); @@ -235,10 +237,11 @@ static void write_tree_source_node(FILE *f, struct node *tree, int level) { struct property *prop; struct node *child; + struct label *l; write_prefix(f, level); - if (tree->label) - fprintf(f, "%s: ", tree->label); + for_each_label(tree->labels, l) + fprintf(f, "%s: ", l->label); if (tree->name && (*tree->name)) fprintf(f, "%s {\n", tree->name); else @@ -246,8 +249,8 @@ static void write_tree_source_node(FILE *f, struct node *tree, int level) for_each_property(tree, prop) { write_prefix(f, level+1); - if (prop->label) - fprintf(f, "%s: ", prop->label); + for_each_label(prop->labels, l) + fprintf(f, "%s: ", l->label); fprintf(f, "%s", prop->name); write_propval(f, prop); } @@ -267,8 +270,10 @@ void dt_to_source(FILE *f, struct boot_info *bi) fprintf(f, "/dts-v1/;\n\n"); for (re = bi->reservelist; re; re = re->next) { - if (re->label) - fprintf(f, "%s: ", re->label); + struct label *l; + + for_each_label(re->labels, l) + fprintf(f, "%s: ", l->label); fprintf(f, "/memreserve/\t0x%016llx 0x%016llx;\n", (unsigned long long)re->re.address, (unsigned long long)re->re.size); |