On Fri, May 17, 2019 at 2:28 PM Rob Herring <robh@xxxxxxxxxx> wrote: > > The YAML output fails for overlays and when symbol generation are enabled > due to missing markers in the generated properties. > > Add type markers when generating properties under '__symbols__' and > '__fixups__' nodes as well as target-path properties. As a side effect of > append_to_property() changes, this also sets type markers in > '__local_fixups__' node properties. > > Signed-off-by: Rob Herring <robh@xxxxxxxxxx> > --- > dtc.h | 3 ++- > livetree.c | 18 +++++++++++------- > 2 files changed, 13 insertions(+), 8 deletions(-) Ping. > > diff --git a/dtc.h b/dtc.h > index 789e0b1bc057..0d5fa215ac87 100644 > --- a/dtc.h > +++ b/dtc.h > @@ -231,7 +231,8 @@ void add_child(struct node *parent, struct node *child); > void delete_node_by_name(struct node *parent, char *name); > void delete_node(struct node *node); > void append_to_property(struct node *node, > - char *name, const void *data, int len); > + char *name, const void *data, int len, > + enum markertype type); > > const char *get_unitname(struct node *node); > struct property *get_property(struct node *node, const char *propname); > diff --git a/livetree.c b/livetree.c > index 7a2e6446a17b..a18529f7474b 100644 > --- a/livetree.c > +++ b/livetree.c > @@ -249,6 +249,7 @@ struct node * add_orphan_node(struct node *dt, struct node *new_node, char *ref) > char *name; > > if (ref[0] == '/') { > + d = data_add_marker(d, TYPE_STRING, ref); > d = data_append_data(d, ref, strlen(ref) + 1); > > p = build_property("target-path", d, NULL); > @@ -350,17 +351,20 @@ void delete_node(struct node *node) > } > > void append_to_property(struct node *node, > - char *name, const void *data, int len) > + char *name, const void *data, int len, > + enum markertype type) > { > struct data d; > struct property *p; > > p = get_property(node, name); > if (p) { > - d = data_append_data(p->val, data, len); > + d = data_add_marker(p->val, type, name); > + d = data_append_data(d, data, len); > p->val = d; > } else { > - d = data_append_data(empty_data, data, len); > + d = data_add_marker(empty_data, type, name); > + d = data_append_data(d, data, len); > p = build_property(name, d, NULL); > add_property(node, p); > } > @@ -858,8 +862,8 @@ static void generate_label_tree_internal(struct dt_info *dti, > > /* insert it */ > p = build_property(l->label, > - data_copy_mem(node->fullpath, > - strlen(node->fullpath) + 1), > + data_copy_escape_string(node->fullpath, > + strlen(node->fullpath)), > NULL); > add_property(an, p); > } > @@ -910,7 +914,7 @@ static void add_fixup_entry(struct dt_info *dti, struct node *fn, > > xasprintf(&entry, "%s:%s:%u", > node->fullpath, prop->name, m->offset); > - append_to_property(fn, m->ref, entry, strlen(entry) + 1); > + append_to_property(fn, m->ref, entry, strlen(entry) + 1, TYPE_STRING); > > free(entry); > } > @@ -993,7 +997,7 @@ static void add_local_fixup_entry(struct dt_info *dti, > free(compp); > > value_32 = cpu_to_fdt32(m->offset); > - append_to_property(wn, prop->name, &value_32, sizeof(value_32)); > + append_to_property(wn, prop->name, &value_32, sizeof(value_32), TYPE_UINT32); > } > > static void generate_local_fixups_tree_internal(struct dt_info *dti, > -- > 2.20.1 >