History

Merge branch 'devicetree/dtc' into devicetree/next

Branch to upgrade DTC toolchain to version 1.4.0

Grant Likely committed 12 years ago

Commit f5fab572 parents 38dbfb5 c8a3e6a9 files · +570 −365Browse files

Unified · Split

9 files
  1. scripts/dtc/dtc-parser.tab.c_shipped +194 −275
  2. scripts/dtc/dtc-parser.tab.h_shipped +28 −8
  3. scripts/dtc/dtc.c +59 −60
  4. scripts/dtc/dtc.h +0 −1
  5. scripts/dtc/srcpos.c +3 −3
  6. scripts/dtc/update-dtc-source.sh +54 −0
  7. scripts/dtc/util.c +129 −12
  8. scripts/dtc/util.h +102 −5
  9. scripts/dtc/version_gen.h +1 −1
scripts/dtc/dtc-parser.tab.c_shipped+194−275
@@ -1,8 +1,8 @@
1−/* A Bison parser, made by GNU Bison 2.5. */
1+/* A Bison parser, made by GNU Bison 2.7.12-4996. */
22
33 /* Bison implementation for Yacc-like parsers in C
44
5− Copyright (C) 1984, 1989-1990, 2000-2011 Free Software Foundation, Inc.
5+ Copyright (C) 1984, 1989-1990, 2000-2013 Free Software Foundation, Inc.
66
77 This program is free software: you can redistribute it and/or modify
88 it under the terms of the GNU General Public License as published by
@@ -44,7 +44,7 @@ · 35 unmodified lines
4444 #define YYBISON 1
4545
4646 /* Bison version. */
47−#define YYBISON_VERSION "2.5"
47+#define YYBISON_VERSION "2.7.12-4996"
4848
4949 /* Skeleton name. */
5050 #define YYSKELETON_NAME "yacc.c"
@@ -58,14 +58,11 @@ · 7 unmodified lines
5858 /* Pull parsers. */
5959 #define YYPULL 1
6060
61−/* Using locations. */
62−#define YYLSP_NEEDED 0
6361
6462
6563
6664 /* Copy the first part of user declarations. */
67−
68−/* Line 268 of yacc.c */
65+/* Line 371 of yacc.c */
6966 #line 21 "dtc-parser.y"
7067
7168 #include <stdio.h>
@@ -85,14 +82,16 @@ extern int treesource_error; · 13 unmodified lines
8582 static unsigned long long eval_literal(const char *s, int base, int bits);
8683 static unsigned char eval_char_literal(const char *s);
8784
85+/* Line 371 of yacc.c */
86+#line 87 "dtc-parser.tab.c"
8887
89−/* Line 268 of yacc.c */
90−#line 91 "dtc-parser.tab.c"
91−
92−/* Enabling traces. */
93−#ifndef YYDEBUG
94−# define YYDEBUG 0
95−#endif
88+# ifndef YY_NULL
89+# if defined __cplusplus && 201103L <= __cplusplus
90+# define YY_NULL nullptr
91+# else
92+# define YY_NULL 0
93+# endif
94+# endif
9695
9796 /* Enabling verbose error messages. */
9897 #ifdef YYERROR_VERBOSE
@@ -102,11 +101,17 @@ static unsigned char eval_char_literal(const char *s); · 3 unmodified lines
102101 # define YYERROR_VERBOSE 0
103102 #endif
104103
105−/* Enabling the token table. */
106−#ifndef YYTOKEN_TABLE
107−# define YYTOKEN_TABLE 0
104+/* In a future release of Bison, this section will be replaced
105+ by #include "dtc-parser.tab.h". */
106+#ifndef YY_YY_DTC_PARSER_TAB_H_INCLUDED
107+# define YY_YY_DTC_PARSER_TAB_H_INCLUDED
108+/* Enabling traces. */
109+#ifndef YYDEBUG
110+# define YYDEBUG 0
111+#endif
112+#if YYDEBUG
113+extern int yydebug;
108114 #endif
109−
110115
111116 /* Tokens. */
112117 #ifndef YYTOKENTYPE
@@ -140,12 +145,10 @@ static unsigned char eval_char_literal(const char *s); · 27 unmodified lines
140145 #endif
141146
142147
143−
144148 #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
145149 typedef union YYSTYPE
146150 {
147−
148−/* Line 293 of yacc.c */
151+/* Line 387 of yacc.c */
149152 #line 40 "dtc-parser.y"
150153
151154 char *propnodename;
@@ -168,21 +171,36 @@ typedef union YYSTYPE · 16 unmodified lines
168171 uint64_t integer;
169172
170173
171−
172−/* Line 293 of yacc.c */
173−#line 174 "dtc-parser.tab.c"
174+/* Line 387 of yacc.c */
175+#line 176 "dtc-parser.tab.c"
174176 } YYSTYPE;
175177 # define YYSTYPE_IS_TRIVIAL 1
176178 # define yystype YYSTYPE /* obsolescent; will be withdrawn */
177179 # define YYSTYPE_IS_DECLARED 1
178180 #endif
179181
182+extern YYSTYPE yylval;
180183
181−/* Copy the second part of user declarations. */
184+#ifdef YYPARSE_PARAM
185+#if defined __STDC__ || defined __cplusplus
186+int yyparse (void *YYPARSE_PARAM);
187+#else
188+int yyparse ();
189+#endif
190+#else /* ! YYPARSE_PARAM */
191+#if defined __STDC__ || defined __cplusplus
192+int yyparse (void);
193+#else
194+int yyparse ();
195+#endif
196+#endif /* ! YYPARSE_PARAM */
182197
198+#endif /* !YY_YY_DTC_PARSER_TAB_H_INCLUDED */
183199
184−/* Line 343 of yacc.c */
185−#line 186 "dtc-parser.tab.c"
200+/* Copy the second part of user declarations. */
201+
202+/* Line 390 of yacc.c */
203+#line 204 "dtc-parser.tab.c"
186204
187205 #ifdef short
188206 # undef short
@@ -235,24 +253,33 @@ typedef short int yytype_int16; · 46 unmodified lines
235253 # if defined YYENABLE_NLS && YYENABLE_NLS
236254 # if ENABLE_NLS
237255 # include <libintl.h> /* INFRINGES ON USER NAME SPACE */
238−# define YY_(msgid) dgettext ("bison-runtime", msgid)
256+# define YY_(Msgid) dgettext ("bison-runtime", Msgid)
239257 # endif
240258 # endif
241259 # ifndef YY_
242−# define YY_(msgid) msgid
260+# define YY_(Msgid) Msgid
261+# endif
262+#endif
263+
264+#ifndef __attribute__
265+/* This feature is available in gcc versions 2.5 and later. */
266+# if (! defined __GNUC__ || __GNUC__ < 2 \
267+ || (__GNUC__ == 2 && __GNUC_MINOR__ < 5))
268+# define __attribute__(Spec) /* empty */
243269 # endif
244270 #endif
245271
246272 /* Suppress unused-variable warnings by "using" E. */
247273 #if ! defined lint || defined __GNUC__
248−# define YYUSE(e) ((void) (e))
274+# define YYUSE(E) ((void) (E))
249275 #else
250−# define YYUSE(e) /* empty */
276+# define YYUSE(E) /* empty */
251277 #endif
252278
279+
253280 /* Identity function, used to suppress warnings about constant conditions. */
254281 #ifndef lint
255−# define YYID(n) (n)
282+# define YYID(N) (N)
256283 #else
257284 #if (defined __STDC__ || defined __C99__FUNC__ \
258285 || defined __cplusplus || defined _MSC_VER)
@@ -288,6 +315,7 @@ YYID (yyi) · 29 unmodified lines
288315 # if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS && (defined __STDC__ || defined __C99__FUNC__ \
289316 || defined __cplusplus || defined _MSC_VER)
290317 # include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
318+ /* Use EXIT_SUCCESS as a witness for stdlib.h. */
291319 # ifndef EXIT_SUCCESS
292320 # define EXIT_SUCCESS 0
293321 # endif
@@ -379,20 +407,20 @@ union yyalloc · 85 unmodified lines
379407 #endif
380408
381409 #if defined YYCOPY_NEEDED && YYCOPY_NEEDED
382−/* Copy COUNT objects from FROM to TO. The source and destination do
410+/* Copy COUNT objects from SRC to DST. The source and destination do
383411 not overlap. */
384412 # ifndef YYCOPY
385413 # if defined __GNUC__ && 1 < __GNUC__
386−# define YYCOPY(To, From, Count) \
387− __builtin_memcpy (To, From, (Count) * sizeof (*(From)))
414+# define YYCOPY(Dst, Src, Count) \
415+ __builtin_memcpy (Dst, Src, (Count) * sizeof (*(Src)))
388416 # else
389−# define YYCOPY(To, From, Count) \
390− do \
391− { \
392− YYSIZE_T yyi; \
393− for (yyi = 0; yyi < (Count); yyi++) \
394− (To)[yyi] = (From)[yyi]; \
395− } \
417+# define YYCOPY(Dst, Src, Count) \
418+ do \
419+ { \
420+ YYSIZE_T yyi; \
421+ for (yyi = 0; yyi < (Count); yyi++) \
422+ (Dst)[yyi] = (Src)[yyi]; \
423+ } \
396424 while (YYID (0))
397425 # endif
398426 # endif
@@ -513,7 +541,7 @@ static const yytype_uint16 yyrline[] = · 114 unmodified lines
513541 };
514542 #endif
515543
516−#if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE
544+#if YYDEBUG || YYERROR_VERBOSE || 0
517545 /* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
518546 First, the terminals, then, starting at YYNTOKENS, nonterminals. */
519547 static const char *const yytname[] =
@@ -530,7 +558,7 @@ static const char *const yytname[] = · 10 unmodified lines
530558 "integer_expr", "integer_trinary", "integer_or", "integer_and",
531559 "integer_bitor", "integer_bitxor", "integer_bitand", "integer_eq",
532560 "integer_rela", "integer_shift", "integer_add", "integer_mul",
533− "integer_unary", "bytestring", "subnodes", "subnode", 0
561+ "integer_unary", "bytestring", "subnodes", "subnode", YY_NULL
534562 };
535563 #endif
536564
@@ -655,10 +683,10 @@ static const yytype_uint8 yytable[] = · 118 unmodified lines
655683 137, 0, 73, 139
656684 };
657685
658−#define yypact_value_is_default(yystate) \
659− ((yystate) == (-78))
686+#define yypact_value_is_default(Yystate) \
687+ (!!((Yystate) == (-78)))
660688
661−#define yytable_value_is_error(yytable_value) \
689+#define yytable_value_is_error(Yytable_value) \
662690 YYID (0)
663691
664692 static const yytype_int16 yycheck[] =
@@ -727,62 +755,35 @@ static const yytype_uint8 yystos[] = · 62 unmodified lines
727755
728756 #define YYRECOVERING() (!!yyerrstatus)
729757
730−#define YYBACKUP(Token, Value) \
731−do \
732− if (yychar == YYEMPTY && yylen == 1) \
733− { \
734− yychar = (Token); \
735− yylval = (Value); \
736− YYPOPSTACK (1); \
737− goto yybackup; \
738− } \
739− else \
740− { \
758+#define YYBACKUP(Token, Value) \
759+do \
760+ if (yychar == YYEMPTY) \
761+ { \
762+ yychar = (Token); \
763+ yylval = (Value); \
764+ YYPOPSTACK (yylen); \
765+ yystate = *yyssp; \
766+ goto yybackup; \
767+ } \
768+ else \
769+ { \
741770 yyerror (YY_("syntax error: cannot back up")); \
742771 YYERROR; \
743772 } \
744773 while (YYID (0))
745774
746−
775+/* Error token number */
747776 #define YYTERROR 1
748777 #define YYERRCODE 256
749778
750779
751−/* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N].
752− If N is 0, then set CURRENT to the empty location which ends
753− the previous symbol: RHS[0] (always defined). */
754−
755−#define YYRHSLOC(Rhs, K) ((Rhs)[K])
756−#ifndef YYLLOC_DEFAULT
757−# define YYLLOC_DEFAULT(Current, Rhs, N) \
758− do \
759− if (YYID (N)) \
760− { \
761− (Current).first_line = YYRHSLOC (Rhs, 1).first_line; \
762− (Current).first_column = YYRHSLOC (Rhs, 1).first_column; \
763− (Current).last_line = YYRHSLOC (Rhs, N).last_line; \
764− (Current).last_column = YYRHSLOC (Rhs, N).last_column; \
765− } \
766− else \
767− { \
768− (Current).first_line = (Current).last_line = \
769− YYRHSLOC (Rhs, 0).last_line; \
770− (Current).first_column = (Current).last_column = \
771− YYRHSLOC (Rhs, 0).last_column; \
772− } \
773− while (YYID (0))
774−#endif
775−
776−
777780 /* This macro is provided for backward compatibility. */
778−
779781 #ifndef YY_LOCATION_PRINT
780782 # define YY_LOCATION_PRINT(File, Loc) ((void) 0)
781783 #endif
782784
783785
784786 /* YYLEX -- calling `yylex' with the right arguments. */
785−
786787 #ifdef YYLEX_PARAM
787788 # define YYLEX yylex (YYLEX_PARAM)
788789 #else
@@ -832,6 +833,8 @@ yy_symbol_value_print (yyoutput, yytype, yyvaluep) · 43 unmodified lines
832833 YYSTYPE const * const yyvaluep;
833834 #endif
834835 {
836+ FILE *yyo = yyoutput;
837+ YYUSE (yyo);
835838 if (!yyvaluep)
836839 return;
837840 # ifdef YYPRINT
@@ -840,11 +843,7 @@ yy_symbol_value_print (yyoutput, yytype, yyvaluep) · 2 unmodified lines
840843 # else
841844 YYUSE (yyoutput);
842845 # endif
843− switch (yytype)
844− {
845− default:
846− break;
847− }
846+ YYUSE (yytype);
848847 }
849848
850849
@@ -1083,12 +1082,11 @@ static int · 232 unmodified lines
10831082 yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg,
10841083 yytype_int16 *yyssp, int yytoken)
10851084 {
1086− YYSIZE_T yysize0 = yytnamerr (0, yytname[yytoken]);
1085+ YYSIZE_T yysize0 = yytnamerr (YY_NULL, yytname[yytoken]);
10871086 YYSIZE_T yysize = yysize0;
1088− YYSIZE_T yysize1;
10891087 enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
10901088 /* Internationalized format string. */
1091− const char *yyformat = 0;
1089+ const char *yyformat = YY_NULL;
10921090 /* Arguments of yyformat. */
10931091 char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
10941092 /* Number of reported tokens (one for the "unexpected", one per
@@ -1148,11 +1146,13 @@ yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg, · 53 unmodified lines
11481146 break;
11491147 }
11501148 yyarg[yycount++] = yytname[yyx];
1151− yysize1 = yysize + yytnamerr (0, yytname[yyx]);
1152− if (! (yysize <= yysize1
1153− && yysize1 <= YYSTACK_ALLOC_MAXIMUM))
1154− return 2;
1155− yysize = yysize1;
1149+ {
1150+ YYSIZE_T yysize1 = yysize + yytnamerr (YY_NULL, yytname[yyx]);
1151+ if (! (yysize <= yysize1
1152+ && yysize1 <= YYSTACK_ALLOC_MAXIMUM))
1153+ return 2;
1154+ yysize = yysize1;
1155+ }
11561156 }
11571157 }
11581158 }
@@ -1172,10 +1172,12 @@ yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg, · 13 unmodified lines
11721172 # undef YYCASE_
11731173 }
11741174
1175− yysize1 = yysize + yystrlen (yyformat);
1176− if (! (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM))
1177− return 2;
1178− yysize = yysize1;
1175+ {
1176+ YYSIZE_T yysize1 = yysize + yystrlen (yyformat);
1177+ if (! (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM))
1178+ return 2;
1179+ yysize = yysize1;
1180+ }
11791181
11801182 if (*yymsg_alloc < yysize)
11811183 {
@@ -1231,36 +1233,26 @@ yydestruct (yymsg, yytype, yyvaluep) · 49 unmodified lines
12311233 yymsg = "Deleting";
12321234 YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp);
12331235
1234− switch (yytype)
1235− {
1236−
1237− default:
1238− break;
1239− }
1236+ YYUSE (yytype);
12401237 }
12411238
12421239
1243−/* Prevent warnings from -Wmissing-prototypes. */
1244−#ifdef YYPARSE_PARAM
1245−#if defined __STDC__ || defined __cplusplus
1246−int yyparse (void *YYPARSE_PARAM);
1247−#else
1248−int yyparse ();
1249−#endif
1250−#else /* ! YYPARSE_PARAM */
1251−#if defined __STDC__ || defined __cplusplus
1252−int yyparse (void);
1253−#else
1254−int yyparse ();
1255−#endif
1256−#endif /* ! YYPARSE_PARAM */
12571240
12581241
12591242 /* The lookahead symbol. */
12601243 int yychar;
12611244
1245+
1246+#ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
1247+# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
1248+# define YY_IGNORE_MAYBE_UNINITIALIZED_END
1249+#endif
1250+#ifndef YY_INITIAL_VALUE
1251+# define YY_INITIAL_VALUE(Value) /* Nothing. */
1252+#endif
1253+
12621254 /* The semantic value of the lookahead symbol. */
1263−YYSTYPE yylval;
1255+YYSTYPE yylval YY_INITIAL_VALUE(yyval_default);
12641256
12651257 /* Number of syntax errors so far. */
12661258 int yynerrs;
@@ -1300,7 +1292,7 @@ yyparse () · 33 unmodified lines
13001292 `yyss': related to states.
13011293 `yyvs': related to semantic values.
13021294
1303− Refer to the stacks thru separate pointers, to allow yyoverflow
1295+ Refer to the stacks through separate pointers, to allow yyoverflow
13041296 to reallocate them elsewhere. */
13051297
13061298 /* The state stack. */
@@ -1318,7 +1310,7 @@ yyparse () · 11 unmodified lines
13181310 int yyn;
13191311 int yyresult;
13201312 /* Lookahead token as an internal (translated) token number. */
1321− int yytoken;
1313+ int yytoken = 0;
13221314 /* The variables used to return semantic value and location from the
13231315 action routines. */
13241316 YYSTYPE yyval;
@@ -1336,9 +1328,8 @@ yyparse () · 11 unmodified lines
13361328 Keep to zero when no symbol should be popped. */
13371329 int yylen = 0;
13381330
1339− yytoken = 0;
1340− yyss = yyssa;
1341− yyvs = yyvsa;
1331+ yyssp = yyss = yyssa;
1332+ yyvsp = yyvs = yyvsa;
13421333 yystacksize = YYINITDEPTH;
13431334
13441335 YYDPRINTF ((stderr, "Starting parse\n"));
@@ -1347,14 +1338,6 @@ yyparse () · 2 unmodified lines
13471338 yyerrstatus = 0;
13481339 yynerrs = 0;
13491340 yychar = YYEMPTY; /* Cause a token to be read. */
1350−
1351− /* Initialize stack pointers.
1352− Waste one element of value and location stack
1353− so that they stay on the same level as the state stack.
1354− The wasted elements are never initialized. */
1355− yyssp = yyss;
1356− yyvsp = yyvs;
1357−
13581341 goto yysetstate;
13591342
13601343 /*------------------------------------------------------------.
@@ -1495,7 +1478,9 @@ yybackup: · 134 unmodified lines
14951478 yychar = YYEMPTY;
14961479
14971480 yystate = yyn;
1481+ YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
14981482 *++yyvsp = yylval;
1483+ YY_IGNORE_MAYBE_UNINITIALIZED_END
14991484
15001485 goto yynewstate;
15011486
@@ -1532,8 +1517,7 @@ yyreduce: · 30 unmodified lines
15321517 switch (yyn)
15331518 {
15341519 case 2:
1535−
1536−/* Line 1806 of yacc.c */
1520+/* Line 1787 of yacc.c */
15371521 #line 110 "dtc-parser.y"
15381522 {
15391523 the_boot_info = build_boot_info((yyvsp[(3) - (4)].re), (yyvsp[(4) - (4)].node),
@@ -1542,8 +1526,7 @@ yyreduce: · 2 unmodified lines
15421526 break;
15431527
15441528 case 3:
1545−
1546−/* Line 1806 of yacc.c */
1529+/* Line 1787 of yacc.c */
15471530 #line 118 "dtc-parser.y"
15481531 {
15491532 (yyval.re) = NULL;
@@ -1551,8 +1534,7 @@ yyreduce: · 1 unmodified line
15511534 break;
15521535
15531536 case 4:
1554−
1555−/* Line 1806 of yacc.c */
1537+/* Line 1787 of yacc.c */
15561538 #line 122 "dtc-parser.y"
15571539 {
15581540 (yyval.re) = chain_reserve_entry((yyvsp[(1) - (2)].re), (yyvsp[(2) - (2)].re));
@@ -1560,8 +1542,7 @@ yyreduce: · 1 unmodified line
15601542 break;
15611543
15621544 case 5:
1563−
1564−/* Line 1806 of yacc.c */
1545+/* Line 1787 of yacc.c */
15651546 #line 129 "dtc-parser.y"
15661547 {
15671548 (yyval.re) = build_reserve_entry((yyvsp[(2) - (4)].integer), (yyvsp[(3) - (4)].integer));
@@ -1569,8 +1550,7 @@ yyreduce: · 1 unmodified line
15691550 break;
15701551
15711552 case 6:
1572−
1573−/* Line 1806 of yacc.c */
1553+/* Line 1787 of yacc.c */
15741554 #line 133 "dtc-parser.y"
15751555 {
15761556 add_label(&(yyvsp[(2) - (2)].re)->labels, (yyvsp[(1) - (2)].labelref));
@@ -1579,8 +1559,7 @@ yyreduce: · 2 unmodified lines
15791559 break;
15801560
15811561 case 7:
1582−
1583−/* Line 1806 of yacc.c */
1562+/* Line 1787 of yacc.c */
15841563 #line 141 "dtc-parser.y"
15851564 {
15861565 (yyval.node) = name_node((yyvsp[(2) - (2)].node), "");
@@ -1588,8 +1567,7 @@ yyreduce: · 1 unmodified line
15881567 break;
15891568
15901569 case 8:
1591−
1592−/* Line 1806 of yacc.c */
1570+/* Line 1787 of yacc.c */
15931571 #line 145 "dtc-parser.y"
15941572 {
15951573 (yyval.node) = merge_nodes((yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node));
@@ -1597,8 +1575,7 @@ yyreduce: · 1 unmodified line
15971575 break;
15981576
15991577 case 9:
1600−
1601−/* Line 1806 of yacc.c */
1578+/* Line 1787 of yacc.c */
16021579 #line 149 "dtc-parser.y"
16031580 {
16041581 struct node *target = get_node_by_ref((yyvsp[(1) - (3)].node), (yyvsp[(2) - (3)].labelref));
@@ -1612,8 +1589,7 @@ yyreduce: · 7 unmodified lines
16121589 break;
16131590
16141591 case 10:
1615−
1616−/* Line 1806 of yacc.c */
1592+/* Line 1787 of yacc.c */
16171593 #line 159 "dtc-parser.y"
16181594 {
16191595 struct node *target = get_node_by_ref((yyvsp[(1) - (4)].node), (yyvsp[(3) - (4)].labelref));
@@ -1628,8 +1604,7 @@ yyreduce: · 8 unmodified lines
16281604 break;
16291605
16301606 case 11:
1631−
1632−/* Line 1806 of yacc.c */
1607+/* Line 1787 of yacc.c */
16331608 #line 173 "dtc-parser.y"
16341609 {
16351610 (yyval.node) = build_node((yyvsp[(2) - (5)].proplist), (yyvsp[(3) - (5)].nodelist));
@@ -1637,8 +1612,7 @@ yyreduce: · 1 unmodified line
16371612 break;
16381613
16391614 case 12:
1640−
1641−/* Line 1806 of yacc.c */
1615+/* Line 1787 of yacc.c */
16421616 #line 180 "dtc-parser.y"
16431617 {
16441618 (yyval.proplist) = NULL;
@@ -1646,8 +1620,7 @@ yyreduce: · 1 unmodified line
16461620 break;
16471621
16481622 case 13:
1649−
1650−/* Line 1806 of yacc.c */
1623+/* Line 1787 of yacc.c */
16511624 #line 184 "dtc-parser.y"
16521625 {
16531626 (yyval.proplist) = chain_property((yyvsp[(2) - (2)].prop), (yyvsp[(1) - (2)].proplist));
@@ -1655,8 +1628,7 @@ yyreduce: · 1 unmodified line
16551628 break;
16561629
16571630 case 14:
1658−
1659−/* Line 1806 of yacc.c */
1631+/* Line 1787 of yacc.c */
16601632 #line 191 "dtc-parser.y"
16611633 {
16621634 (yyval.prop) = build_property((yyvsp[(1) - (4)].propnodename), (yyvsp[(3) - (4)].data));
@@ -1664,8 +1636,7 @@ yyreduce: · 1 unmodified line
16641636 break;
16651637
16661638 case 15:
1667−
1668−/* Line 1806 of yacc.c */
1639+/* Line 1787 of yacc.c */
16691640 #line 195 "dtc-parser.y"
16701641 {
16711642 (yyval.prop) = build_property((yyvsp[(1) - (2)].propnodename), empty_data);
@@ -1673,8 +1644,7 @@ yyreduce: · 1 unmodified line
16731644 break;
16741645
16751646 case 16:
1676−
1677−/* Line 1806 of yacc.c */
1647+/* Line 1787 of yacc.c */
16781648 #line 199 "dtc-parser.y"
16791649 {
16801650 (yyval.prop) = build_property_delete((yyvsp[(2) - (3)].propnodename));
@@ -1682,8 +1652,7 @@ yyreduce: · 1 unmodified line
16821652 break;
16831653
16841654 case 17:
1685−
1686−/* Line 1806 of yacc.c */
1655+/* Line 1787 of yacc.c */
16871656 #line 203 "dtc-parser.y"
16881657 {
16891658 add_label(&(yyvsp[(2) - (2)].prop)->labels, (yyvsp[(1) - (2)].labelref));
@@ -1692,8 +1661,7 @@ yyreduce: · 2 unmodified lines
16921661 break;
16931662
16941663 case 18:
1695−
1696−/* Line 1806 of yacc.c */
1664+/* Line 1787 of yacc.c */
16971665 #line 211 "dtc-parser.y"
16981666 {
16991667 (yyval.data) = data_merge((yyvsp[(1) - (2)].data), (yyvsp[(2) - (2)].data));
@@ -1701,8 +1669,7 @@ yyreduce: · 1 unmodified line
17011669 break;
17021670
17031671 case 19:
1704−
1705−/* Line 1806 of yacc.c */
1672+/* Line 1787 of yacc.c */
17061673 #line 215 "dtc-parser.y"
17071674 {
17081675 (yyval.data) = data_merge((yyvsp[(1) - (3)].data), (yyvsp[(2) - (3)].array).data);
@@ -1710,8 +1677,7 @@ yyreduce: · 1 unmodified line
17101677 break;
17111678
17121679 case 20:
1713−
1714−/* Line 1806 of yacc.c */
1680+/* Line 1787 of yacc.c */
17151681 #line 219 "dtc-parser.y"
17161682 {
17171683 (yyval.data) = data_merge((yyvsp[(1) - (4)].data), (yyvsp[(3) - (4)].data));
@@ -1719,8 +1685,7 @@ yyreduce: · 1 unmodified line
17191685 break;
17201686
17211687 case 21:
1722−
1723−/* Line 1806 of yacc.c */
1688+/* Line 1787 of yacc.c */
17241689 #line 223 "dtc-parser.y"
17251690 {
17261691 (yyval.data) = data_add_marker((yyvsp[(1) - (2)].data), REF_PATH, (yyvsp[(2) - (2)].labelref));
@@ -1728,8 +1693,7 @@ yyreduce: · 1 unmodified line
17281693 break;
17291694
17301695 case 22:
1731−
1732−/* Line 1806 of yacc.c */
1696+/* Line 1787 of yacc.c */
17331697 #line 227 "dtc-parser.y"
17341698 {
17351699 FILE *f = srcfile_relative_open((yyvsp[(4) - (9)].data).val, NULL);
@@ -1750,8 +1714,7 @@ yyreduce: · 14 unmodified lines
17501714 break;
17511715
17521716 case 23:
1753−
1754−/* Line 1806 of yacc.c */
1717+/* Line 1787 of yacc.c */
17551718 #line 244 "dtc-parser.y"
17561719 {
17571720 FILE *f = srcfile_relative_open((yyvsp[(4) - (5)].data).val, NULL);
@@ -1765,8 +1728,7 @@ yyreduce: · 7 unmodified lines
17651728 break;
17661729
17671730 case 24:
1768−
1769−/* Line 1806 of yacc.c */
1731+/* Line 1787 of yacc.c */
17701732 #line 254 "dtc-parser.y"
17711733 {
17721734 (yyval.data) = data_add_marker((yyvsp[(1) - (2)].data), LABEL, (yyvsp[(2) - (2)].labelref));
@@ -1774,8 +1736,7 @@ yyreduce: · 1 unmodified line
17741736 break;
17751737
17761738 case 25:
1777−
1778−/* Line 1806 of yacc.c */
1739+/* Line 1787 of yacc.c */
17791740 #line 261 "dtc-parser.y"
17801741 {
17811742 (yyval.data) = empty_data;
@@ -1783,8 +1744,7 @@ yyreduce: · 1 unmodified line
17831744 break;
17841745
17851746 case 26:
1786−
1787−/* Line 1806 of yacc.c */
1747+/* Line 1787 of yacc.c */
17881748 #line 265 "dtc-parser.y"
17891749 {
17901750 (yyval.data) = (yyvsp[(1) - (2)].data);
@@ -1792,8 +1752,7 @@ yyreduce: · 1 unmodified line
17921752 break;
17931753
17941754 case 27:
1795−
1796−/* Line 1806 of yacc.c */
1755+/* Line 1787 of yacc.c */
17971756 #line 269 "dtc-parser.y"
17981757 {
17991758 (yyval.data) = data_add_marker((yyvsp[(1) - (2)].data), LABEL, (yyvsp[(2) - (2)].labelref));
@@ -1801,8 +1760,7 @@ yyreduce: · 1 unmodified line
18011760 break;
18021761
18031762 case 28:
1804−
1805−/* Line 1806 of yacc.c */
1763+/* Line 1787 of yacc.c */
18061764 #line 276 "dtc-parser.y"
18071765 {
18081766 (yyval.array).data = empty_data;
@@ -1821,8 +1779,7 @@ yyreduce: · 12 unmodified lines
18211779 break;
18221780
18231781 case 29:
1824−
1825−/* Line 1806 of yacc.c */
1782+/* Line 1787 of yacc.c */
18261783 #line 291 "dtc-parser.y"
18271784 {
18281785 (yyval.array).data = empty_data;
@@ -1831,8 +1788,7 @@ yyreduce: · 2 unmodified lines
18311788 break;
18321789
18331790 case 30:
1834−
1835−/* Line 1806 of yacc.c */
1791+/* Line 1787 of yacc.c */
18361792 #line 296 "dtc-parser.y"
18371793 {
18381794 if ((yyvsp[(1) - (2)].array).bits < 64) {
@@ -1856,8 +1812,7 @@ yyreduce: · 17 unmodified lines
18561812 break;
18571813
18581814 case 31:
1859−
1860−/* Line 1806 of yacc.c */
1815+/* Line 1787 of yacc.c */
18611816 #line 316 "dtc-parser.y"
18621817 {
18631818 uint64_t val = ~0ULL >> (64 - (yyvsp[(1) - (2)].array).bits);
@@ -1875,8 +1830,7 @@ yyreduce: · 11 unmodified lines
18751830 break;
18761831
18771832 case 32:
1878−
1879−/* Line 1806 of yacc.c */
1833+/* Line 1787 of yacc.c */
18801834 #line 330 "dtc-parser.y"
18811835 {
18821836 (yyval.array).data = data_add_marker((yyvsp[(1) - (2)].array).data, LABEL, (yyvsp[(2) - (2)].labelref));
@@ -1884,8 +1838,7 @@ yyreduce: · 1 unmodified line
18841838 break;
18851839
18861840 case 33:
1887−
1888−/* Line 1806 of yacc.c */
1841+/* Line 1787 of yacc.c */
18891842 #line 337 "dtc-parser.y"
18901843 {
18911844 (yyval.integer) = eval_literal((yyvsp[(1) - (1)].literal), 0, 64);
@@ -1893,8 +1846,7 @@ yyreduce: · 1 unmodified line
18931846 break;
18941847
18951848 case 34:
1896−
1897−/* Line 1806 of yacc.c */
1849+/* Line 1787 of yacc.c */
18981850 #line 341 "dtc-parser.y"
18991851 {
19001852 (yyval.integer) = eval_char_literal((yyvsp[(1) - (1)].literal));
@@ -1902,8 +1854,7 @@ yyreduce: · 1 unmodified line
19021854 break;
19031855
19041856 case 35:
1905−
1906−/* Line 1806 of yacc.c */
1857+/* Line 1787 of yacc.c */
19071858 #line 345 "dtc-parser.y"
19081859 {
19091860 (yyval.integer) = (yyvsp[(2) - (3)].integer);
@@ -1911,162 +1862,139 @@ yyreduce: · 1 unmodified line
19111862 break;
19121863
19131864 case 38:
1914−
1915−/* Line 1806 of yacc.c */
1865+/* Line 1787 of yacc.c */
19161866 #line 356 "dtc-parser.y"
19171867 { (yyval.integer) = (yyvsp[(1) - (5)].integer) ? (yyvsp[(3) - (5)].integer) : (yyvsp[(5) - (5)].integer); }
19181868 break;
19191869
19201870 case 40:
1921−
1922−/* Line 1806 of yacc.c */
1871+/* Line 1787 of yacc.c */
19231872 #line 361 "dtc-parser.y"
19241873 { (yyval.integer) = (yyvsp[(1) - (3)].integer) || (yyvsp[(3) - (3)].integer); }
19251874 break;
19261875
19271876 case 42:
1928−
1929−/* Line 1806 of yacc.c */
1877+/* Line 1787 of yacc.c */
19301878 #line 366 "dtc-parser.y"
19311879 { (yyval.integer) = (yyvsp[(1) - (3)].integer) && (yyvsp[(3) - (3)].integer); }
19321880 break;
19331881
19341882 case 44:
1935−
1936−/* Line 1806 of yacc.c */
1883+/* Line 1787 of yacc.c */
19371884 #line 371 "dtc-parser.y"
19381885 { (yyval.integer) = (yyvsp[(1) - (3)].integer) | (yyvsp[(3) - (3)].integer); }
19391886 break;
19401887
19411888 case 46:
1942−
1943−/* Line 1806 of yacc.c */
1889+/* Line 1787 of yacc.c */
19441890 #line 376 "dtc-parser.y"
19451891 { (yyval.integer) = (yyvsp[(1) - (3)].integer) ^ (yyvsp[(3) - (3)].integer); }
19461892 break;
19471893
19481894 case 48:
1949−
1950−/* Line 1806 of yacc.c */
1895+/* Line 1787 of yacc.c */
19511896 #line 381 "dtc-parser.y"
19521897 { (yyval.integer) = (yyvsp[(1) - (3)].integer) & (yyvsp[(3) - (3)].integer); }
19531898 break;
19541899
19551900 case 50:
1956−
1957−/* Line 1806 of yacc.c */
1901+/* Line 1787 of yacc.c */
19581902 #line 386 "dtc-parser.y"
19591903 { (yyval.integer) = (yyvsp[(1) - (3)].integer) == (yyvsp[(3) - (3)].integer); }
19601904 break;
19611905
19621906 case 51:
1963−
1964−/* Line 1806 of yacc.c */
1907+/* Line 1787 of yacc.c */
19651908 #line 387 "dtc-parser.y"
19661909 { (yyval.integer) = (yyvsp[(1) - (3)].integer) != (yyvsp[(3) - (3)].integer); }
19671910 break;
19681911
19691912 case 53:
1970−
1971−/* Line 1806 of yacc.c */
1913+/* Line 1787 of yacc.c */
19721914 #line 392 "dtc-parser.y"
19731915 { (yyval.integer) = (yyvsp[(1) - (3)].integer) < (yyvsp[(3) - (3)].integer); }
19741916 break;
19751917
19761918 case 54:
1977−
1978−/* Line 1806 of yacc.c */
1919+/* Line 1787 of yacc.c */
19791920 #line 393 "dtc-parser.y"
19801921 { (yyval.integer) = (yyvsp[(1) - (3)].integer) > (yyvsp[(3) - (3)].integer); }
19811922 break;
19821923
19831924 case 55:
1984−
1985−/* Line 1806 of yacc.c */
1925+/* Line 1787 of yacc.c */
19861926 #line 394 "dtc-parser.y"
19871927 { (yyval.integer) = (yyvsp[(1) - (3)].integer) <= (yyvsp[(3) - (3)].integer); }
19881928 break;
19891929
19901930 case 56:
1991−
1992−/* Line 1806 of yacc.c */
1931+/* Line 1787 of yacc.c */
19931932 #line 395 "dtc-parser.y"
19941933 { (yyval.integer) = (yyvsp[(1) - (3)].integer) >= (yyvsp[(3) - (3)].integer); }
19951934 break;
19961935
19971936 case 57:
1998−
1999−/* Line 1806 of yacc.c */
1937+/* Line 1787 of yacc.c */
20001938 #line 399 "dtc-parser.y"
20011939 { (yyval.integer) = (yyvsp[(1) - (3)].integer) << (yyvsp[(3) - (3)].integer); }
20021940 break;
20031941
20041942 case 58:
2005−
2006−/* Line 1806 of yacc.c */
1943+/* Line 1787 of yacc.c */
20071944 #line 400 "dtc-parser.y"
20081945 { (yyval.integer) = (yyvsp[(1) - (3)].integer) >> (yyvsp[(3) - (3)].integer); }
20091946 break;
20101947
20111948 case 60:
2012−
2013−/* Line 1806 of yacc.c */
1949+/* Line 1787 of yacc.c */
20141950 #line 405 "dtc-parser.y"
20151951 { (yyval.integer) = (yyvsp[(1) - (3)].integer) + (yyvsp[(3) - (3)].integer); }
20161952 break;
20171953
20181954 case 61:
2019−
2020−/* Line 1806 of yacc.c */
1955+/* Line 1787 of yacc.c */
20211956 #line 406 "dtc-parser.y"
20221957 { (yyval.integer) = (yyvsp[(1) - (3)].integer) - (yyvsp[(3) - (3)].integer); }
20231958 break;
20241959
20251960 case 63:
2026−
2027−/* Line 1806 of yacc.c */
1961+/* Line 1787 of yacc.c */
20281962 #line 411 "dtc-parser.y"
20291963 { (yyval.integer) = (yyvsp[(1) - (3)].integer) * (yyvsp[(3) - (3)].integer); }
20301964 break;
20311965
20321966 case 64:
2033−
2034−/* Line 1806 of yacc.c */
1967+/* Line 1787 of yacc.c */
20351968 #line 412 "dtc-parser.y"
20361969 { (yyval.integer) = (yyvsp[(1) - (3)].integer) / (yyvsp[(3) - (3)].integer); }
20371970 break;
20381971
20391972 case 65:
2040−
2041−/* Line 1806 of yacc.c */
1973+/* Line 1787 of yacc.c */
20421974 #line 413 "dtc-parser.y"
20431975 { (yyval.integer) = (yyvsp[(1) - (3)].integer) % (yyvsp[(3) - (3)].integer); }
20441976 break;
20451977
20461978 case 68:
2047−
2048−/* Line 1806 of yacc.c */
1979+/* Line 1787 of yacc.c */
20491980 #line 419 "dtc-parser.y"
20501981 { (yyval.integer) = -(yyvsp[(2) - (2)].integer); }
20511982 break;
20521983
20531984 case 69:
2054−
2055−/* Line 1806 of yacc.c */
1985+/* Line 1787 of yacc.c */
20561986 #line 420 "dtc-parser.y"
20571987 { (yyval.integer) = ~(yyvsp[(2) - (2)].integer); }
20581988 break;
20591989
20601990 case 70:
2061−
2062−/* Line 1806 of yacc.c */
1991+/* Line 1787 of yacc.c */
20631992 #line 421 "dtc-parser.y"
20641993 { (yyval.integer) = !(yyvsp[(2) - (2)].integer); }
20651994 break;
20661995
20671996 case 71:
2068−
2069−/* Line 1806 of yacc.c */
1997+/* Line 1787 of yacc.c */
20701998 #line 426 "dtc-parser.y"
20711999 {
20722000 (yyval.data) = empty_data;
@@ -2074,8 +2002,7 @@ yyreduce: · 1 unmodified line
20742002 break;
20752003
20762004 case 72:
2077−
2078−/* Line 1806 of yacc.c */
2005+/* Line 1787 of yacc.c */
20792006 #line 430 "dtc-parser.y"
20802007 {
20812008 (yyval.data) = data_append_byte((yyvsp[(1) - (2)].data), (yyvsp[(2) - (2)].byte));
@@ -2083,8 +2010,7 @@ yyreduce: · 1 unmodified line
20832010 break;
20842011
20852012 case 73:
2086−
2087−/* Line 1806 of yacc.c */
2013+/* Line 1787 of yacc.c */
20882014 #line 434 "dtc-parser.y"
20892015 {
20902016 (yyval.data) = data_add_marker((yyvsp[(1) - (2)].data), LABEL, (yyvsp[(2) - (2)].labelref));
@@ -2092,8 +2018,7 @@ yyreduce: · 1 unmodified line
20922018 break;
20932019
20942020 case 74:
2095−
2096−/* Line 1806 of yacc.c */
2021+/* Line 1787 of yacc.c */
20972022 #line 441 "dtc-parser.y"
20982023 {
20992024 (yyval.nodelist) = NULL;
@@ -2101,8 +2026,7 @@ yyreduce: · 1 unmodified line
21012026 break;
21022027
21032028 case 75:
2104−
2105−/* Line 1806 of yacc.c */
2029+/* Line 1787 of yacc.c */
21062030 #line 445 "dtc-parser.y"
21072031 {
21082032 (yyval.nodelist) = chain_node((yyvsp[(1) - (2)].node), (yyvsp[(2) - (2)].nodelist));
@@ -2110,8 +2034,7 @@ yyreduce: · 1 unmodified line
21102034 break;
21112035
21122036 case 76:
2113−
2114−/* Line 1806 of yacc.c */
2037+/* Line 1787 of yacc.c */
21152038 #line 449 "dtc-parser.y"
21162039 {
21172040 print_error("syntax error: properties must precede subnodes");
@@ -2120,8 +2043,7 @@ yyreduce: · 2 unmodified lines
21202043 break;
21212044
21222045 case 77:
2123−
2124−/* Line 1806 of yacc.c */
2046+/* Line 1787 of yacc.c */
21252047 #line 457 "dtc-parser.y"
21262048 {
21272049 (yyval.node) = name_node((yyvsp[(2) - (2)].node), (yyvsp[(1) - (2)].propnodename));
@@ -2129,8 +2051,7 @@ yyreduce: · 1 unmodified line
21292051 break;
21302052
21312053 case 78:
2132−
2133−/* Line 1806 of yacc.c */
2054+/* Line 1787 of yacc.c */
21342055 #line 461 "dtc-parser.y"
21352056 {
21362057 (yyval.node) = name_node(build_node_delete(), (yyvsp[(2) - (3)].propnodename));
@@ -2138,8 +2059,7 @@ yyreduce: · 1 unmodified line
21382059 break;
21392060
21402061 case 79:
2141−
2142−/* Line 1806 of yacc.c */
2062+/* Line 1787 of yacc.c */
21432063 #line 465 "dtc-parser.y"
21442064 {
21452065 add_label(&(yyvsp[(2) - (2)].node)->labels, (yyvsp[(1) - (2)].labelref));
@@ -2148,9 +2068,8 @@ yyreduce: · 2 unmodified lines
21482068 break;
21492069
21502070
2151−
2152−/* Line 1806 of yacc.c */
2153−#line 2154 "dtc-parser.tab.c"
2071+/* Line 1787 of yacc.c */
2072+#line 2073 "dtc-parser.tab.c"
21542073 default: break;
21552074 }
21562075 /* User semantic actions sometimes alter yychar, and that requires
@@ -2313,7 +2232,9 @@ yyerrlab1: · 156 unmodified lines
23132232 YY_STACK_PRINT (yyss, yyssp);
23142233 }
23152234
2235+ YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
23162236 *++yyvsp = yylval;
2237+ YY_IGNORE_MAYBE_UNINITIALIZED_END
23172238
23182239
23192240 /* Shift the error token. */
@@ -2337,7 +2258,7 @@ yyabortlab: · 17 unmodified lines
23372258 yyresult = 1;
23382259 goto yyreturn;
23392260
2340−#if !defined(yyoverflow) || YYERROR_VERBOSE
2261+#if !defined yyoverflow || YYERROR_VERBOSE
23412262 /*-------------------------------------------------.
23422263 | yyexhaustedlab -- memory exhaustion comes here. |
23432264 `-------------------------------------------------*/
@@ -2379,8 +2300,7 @@ yyreturn: · 35 unmodified lines
23792300 }
23802301
23812302
2382−
2383−/* Line 2067 of yacc.c */
2303+/* Line 2050 of yacc.c */
23842304 #line 471 "dtc-parser.y"
23852305
23862306
@@ -2444,4 +2364,3 @@ static unsigned char eval_char_literal(const char *s) · 57 unmodified lines
24442364
24452365 return c;
24462366 }
2447−
scripts/dtc/dtc-parser.tab.h_shipped+28−8
@@ -1,8 +1,8 @@
1−/* A Bison parser, made by GNU Bison 2.5. */
1+/* A Bison parser, made by GNU Bison 2.7.12-4996. */
22
33 /* Bison interface for Yacc-like parsers in C
44
5− Copyright (C) 1984, 1989-1990, 2000-2011 Free Software Foundation, Inc.
5+ Copyright (C) 1984, 1989-1990, 2000-2013 Free Software Foundation, Inc.
66
77 This program is free software: you can redistribute it and/or modify
88 it under the terms of the GNU General Public License as published by
@@ -30,6 +30,15 @@ · 21 unmodified lines
3030 This special exception was added by the Free Software Foundation in
3131 version 2.2 of Bison. */
3232
33+#ifndef YY_YY_DTC_PARSER_TAB_H_INCLUDED
34+# define YY_YY_DTC_PARSER_TAB_H_INCLUDED
35+/* Enabling traces. */
36+#ifndef YYDEBUG
37+# define YYDEBUG 0
38+#endif
39+#if YYDEBUG
40+extern int yydebug;
41+#endif
3342
3443 /* Tokens. */
3544 #ifndef YYTOKENTYPE
@@ -63,12 +72,10 @@ · 27 unmodified lines
6372 #endif
6473
6574
66−
6775 #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
6876 typedef union YYSTYPE
6977 {
70−
71−/* Line 2068 of yacc.c */
78+/* Line 2053 of yacc.c */
7279 #line 40 "dtc-parser.y"
7380
7481 char *propnodename;
@@ -91,9 +98,8 @@ typedef union YYSTYPE · 16 unmodified lines
9198 uint64_t integer;
9299
93100
94−
95−/* Line 2068 of yacc.c */
96−#line 97 "dtc-parser.tab.h"
101+/* Line 2053 of yacc.c */
102+#line 103 "dtc-parser.tab.h"
97103 } YYSTYPE;
98104 # define YYSTYPE_IS_TRIVIAL 1
99105 # define yystype YYSTYPE /* obsolescent; will be withdrawn */
@@ -102,4 +108,18 @@ typedef union YYSTYPE · 2 unmodified lines
102108
103109 extern YYSTYPE yylval;
104110
111+#ifdef YYPARSE_PARAM
112+#if defined __STDC__ || defined __cplusplus
113+int yyparse (void *YYPARSE_PARAM);
114+#else
115+int yyparse ();
116+#endif
117+#else /* ! YYPARSE_PARAM */
118+#if defined __STDC__ || defined __cplusplus
119+int yyparse (void);
120+#else
121+int yyparse ();
122+#endif
123+#endif /* ! YYPARSE_PARAM */
105124
125+#endif /* !YY_YY_DTC_PARSER_TAB_H_INCLUDED */
scripts/dtc/dtc.c+59−60
@@ -21,8 +21,6 @@ · 20 unmodified lines
2121 #include "dtc.h"
2222 #include "srcpos.h"
2323
24−#include "version_gen.h"
25−
2624 /*
2725 * Command line options
2826 */
@@ -49,55 +47,60 @@ static void fill_fullpaths(struct node *tree, const char *prefix) · 20 unmodified lines
4947 fill_fullpaths(child, tree->fullpath);
5048 }
5149
52−static void __attribute__ ((noreturn)) usage(void)
53−{
54− fprintf(stderr, "Usage:\n");
55− fprintf(stderr, "\tdtc [options] <input file>\n");
56− fprintf(stderr, "\nOptions:\n");
57− fprintf(stderr, "\t-h\n");
58− fprintf(stderr, "\t\tThis help text\n");
59− fprintf(stderr, "\t-q\n");
60− fprintf(stderr, "\t\tQuiet: -q suppress warnings, -qq errors, -qqq all\n");
61− fprintf(stderr, "\t-I <input format>\n");
62− fprintf(stderr, "\t\tInput formats are:\n");
63− fprintf(stderr, "\t\t\tdts - device tree source text\n");
64− fprintf(stderr, "\t\t\tdtb - device tree blob\n");
65− fprintf(stderr, "\t\t\tfs - /proc/device-tree style directory\n");
66− fprintf(stderr, "\t-o <output file>\n");
67− fprintf(stderr, "\t-O <output format>\n");
68− fprintf(stderr, "\t\tOutput formats are:\n");
69− fprintf(stderr, "\t\t\tdts - device tree source text\n");
70− fprintf(stderr, "\t\t\tdtb - device tree blob\n");
71− fprintf(stderr, "\t\t\tasm - assembler source\n");
72− fprintf(stderr, "\t-V <output version>\n");
73− fprintf(stderr, "\t\tBlob version to produce, defaults to %d (relevant for dtb\n\t\tand asm output only)\n", DEFAULT_FDT_VERSION);
74− fprintf(stderr, "\t-d <output dependency file>\n");
75− fprintf(stderr, "\t-R <number>\n");
76− fprintf(stderr, "\t\tMake space for <number> reserve map entries (relevant for \n\t\tdtb and asm output only)\n");
77− fprintf(stderr, "\t-S <bytes>\n");
78− fprintf(stderr, "\t\tMake the blob at least <bytes> long (extra space)\n");
79− fprintf(stderr, "\t-p <bytes>\n");
80− fprintf(stderr, "\t\tAdd padding to the blob of <bytes> long (extra space)\n");
81− fprintf(stderr, "\t-b <number>\n");
82− fprintf(stderr, "\t\tSet the physical boot cpu\n");
83− fprintf(stderr, "\t-f\n");
84− fprintf(stderr, "\t\tForce - try to produce output even if the input tree has errors\n");
85− fprintf(stderr, "\t-i\n");
86− fprintf(stderr, "\t\tAdd a path to search for include files\n");
87− fprintf(stderr, "\t-s\n");
88− fprintf(stderr, "\t\tSort nodes and properties before outputting (only useful for\n\t\tcomparing trees)\n");
89− fprintf(stderr, "\t-v\n");
90− fprintf(stderr, "\t\tPrint DTC version and exit\n");
91− fprintf(stderr, "\t-H <phandle format>\n");
92− fprintf(stderr, "\t\tphandle formats are:\n");
93− fprintf(stderr, "\t\t\tlegacy - \"linux,phandle\" properties only\n");
94− fprintf(stderr, "\t\t\tepapr - \"phandle\" properties only\n");
95− fprintf(stderr, "\t\t\tboth - Both \"linux,phandle\" and \"phandle\" properties\n");
96− fprintf(stderr, "\t-W [no-]<checkname>\n");
97− fprintf(stderr, "\t-E [no-]<checkname>\n");
98− fprintf(stderr, "\t\t\tenable or disable warnings and errors\n");
99− exit(3);
100−}
50+/* Usage related data. */
51+static const char usage_synopsis[] = "dtc [options] <input file>";
52+static const char usage_short_opts[] = "qI:O:o:V:d:R:S:p:fb:i:H:sW:E:hv";
53+static struct option const usage_long_opts[] = {
54+ {"quiet", no_argument, NULL, 'q'},
55+ {"in-format", a_argument, NULL, 'I'},
56+ {"out", a_argument, NULL, 'o'},
57+ {"out-format", a_argument, NULL, 'O'},
58+ {"out-version", a_argument, NULL, 'V'},
59+ {"out-dependency", a_argument, NULL, 'd'},
60+ {"reserve", a_argument, NULL, 'R'},
61+ {"space", a_argument, NULL, 'S'},
62+ {"pad", a_argument, NULL, 'p'},
63+ {"boot-cpu", a_argument, NULL, 'b'},
64+ {"force", no_argument, NULL, 'f'},
65+ {"include", a_argument, NULL, 'i'},
66+ {"sort", no_argument, NULL, 's'},
67+ {"phandle", a_argument, NULL, 'H'},
68+ {"warning", a_argument, NULL, 'W'},
69+ {"error", a_argument, NULL, 'E'},
70+ {"help", no_argument, NULL, 'h'},
71+ {"version", no_argument, NULL, 'v'},
72+ {NULL, no_argument, NULL, 0x0},
73+};
74+static const char * const usage_opts_help[] = {
75+ "\n\tQuiet: -q suppress warnings, -qq errors, -qqq all",
76+ "\n\tInput formats are:\n"
77+ "\t\tdts - device tree source text\n"
78+ "\t\tdtb - device tree blob\n"
79+ "\t\tfs - /proc/device-tree style directory",
80+ "\n\tOutput file",
81+ "\n\tOutput formats are:\n"
82+ "\t\tdts - device tree source text\n"
83+ "\t\tdtb - device tree blob\n"
84+ "\t\tasm - assembler source",
85+ "\n\tBlob version to produce, defaults to %d (for dtb and asm output)", //, DEFAULT_FDT_VERSION);
86+ "\n\tOutput dependency file",
87+ "\n\ttMake space for <number> reserve map entries (for dtb and asm output)",
88+ "\n\tMake the blob at least <bytes> long (extra space)",
89+ "\n\tAdd padding to the blob of <bytes> long (extra space)",
90+ "\n\tSet the physical boot cpu",
91+ "\n\tTry to produce output even if the input tree has errors",
92+ "\n\tAdd a path to search for include files",
93+ "\n\tSort nodes and properties before outputting (useful for comparing trees)",
94+ "\n\tValid phandle formats are:\n"
95+ "\t\tlegacy - \"linux,phandle\" properties only\n"
96+ "\t\tepapr - \"phandle\" properties only\n"
97+ "\t\tboth - Both \"linux,phandle\" and \"phandle\" properties",
98+ "\n\tEnable/disable warnings (prefix with \"no-\")",
99+ "\n\tEnable/disable errors (prefix with \"no-\")",
100+ "\n\tPrint this help and exit",
101+ "\n\tPrint version and exit",
102+ NULL,
103+};
101104
102105 int main(int argc, char *argv[])
103106 {
@@ -118,8 +121,7 @@ int main(int argc, char *argv[]) · 14 unmodified lines
118121 minsize = 0;
119122 padsize = 0;
120123
121− while ((opt = getopt(argc, argv, "hI:O:o:V:d:R:S:p:fqb:i:vH:sW:E:"))
122− != EOF) {
124+ while ((opt = util_getopt_long()) != EOF) {
123125 switch (opt) {
124126 case 'I':
125127 inform = optarg;
@@ -158,8 +160,7 @@ int main(int argc, char *argv[]) · 32 unmodified lines
158160 srcfile_add_search_path(optarg);
159161 break;
160162 case 'v':
161− printf("Version: %s\n", DTC_VERSION);
162− exit(0);
163+ util_version();
163164 case 'H':
164165 if (streq(optarg, "legacy"))
165166 phandle_format = PHANDLE_LEGACY;
@@ -185,13 +186,14 @@ int main(int argc, char *argv[]) · 19 unmodified lines
185186 break;
186187
187188 case 'h':
189+ usage(NULL);
188190 default:
189− usage();
191+ usage("unknown option");
190192 }
191193 }
192194
193195 if (argc > (optind+1))
194− usage();
196+ usage("missing files");
195197 else if (argc < (optind+1))
196198 arg = "-";
197199 else
@@ -201,9 +203,6 @@ int main(int argc, char *argv[]) · 3 unmodified lines
201203 if (minsize && padsize)
202204 die("Can't set both -p and -S\n");
203205
204− if (minsize)
205− fprintf(stderr, "DTC: Use of \"-S\" is deprecated; it will be removed soon, use \"-p\" instead\n");
206−
207206 if (depname) {
208207 depfile = fopen(depname, "w");
209208 if (!depfile)
scripts/dtc/dtc.h+0−1
@@ -66,7 +66,6 @@ typedef uint32_t cell_t; · 65 unmodified lines
6666 #define strneq(a, b, n) (strncmp((a), (b), (n)) == 0)
6767
6868 #define ALIGN(x, a) (((x) + (a) - 1) & ~((a) - 1))
69−#define ARRAY_SIZE(x) (sizeof(x) / sizeof((x)[0]))
7069
7170 /* Data blobs */
7271 enum markertype {
scripts/dtc/srcpos.c+3−3
@@ -297,9 +297,9 @@ srcpos_verror(struct srcpos *pos, char const *fmt, va_list va) · 296 unmodified lines
297297
298298 srcstr = srcpos_string(pos);
299299
300− fprintf(stdout, "Error: %s ", srcstr);
301− vfprintf(stdout, fmt, va);
302− fprintf(stdout, "\n");
300+ fprintf(stderr, "Error: %s ", srcstr);
301+ vfprintf(stderr, fmt, va);
302+ fprintf(stderr, "\n");
303303 }
304304
305305 void
scripts/dtc/update-dtc-source.sh+54−0
@@ -0,0 +1,54 @@
1+#!/bin/sh
2+# Simple script to update the version of DTC carried by the Linux kernel
3+#
4+# This script assumes that the dtc and the linux git trees are in the
5+# same directory. After building dtc in the dtc directory, it copies the
6+# source files and generated source files into the scripts/dtc directory
7+# in the kernel and creates a git commit updating them to the new
8+# version.
9+#
10+# Usage: from the top level Linux source tree, run:
11+# $ ./scripts/dtc/update-dtc-source.sh
12+#
13+# The script will change into the dtc tree, build and test dtc, copy the
14+# relevant files into the kernel tree and create a git commit. The commit
15+# message will need to be modified to reflect the version of DTC being
16+# imported
17+#
18+# TODO:
19+# This script is pretty basic, but it is seldom used so a few manual tasks
20+# aren't a big deal. If anyone is interested in making it more robust, the
21+# the following would be nice:
22+# * Actually fail to complete if any testcase fails.
23+# - The dtc "make check" target needs to return a failure
24+# * Extract the version number from the dtc repo for the commit message
25+# * Build dtc in the kernel tree
26+# * run 'make check" on dtc built from the kernel tree
27+
28+set -ev
29+
30+DTC_UPSTREAM_PATH=`pwd`/../dtc
31+DTC_LINUX_PATH=`pwd`/scripts/dtc
32+
33+DTC_SOURCE="checks.c data.c dtc.c dtc.h flattree.c fstree.c livetree.c srcpos.c \
34+ srcpos.h treesource.c util.c util.h version_gen.h Makefile.dtc \
35+ dtc-lexer.l dtc-parser.y"
36+DTC_GENERATED="dtc-lexer.lex.c dtc-parser.tab.c dtc-parser.tab.h"
37+
38+# Build DTC
39+cd $DTC_UPSTREAM_PATH
40+make clean
41+make check
42+
43+# Copy the files into the Linux tree
44+cd $DTC_LINUX_PATH
45+for f in $DTC_SOURCE; do
46+ cp ${DTC_UPSTREAM_PATH}/${f} ${f}
47+ git add ${f}
48+done
49+for f in $DTC_GENERATED; do
50+ cp ${DTC_UPSTREAM_PATH}/$f ${f}_shipped
51+ git add ${f}_shipped
52+done
53+
54+git commit -e -v -m "scripts/dtc: Update to upstream version [CHANGEME]"
scripts/dtc/util.c+129−12
@@ -34,6 +34,7 @@ · 33 unmodified lines
3434
3535 #include "libfdt.h"
3636 #include "util.h"
37+#include "version_gen.h"
3738
3839 char *xstrdup(const char *s)
3940 {
@@ -72,7 +73,7 @@ char *join_path(const char *path, const char *name) · 32 unmodified lines
7273 int util_is_printable_string(const void *data, int len)
7374 {
7475 const char *s = data;
75− const char *ss;
76+ const char *ss, *se;
7677
7778 /* zero length is not */
7879 if (len == 0)
@@ -82,13 +83,19 @@ int util_is_printable_string(const void *data, int len) · 3 unmodified lines
8283 if (s[len - 1] != '\0')
8384 return 0;
8485
85− ss = s;
86− while (*s && isprint(*s))
87− s++;
86+ se = s + len;
8887
89− /* not zero, or not done yet */
90− if (*s != '\0' || (s + 1 - ss) < len)
91− return 0;
88+ while (s < se) {
89+ ss = s;
90+ while (s < se && *s && isprint(*s))
91+ s++;
92+
93+ /* not zero, or not done yet */
94+ if (*s != '\0' || s == ss)
95+ return 0;
96+
97+ s++;
98+ }
9299
93100 return 1;
94101 }
@@ -191,7 +198,7 @@ char get_escape_char(const char *s, int *i) · 96 unmodified lines
191198 return val;
192199 }
193200
194−int utilfdt_read_err(const char *filename, char **buffp)
201+int utilfdt_read_err_len(const char *filename, char **buffp, off_t *len)
195202 {
196203 int fd = 0; /* assume stdin */
197204 char *buf = NULL;
@@ -206,12 +213,12 @@ int utilfdt_read_err(const char *filename, char **buffp) · 8 unmodified lines
206213 }
207214
208215 /* Loop until we have read everything */
209− buf = malloc(bufsize);
216+ buf = xmalloc(bufsize);
210217 do {
211218 /* Expand the buffer to hold the next chunk */
212219 if (offset == bufsize) {
213220 bufsize *= 2;
214− buf = realloc(buf, bufsize);
221+ buf = xrealloc(buf, bufsize);
215222 if (!buf) {
216223 ret = ENOMEM;
217224 break;
@@ -232,13 +239,20 @@ int utilfdt_read_err(const char *filename, char **buffp) · 14 unmodified lines
232239 free(buf);
233240 else
234241 *buffp = buf;
242+ *len = bufsize;
235243 return ret;
236244 }
237245
238−char *utilfdt_read(const char *filename)
246+int utilfdt_read_err(const char *filename, char **buffp)
247+{
248+ off_t len;
249+ return utilfdt_read_err_len(filename, buffp, &len);
250+}
251+
252+char *utilfdt_read_len(const char *filename, off_t *len)
239253 {
240254 char *buff;
241− int ret = utilfdt_read_err(filename, &buff);
255+ int ret = utilfdt_read_err_len(filename, &buff, len);
242256
243257 if (ret) {
244258 fprintf(stderr, "Couldn't open blob from '%s': %s\n", filename,
@@ -249,6 +263,12 @@ char *utilfdt_read(const char *filename) · 4 unmodified lines
249263 return buff;
250264 }
251265
266+char *utilfdt_read(const char *filename)
267+{
268+ off_t len;
269+ return utilfdt_read_len(filename, &len);
270+}
271+
252272 int utilfdt_write_err(const char *filename, const void *blob)
253273 {
254274 int fd = 1; /* assume stdout */
@@ -329,3 +349,100 @@ int utilfdt_decode_type(const char *fmt, int *type, int *size) · 74 unmodified lines
329349 return -1;
330350 return 0;
331351 }
352+
353+void utilfdt_print_data(const char *data, int len)
354+{
355+ int i;
356+ const char *p = data;
357+ const char *s;
358+
359+ /* no data, don't print */
360+ if (len == 0)
361+ return;
362+
363+ if (util_is_printable_string(data, len)) {
364+ printf(" = ");
365+
366+ s = data;
367+ do {
368+ printf("\"%s\"", s);
369+ s += strlen(s) + 1;
370+ if (s < data + len)
371+ printf(", ");
372+ } while (s < data + len);
373+
374+ } else if ((len % 4) == 0) {
375+ const uint32_t *cell = (const uint32_t *)data;
376+
377+ printf(" = <");
378+ for (i = 0; i < len; i += 4)
379+ printf("0x%08x%s", fdt32_to_cpu(cell[i]),
380+ i < (len - 4) ? " " : "");
381+ printf(">");
382+ } else {
383+ printf(" = [");
384+ for (i = 0; i < len; i++)
385+ printf("%02x%s", *p++, i < len - 1 ? " " : "");
386+ printf("]");
387+ }
388+}
389+
390+void util_version(void)
391+{
392+ printf("Version: %s\n", DTC_VERSION);
393+ exit(0);
394+}
395+
396+void util_usage(const char *errmsg, const char *synopsis,
397+ const char *short_opts, struct option const long_opts[],
398+ const char * const opts_help[])
399+{
400+ FILE *fp = errmsg ? stderr : stdout;
401+ const char a_arg[] = "<arg>";
402+ size_t a_arg_len = strlen(a_arg) + 1;
403+ size_t i;
404+ int optlen;
405+
406+ fprintf(fp,
407+ "Usage: %s\n"
408+ "\n"
409+ "Options: -[%s]\n", synopsis, short_opts);
410+
411+ /* prescan the --long opt length to auto-align */
412+ optlen = 0;
413+ for (i = 0; long_opts[i].name; ++i) {
414+ /* +1 is for space between --opt and help text */
415+ int l = strlen(long_opts[i].name) + 1;
416+ if (long_opts[i].has_arg == a_argument)
417+ l += a_arg_len;
418+ if (optlen < l)
419+ optlen = l;
420+ }
421+
422+ for (i = 0; long_opts[i].name; ++i) {
423+ /* helps when adding new applets or options */
424+ assert(opts_help[i] != NULL);
425+
426+ /* first output the short flag if it has one */
427+ if (long_opts[i].val > '~')
428+ fprintf(fp, " ");
429+ else
430+ fprintf(fp, " -%c, ", long_opts[i].val);
431+
432+ /* then the long flag */
433+ if (long_opts[i].has_arg == no_argument)
434+ fprintf(fp, "--%-*s", optlen, long_opts[i].name);
435+ else
436+ fprintf(fp, "--%s %s%*s", long_opts[i].name, a_arg,
437+ (int)(optlen - strlen(long_opts[i].name) - a_arg_len), "");
438+
439+ /* finally the help text */
440+ fprintf(fp, "%s\n", opts_help[i]);
441+ }
442+
443+ if (errmsg) {
444+ fprintf(fp, "\nError: %s\n", errmsg);
445+ exit(EXIT_FAILURE);
446+ } else
447+ exit(EXIT_SUCCESS);
448+}
scripts/dtc/util.h+102−5
@@ -2,6 +2,7 @@ · 1 unmodified line
22 #define _UTIL_H
33
44 #include <stdarg.h>
5+#include <getopt.h>
56
67 /*
78 * Copyright 2011 The Chromium Authors, All Rights Reserved.
@@ -23,7 +24,9 @@ · 15 unmodified lines
2324 * USA
2425 */
2526
26−static inline void __attribute__((noreturn)) die(char * str, ...)
27+#define ARRAY_SIZE(x) (sizeof(x) / sizeof((x)[0]))
28+
29+static inline void __attribute__((noreturn)) die(const char *str, ...)
2730 {
2831 va_list ap;
2932
@@ -57,12 +60,14 @@ extern char *xstrdup(const char *s); · 27 unmodified lines
5760 extern char *join_path(const char *path, const char *name);
5861
5962 /**
60− * Check a string of a given length to see if it is all printable and
61− * has a valid terminator.
63+ * Check a property of a given length to see if it is all printable and
64+ * has a valid terminator. The property can contain either a single string,
65+ * or multiple strings each of non-zero length.
6266 *
6367 * @param data The string to check
6468 * @param len The string length including terminator
65− * @return 1 if a valid printable string, 0 if not */
69+ * @return 1 if a valid printable string, 0 if not
70+ */
6671 int util_is_printable_string(const void *data, int len);
6772
6873 /*
@@ -82,6 +87,13 @@ char get_escape_char(const char *s, int *i); · 13 unmodified lines
8287 */
8388 char *utilfdt_read(const char *filename);
8489
90+/**
91+ * Like utilfdt_read(), but also passes back the size of the file read.
92+ *
93+ * @param len If non-NULL, the amount of data we managed to read
94+ */
95+char *utilfdt_read_len(const char *filename, off_t *len);
96+
8597 /**
8698 * Read a device tree file into a buffer. Does not report errors, but only
8799 * returns them. The value returned can be passed to strerror() to obtain
@@ -93,6 +105,12 @@ char *utilfdt_read(const char *filename); · 5 unmodified lines
93105 */
94106 int utilfdt_read_err(const char *filename, char **buffp);
95107
108+/**
109+ * Like utilfdt_read_err(), but also passes back the size of the file read.
110+ *
111+ * @param len If non-NULL, the amount of data we managed to read
112+ */
113+int utilfdt_read_err_len(const char *filename, char **buffp, off_t *len);
96114
97115 /**
98116 * Write a device tree buffer to a file. This will report any errors on
@@ -148,6 +166,85 @@ int utilfdt_decode_type(const char *fmt, int *type, int *size); · 49 unmodified lines
148166 #define USAGE_TYPE_MSG \
149167 "<type>\ts=string, i=int, u=unsigned, x=hex\n" \
150168 "\tOptional modifier prefix:\n" \
151− "\t\thh or b=byte, h=2 byte, l=4 byte (default)\n";
169+ "\t\thh or b=byte, h=2 byte, l=4 byte (default)";
170+
171+/**
172+ * Print property data in a readable format to stdout
173+ *
174+ * Properties that look like strings will be printed as strings. Otherwise
175+ * the data will be displayed either as cells (if len is a multiple of 4
176+ * bytes) or bytes.
177+ *
178+ * If len is 0 then this function does nothing.
179+ *
180+ * @param data Pointers to property data
181+ * @param len Length of property data
182+ */
183+void utilfdt_print_data(const char *data, int len);
184+
185+/**
186+ * Show source version and exit
187+ */
188+void util_version(void) __attribute__((noreturn));
189+
190+/**
191+ * Show usage and exit
192+ *
193+ * This helps standardize the output of various utils. You most likely want
194+ * to use the usage() helper below rather than call this.
195+ *
196+ * @param errmsg If non-NULL, an error message to display
197+ * @param synopsis The initial example usage text (and possible examples)
198+ * @param short_opts The string of short options
199+ * @param long_opts The structure of long options
200+ * @param opts_help An array of help strings (should align with long_opts)
201+ */
202+void util_usage(const char *errmsg, const char *synopsis,
203+ const char *short_opts, struct option const long_opts[],
204+ const char * const opts_help[]) __attribute__((noreturn));
205+
206+/**
207+ * Show usage and exit
208+ *
209+ * If you name all your usage variables with usage_xxx, then you can call this
210+ * help macro rather than expanding all arguments yourself.
211+ *
212+ * @param errmsg If non-NULL, an error message to display
213+ */
214+#define usage(errmsg) \
215+ util_usage(errmsg, usage_synopsis, usage_short_opts, \
216+ usage_long_opts, usage_opts_help)
217+
218+/**
219+ * Call getopt_long() with standard options
220+ *
221+ * Since all util code runs getopt in the same way, provide a helper.
222+ */
223+#define util_getopt_long() getopt_long(argc, argv, usage_short_opts, \
224+ usage_long_opts, NULL)
225+
226+/* Helper for aligning long_opts array */
227+#define a_argument required_argument
228+
229+/* Helper for usage_short_opts string constant */
230+#define USAGE_COMMON_SHORT_OPTS "hV"
231+
232+/* Helper for usage_long_opts option array */
233+#define USAGE_COMMON_LONG_OPTS \
234+ {"help", no_argument, NULL, 'h'}, \
235+ {"version", no_argument, NULL, 'V'}, \
236+ {NULL, no_argument, NULL, 0x0}
237+
238+/* Helper for usage_opts_help array */
239+#define USAGE_COMMON_OPTS_HELP \
240+ "Print this help and exit", \
241+ "Print version and exit", \
242+ NULL
243+
244+/* Helper for getopt case statements */
245+#define case_USAGE_COMMON_FLAGS \
246+ case 'h': usage(NULL); \
247+ case 'V': util_version(); \
248+ case '?': usage("unknown option");
152249
153250 #endif /* _UTIL_H */
scripts/dtc/version_gen.h+1−1
@@ -1 +1 @@
1−#define DTC_VERSION "DTC 1.2.0-g37c0b6a0"
1+#define DTC_VERSION "DTC 1.4.0-dirty"

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t