diff options
author | 2008-01-03 17:43:33 -0600 | |
---|---|---|
committer | 2008-01-04 08:21:54 -0600 | |
commit | ad4f54ae2b67ddcd4d128fd4b5c21c66a640d237 (patch) | |
tree | 211909ade0f8df57886ce5ab9f872594f5fd26e1 | |
parent | 910efac4b49f43cb1b66eef5aa0bbd020920bf2a (diff) |
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>
-rw-r--r-- | dtc-parser.y | 2 | ||||
-rw-r--r-- | dtc.c | 2 | ||||
-rw-r--r-- | dtc.h | 1 | ||||
-rw-r--r-- | livetree.c | 1 | ||||
-rw-r--r-- | treesource.c | 3 |
5 files changed, 8 insertions, 1 deletions
diff --git a/dtc-parser.y b/dtc-parser.y index 8ed58e8..da7f6f5 100644 --- a/dtc-parser.y +++ b/dtc-parser.y @@ -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, ...) vfprintf(stderr, s, va); fprintf(stderr, "\n"); + treesource_error = 1; va_end(va); } @@ -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); @@ -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, @@ -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; } diff --git a/treesource.c b/treesource.c index e7d580f..980bda7 100644 --- a/treesource.c +++ b/treesource.c @@ -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) fill_fullpaths(the_boot_info->dt, ""); + the_boot_info->error = treesource_error; return the_boot_info; } |