Browse Source

Return a non-zero exit code if an error occurs during dts parsing.

Previously, only failure to parse caused the reading of the tree to fail;
semantic errors that called yyerror() but not YYERROR only emitted a message,
without signalling make to stop the build.

Signed-off-by: Scott Wood <scottwood@freescale.com>
main
Scott Wood 17 years ago committed by Jon Loeliger
parent
commit
ad4f54ae2b
  1. 2
      dtc-parser.y
  2. 2
      dtc.c
  3. 1
      dtc.h
  4. 1
      livetree.c
  5. 3
      treesource.c

2
dtc-parser.y

@ -28,6 +28,7 @@ int yylex(void); @@ -28,6 +28,7 @@ int yylex(void);
unsigned long long eval_literal(const char *s, int base, int bits);

extern struct boot_info *the_boot_info;
extern int treesource_error;

%}

@ -320,6 +321,7 @@ void yyerrorf(char const *s, ...) @@ -320,6 +321,7 @@ void yyerrorf(char const *s, ...)
vfprintf(stderr, s, va);
fprintf(stderr, "\n");

treesource_error = 1;
va_end(va);
}


2
dtc.c

@ -205,7 +205,7 @@ int main(int argc, char *argv[]) @@ -205,7 +205,7 @@ int main(int argc, char *argv[])
if (inf && inf->file != stdin)
fclose(inf->file);

if (! bi || ! bi->dt)
if (! bi || ! bi->dt || bi->error)
die("Couldn't read input tree\n");

process_checks(force, bi);

1
dtc.h

@ -233,6 +233,7 @@ struct reserve_info *add_reserve_entry(struct reserve_info *list, @@ -233,6 +233,7 @@ struct reserve_info *add_reserve_entry(struct reserve_info *list,
struct boot_info {
struct reserve_info *reservelist;
struct node *dt; /* the device tree */
int error;
};

struct boot_info *build_boot_info(struct reserve_info *reservelist,

1
livetree.c

@ -172,6 +172,7 @@ struct boot_info *build_boot_info(struct reserve_info *reservelist, @@ -172,6 +172,7 @@ struct boot_info *build_boot_info(struct reserve_info *reservelist,
bi = xmalloc(sizeof(*bi));
bi->reservelist = reservelist;
bi->dt = tree;
bi->error = 0;

return bi;
}

3
treesource.c

@ -25,10 +25,12 @@ extern FILE *yyin; @@ -25,10 +25,12 @@ extern FILE *yyin;
extern int yyparse(void);

struct boot_info *the_boot_info;
int treesource_error;

struct boot_info *dt_from_source(const char *fname)
{
the_boot_info = NULL;
treesource_error = 0;

push_input_file(fname);

@ -37,6 +39,7 @@ struct boot_info *dt_from_source(const char *fname) @@ -37,6 +39,7 @@ struct boot_info *dt_from_source(const char *fname)

fill_fullpaths(the_boot_info->dt, "");

the_boot_info->error = treesource_error;
return the_boot_info;
}


Loading…
Cancel
Save