diff options
Diffstat (limited to 'scripts/dtc/dtc-parser.tab.c_shipped')
-rw-r--r-- | scripts/dtc/dtc-parser.tab.c_shipped | 813 |
1 files changed, 453 insertions, 360 deletions
diff --git a/scripts/dtc/dtc-parser.tab.c_shipped b/scripts/dtc/dtc-parser.tab.c_shipped index 27fac4b9cd..06a6e9414a 100644 --- a/scripts/dtc/dtc-parser.tab.c_shipped +++ b/scripts/dtc/dtc-parser.tab.c_shipped @@ -1,8 +1,8 @@ -/* A Bison parser, made by GNU Bison 3.0.2. */ +/* A Bison parser, made by GNU Bison 3.0.4. */ /* Bison implementation for Yacc-like parsers in C - Copyright (C) 1984, 1989-1990, 2000-2013 Free Software Foundation, Inc. + Copyright (C) 1984, 1989-1990, 2000-2015 Free Software Foundation, Inc. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -44,7 +44,7 @@ #define YYBISON 1 /* Bison version. */ -#define YYBISON_VERSION "3.0.2" +#define YYBISON_VERSION "3.0.4" /* Skeleton name. */ #define YYSKELETON_NAME "yacc.c" @@ -65,6 +65,7 @@ #line 20 "dtc-parser.y" /* yacc.c:339 */ #include <stdio.h> +#include <inttypes.h> #include "dtc.h" #include "srcpos.h" @@ -77,10 +78,10 @@ extern void yyerror(char const *s); treesource_error = true; \ } while (0) -extern struct boot_info *the_boot_info; +extern struct dt_info *parser_output; extern bool treesource_error; -#line 84 "dtc-parser.tab.c" /* yacc.c:339 */ +#line 85 "dtc-parser.tab.c" /* yacc.c:339 */ # ifndef YY_NULLPTR # if defined __cplusplus && 201103L <= __cplusplus @@ -116,35 +117,36 @@ extern int yydebug; enum yytokentype { DT_V1 = 258, - DT_MEMRESERVE = 259, - DT_LSHIFT = 260, - DT_RSHIFT = 261, - DT_LE = 262, - DT_GE = 263, - DT_EQ = 264, - DT_NE = 265, - DT_AND = 266, - DT_OR = 267, - DT_BITS = 268, - DT_DEL_PROP = 269, - DT_DEL_NODE = 270, - DT_PROPNODENAME = 271, - DT_LITERAL = 272, - DT_CHAR_LITERAL = 273, - DT_BYTE = 274, - DT_STRING = 275, - DT_LABEL = 276, - DT_REF = 277, - DT_INCBIN = 278 + DT_PLUGIN = 259, + DT_MEMRESERVE = 260, + DT_LSHIFT = 261, + DT_RSHIFT = 262, + DT_LE = 263, + DT_GE = 264, + DT_EQ = 265, + DT_NE = 266, + DT_AND = 267, + DT_OR = 268, + DT_BITS = 269, + DT_DEL_PROP = 270, + DT_DEL_NODE = 271, + DT_PROPNODENAME = 272, + DT_LITERAL = 273, + DT_CHAR_LITERAL = 274, + DT_BYTE = 275, + DT_STRING = 276, + DT_LABEL = 277, + DT_REF = 278, + DT_INCBIN = 279 }; #endif /* Value type. */ #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED -typedef union YYSTYPE YYSTYPE; + union YYSTYPE { -#line 38 "dtc-parser.y" /* yacc.c:355 */ +#line 39 "dtc-parser.y" /* yacc.c:355 */ char *propnodename; char *labelref; @@ -162,9 +164,12 @@ union YYSTYPE struct node *nodelist; struct reserve_info *re; uint64_t integer; + unsigned int flags; -#line 167 "dtc-parser.tab.c" /* yacc.c:355 */ +#line 170 "dtc-parser.tab.c" /* yacc.c:355 */ }; + +typedef union YYSTYPE YYSTYPE; # define YYSTYPE_IS_TRIVIAL 1 # define YYSTYPE_IS_DECLARED 1 #endif @@ -192,7 +197,7 @@ int yyparse (void); /* Copy the second part of user declarations. */ -#line 196 "dtc-parser.tab.c" /* yacc.c:358 */ +#line 201 "dtc-parser.tab.c" /* yacc.c:358 */ #ifdef short # undef short @@ -434,23 +439,23 @@ union yyalloc #endif /* !YYCOPY_NEEDED */ /* YYFINAL -- State number of the termination state. */ -#define YYFINAL 4 +#define YYFINAL 6 /* YYLAST -- Last index in YYTABLE. */ -#define YYLAST 133 +#define YYLAST 140 /* YYNTOKENS -- Number of terminals. */ -#define YYNTOKENS 47 +#define YYNTOKENS 48 /* YYNNTS -- Number of nonterminals. */ -#define YYNNTS 28 +#define YYNNTS 30 /* YYNRULES -- Number of rules. */ -#define YYNRULES 79 +#define YYNRULES 85 /* YYNSTATES -- Number of states. */ -#define YYNSTATES 141 +#define YYNSTATES 151 /* YYTRANSLATE[YYX] -- Symbol number corresponding to YYX as returned by yylex, with out-of-bounds checking. */ #define YYUNDEFTOK 2 -#define YYMAXUTOK 278 +#define YYMAXUTOK 279 #define YYTRANSLATE(YYX) \ ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) @@ -462,16 +467,16 @@ static const yytype_uint8 yytranslate[] = 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 46, 2, 2, 2, 44, 40, 2, - 32, 34, 43, 41, 33, 42, 2, 25, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 37, 24, - 35, 28, 29, 36, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 47, 2, 2, 2, 45, 41, 2, + 33, 35, 44, 42, 34, 43, 2, 26, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 38, 25, + 36, 29, 30, 37, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 30, 2, 31, 39, 2, 2, 2, 2, 2, + 2, 31, 2, 32, 40, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 26, 38, 27, 45, 2, 2, 2, + 2, 2, 2, 27, 39, 28, 46, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, @@ -486,21 +491,22 @@ static const yytype_uint8 yytranslate[] = 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, - 15, 16, 17, 18, 19, 20, 21, 22, 23 + 15, 16, 17, 18, 19, 20, 21, 22, 23, 24 }; #if YYDEBUG /* YYRLINE[YYN] -- Source line where rule number YYN was defined. */ static const yytype_uint16 yyrline[] = { - 0, 104, 104, 113, 116, 123, 127, 135, 139, 143, - 153, 168, 176, 179, 186, 190, 194, 198, 206, 210, - 214, 218, 222, 238, 248, 256, 259, 263, 270, 286, - 291, 310, 324, 331, 332, 333, 340, 344, 345, 349, - 350, 354, 355, 359, 360, 364, 365, 369, 370, 374, - 375, 376, 380, 381, 382, 383, 384, 388, 389, 390, - 394, 395, 396, 400, 401, 402, 403, 407, 408, 409, - 410, 415, 418, 422, 430, 433, 437, 445, 449, 453 + 0, 109, 109, 117, 121, 128, 129, 139, 142, 149, + 153, 161, 165, 169, 180, 191, 210, 225, 233, 236, + 243, 247, 251, 255, 263, 267, 271, 275, 279, 295, + 305, 313, 316, 320, 327, 343, 348, 367, 381, 388, + 389, 390, 397, 401, 402, 406, 407, 411, 412, 416, + 417, 421, 422, 426, 427, 431, 432, 433, 437, 438, + 439, 440, 441, 445, 446, 447, 451, 452, 453, 457, + 458, 467, 476, 480, 481, 482, 483, 488, 491, 495, + 503, 506, 510, 518, 522, 526 }; #endif @@ -509,19 +515,20 @@ static const yytype_uint16 yyrline[] = First, the terminals, then, starting at YYNTOKENS, nonterminals. */ static const char *const yytname[] = { - "$end", "error", "$undefined", "DT_V1", "DT_MEMRESERVE", "DT_LSHIFT", - "DT_RSHIFT", "DT_LE", "DT_GE", "DT_EQ", "DT_NE", "DT_AND", "DT_OR", - "DT_BITS", "DT_DEL_PROP", "DT_DEL_NODE", "DT_PROPNODENAME", "DT_LITERAL", - "DT_CHAR_LITERAL", "DT_BYTE", "DT_STRING", "DT_LABEL", "DT_REF", - "DT_INCBIN", "';'", "'/'", "'{'", "'}'", "'='", "'>'", "'['", "']'", - "'('", "','", "')'", "'<'", "'?'", "':'", "'|'", "'^'", "'&'", "'+'", - "'-'", "'*'", "'%'", "'~'", "'!'", "$accept", "sourcefile", - "memreserves", "memreserve", "devicetree", "nodedef", "proplist", - "propdef", "propdata", "propdataprefix", "arrayprefix", "integer_prim", - "integer_expr", "integer_trinary", "integer_or", "integer_and", - "integer_bitor", "integer_bitxor", "integer_bitand", "integer_eq", - "integer_rela", "integer_shift", "integer_add", "integer_mul", - "integer_unary", "bytestring", "subnodes", "subnode", YY_NULLPTR + "$end", "error", "$undefined", "DT_V1", "DT_PLUGIN", "DT_MEMRESERVE", + "DT_LSHIFT", "DT_RSHIFT", "DT_LE", "DT_GE", "DT_EQ", "DT_NE", "DT_AND", + "DT_OR", "DT_BITS", "DT_DEL_PROP", "DT_DEL_NODE", "DT_PROPNODENAME", + "DT_LITERAL", "DT_CHAR_LITERAL", "DT_BYTE", "DT_STRING", "DT_LABEL", + "DT_REF", "DT_INCBIN", "';'", "'/'", "'{'", "'}'", "'='", "'>'", "'['", + "']'", "'('", "','", "')'", "'<'", "'?'", "':'", "'|'", "'^'", "'&'", + "'+'", "'-'", "'*'", "'%'", "'~'", "'!'", "$accept", "sourcefile", + "header", "headers", "memreserves", "memreserve", "devicetree", + "nodedef", "proplist", "propdef", "propdata", "propdataprefix", + "arrayprefix", "integer_prim", "integer_expr", "integer_trinary", + "integer_or", "integer_and", "integer_bitor", "integer_bitxor", + "integer_bitand", "integer_eq", "integer_rela", "integer_shift", + "integer_add", "integer_mul", "integer_unary", "bytestring", "subnodes", + "subnode", YY_NULLPTR }; #endif @@ -532,16 +539,16 @@ static const yytype_uint16 yytoknum[] = { 0, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, - 275, 276, 277, 278, 59, 47, 123, 125, 61, 62, - 91, 93, 40, 44, 41, 60, 63, 58, 124, 94, - 38, 43, 45, 42, 37, 126, 33 + 275, 276, 277, 278, 279, 59, 47, 123, 125, 61, + 62, 91, 93, 40, 44, 41, 60, 63, 58, 124, + 94, 38, 43, 45, 42, 37, 126, 33 }; # endif -#define YYPACT_NINF -38 +#define YYPACT_NINF -81 #define yypact_value_is_default(Yystate) \ - (!!((Yystate) == (-38))) + (!!((Yystate) == (-81))) #define YYTABLE_NINF -1 @@ -552,21 +559,22 @@ static const yytype_uint16 yytoknum[] = STATE-NUM. */ static const yytype_int8 yypact[] = { - 21, 11, 45, 10, -38, 9, 10, 15, 10, -38, - -38, -9, 9, -38, 56, 40, -38, -9, -9, -9, - -38, 51, -38, -6, 75, 49, 52, 48, 50, 3, - 66, 33, 0, -38, 65, -38, -38, 68, 56, 56, - -38, -38, -38, -38, -9, -9, -9, -9, -9, -9, - -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, - -9, -9, -9, -38, 42, 69, -38, -38, 75, 55, - 49, 52, 48, 50, 3, 3, 66, 66, 66, 66, - 33, 33, 0, 0, -38, -38, -38, 78, 79, -11, - 42, -38, 70, 42, -38, -9, 72, 74, -38, -38, - -38, -38, -38, 76, -38, -38, -38, -38, -38, 18, - -1, -38, -38, -38, -38, 82, -38, -38, -38, 71, - -38, -38, 32, 67, 81, -3, -38, -38, -38, -38, - -38, 43, -38, -38, -38, 9, -38, 73, 9, 77, - -38 + 11, 17, 23, 11, 10, 56, -81, -81, 21, 10, + -5, 10, 39, -81, -81, -13, 21, -81, 44, 44, + 43, -81, -81, -13, -13, -13, -81, 38, -81, -2, + 67, 53, 55, 57, 41, 1, 75, 42, -19, -81, + 58, -81, -81, -81, 73, 74, 44, 44, -81, -81, + -81, -81, -13, -13, -13, -13, -13, -13, -13, -13, + -13, -13, -13, -13, -13, -13, -13, -13, -13, -13, + -13, -81, 46, 76, 44, -81, -81, 67, 61, 53, + 55, 57, 41, 1, 1, 75, 75, 75, 75, 42, + 42, -19, -19, -81, -81, -81, 83, 85, 45, 46, + -81, 77, 46, -81, -81, -13, 78, 79, -81, -81, + -81, -81, -81, 81, -81, -81, -81, -81, -81, 16, + 22, -81, -81, -81, -81, 89, -81, -81, -81, 80, + -81, -81, -6, 72, 88, 35, -81, -81, -81, -81, + -81, 52, -81, -81, -81, 21, -81, 82, 21, 84, + -81 }; /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM. @@ -574,37 +582,38 @@ static const yytype_int8 yypact[] = means the default is an error. */ static const yytype_uint8 yydefact[] = { - 0, 0, 0, 3, 1, 0, 0, 0, 3, 33, - 34, 0, 0, 6, 0, 2, 4, 0, 0, 0, - 67, 0, 36, 37, 39, 41, 43, 45, 47, 49, - 52, 59, 62, 66, 0, 12, 7, 0, 0, 0, - 68, 69, 70, 35, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 5, 7, 3, 1, 6, 0, 0, + 0, 7, 0, 39, 40, 0, 0, 10, 0, 0, + 2, 8, 4, 0, 0, 0, 73, 0, 42, 43, + 45, 47, 49, 51, 53, 55, 58, 65, 68, 72, + 0, 18, 13, 11, 0, 0, 0, 0, 74, 75, + 76, 41, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 5, 74, 0, 9, 8, 40, 0, - 42, 44, 46, 48, 50, 51, 55, 56, 54, 53, - 57, 58, 60, 61, 64, 63, 65, 0, 0, 0, - 0, 13, 0, 74, 10, 0, 0, 0, 15, 25, - 77, 17, 79, 0, 76, 75, 38, 16, 78, 0, - 0, 11, 24, 14, 26, 0, 18, 27, 21, 0, - 71, 29, 0, 0, 0, 0, 32, 31, 19, 30, - 28, 0, 72, 73, 20, 0, 23, 0, 0, 0, - 22 + 0, 9, 80, 0, 0, 15, 12, 46, 0, 48, + 50, 52, 54, 56, 57, 61, 62, 60, 59, 63, + 64, 66, 67, 70, 69, 71, 0, 0, 0, 0, + 19, 0, 80, 16, 14, 0, 0, 0, 21, 31, + 83, 23, 85, 0, 82, 81, 44, 22, 84, 0, + 0, 17, 30, 20, 32, 0, 24, 33, 27, 0, + 77, 35, 0, 0, 0, 0, 38, 37, 25, 36, + 34, 0, 78, 79, 26, 0, 29, 0, 0, 0, + 28 }; /* YYPGOTO[NTERM-NUM]. */ static const yytype_int8 yypgoto[] = { - -38, -38, 96, 99, -38, -37, -38, -20, -38, -38, - -38, -5, 62, 13, -38, 80, 63, 84, 64, 61, - 28, 14, 24, 25, -14, -38, 20, 26 + -81, -81, -81, 107, 100, 103, -81, -18, -81, -80, + -81, -81, -81, -8, 62, 9, -81, 65, 64, 66, + 69, 63, 30, 15, 26, 27, -21, -81, 20, 24 }; /* YYDEFGOTO[NTERM-NUM]. */ -static const yytype_int8 yydefgoto[] = +static const yytype_int16 yydefgoto[] = { - -1, 2, 7, 8, 15, 36, 64, 91, 109, 110, - 122, 20, 21, 22, 23, 24, 25, 26, 27, 28, - 29, 30, 31, 32, 33, 125, 92, 93 + -1, 2, 3, 4, 10, 11, 20, 42, 72, 100, + 119, 120, 132, 26, 27, 28, 29, 30, 31, 32, + 33, 34, 35, 36, 37, 38, 39, 135, 101, 102 }; /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If @@ -612,85 +621,90 @@ static const yytype_int8 yydefgoto[] = number is the opposite. If YYTABLE_NINF, syntax error. */ static const yytype_uint8 yytable[] = { - 12, 66, 67, 40, 41, 42, 44, 34, 9, 10, - 52, 53, 115, 98, 5, 35, 132, 99, 133, 116, - 117, 118, 119, 11, 1, 60, 9, 10, 134, 120, - 45, 6, 54, 17, 121, 3, 18, 19, 55, 112, - 14, 11, 113, 61, 62, 4, 84, 85, 86, 9, - 10, 114, 100, 126, 127, 37, 87, 88, 89, 50, - 51, 128, 38, 90, 11, 39, 76, 77, 78, 79, - 101, 56, 57, 104, 58, 59, 135, 136, 74, 75, - 80, 81, 35, 82, 83, 43, 46, 47, 49, 63, - 65, 48, 95, 94, 96, 97, 107, 103, 108, 123, - 111, 131, 130, 124, 16, 13, 138, 69, 106, 70, - 73, 140, 72, 105, 0, 0, 102, 129, 0, 0, - 0, 0, 0, 0, 68, 0, 0, 0, 0, 0, - 137, 71, 0, 139 + 16, 43, 48, 49, 50, 13, 14, 68, 40, 60, + 61, 52, 13, 14, 1, 8, 136, 137, 18, 111, + 15, 19, 114, 6, 138, 69, 70, 15, 75, 76, + 23, 62, 9, 24, 25, 53, 125, 63, 122, 13, + 14, 123, 5, 126, 127, 128, 129, 93, 94, 95, + 124, 58, 59, 130, 15, 142, 104, 143, 131, 44, + 12, 96, 97, 98, 22, 45, 46, 144, 99, 47, + 108, 41, 41, 51, 109, 85, 86, 87, 88, 54, + 110, 64, 65, 71, 66, 67, 145, 146, 83, 84, + 89, 90, 55, 91, 92, 56, 73, 74, 57, 105, + 106, 103, 107, 117, 118, 113, 121, 133, 140, 141, + 7, 21, 17, 134, 116, 78, 148, 77, 79, 150, + 82, 80, 115, 112, 139, 81, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 147, 0, 0, + 149 }; static const yytype_int16 yycheck[] = { - 5, 38, 39, 17, 18, 19, 12, 12, 17, 18, - 7, 8, 13, 24, 4, 26, 19, 28, 21, 20, - 21, 22, 23, 32, 3, 25, 17, 18, 31, 30, - 36, 21, 29, 42, 35, 24, 45, 46, 35, 21, - 25, 32, 24, 43, 44, 0, 60, 61, 62, 17, - 18, 33, 89, 21, 22, 15, 14, 15, 16, 9, - 10, 29, 22, 21, 32, 25, 52, 53, 54, 55, - 90, 5, 6, 93, 41, 42, 33, 34, 50, 51, - 56, 57, 26, 58, 59, 34, 11, 38, 40, 24, - 22, 39, 37, 24, 16, 16, 24, 27, 24, 17, - 24, 20, 35, 32, 8, 6, 33, 45, 95, 46, - 49, 34, 48, 93, -1, -1, 90, 122, -1, -1, - -1, -1, -1, -1, 44, -1, -1, -1, -1, -1, - 135, 47, -1, 138 + 8, 19, 23, 24, 25, 18, 19, 26, 16, 8, + 9, 13, 18, 19, 3, 5, 22, 23, 23, 99, + 33, 26, 102, 0, 30, 44, 45, 33, 46, 47, + 43, 30, 22, 46, 47, 37, 14, 36, 22, 18, + 19, 25, 25, 21, 22, 23, 24, 68, 69, 70, + 34, 10, 11, 31, 33, 20, 74, 22, 36, 16, + 4, 15, 16, 17, 25, 22, 23, 32, 22, 26, + 25, 27, 27, 35, 29, 60, 61, 62, 63, 12, + 98, 6, 7, 25, 42, 43, 34, 35, 58, 59, + 64, 65, 39, 66, 67, 40, 23, 23, 41, 38, + 17, 25, 17, 25, 25, 28, 25, 18, 36, 21, + 3, 11, 9, 33, 105, 53, 34, 52, 54, 35, + 57, 55, 102, 99, 132, 56, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 145, -1, -1, + 148 }; /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing symbol of state STATE-NUM. */ static const yytype_uint8 yystos[] = { - 0, 3, 48, 24, 0, 4, 21, 49, 50, 17, - 18, 32, 58, 50, 25, 51, 49, 42, 45, 46, - 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, - 68, 69, 70, 71, 58, 26, 52, 15, 22, 25, - 71, 71, 71, 34, 12, 36, 11, 38, 39, 40, - 9, 10, 7, 8, 29, 35, 5, 6, 41, 42, - 25, 43, 44, 24, 53, 22, 52, 52, 62, 59, - 63, 64, 65, 66, 67, 67, 68, 68, 68, 68, - 69, 69, 70, 70, 71, 71, 71, 14, 15, 16, - 21, 54, 73, 74, 24, 37, 16, 16, 24, 28, - 52, 54, 74, 27, 54, 73, 60, 24, 24, 55, - 56, 24, 21, 24, 33, 13, 20, 21, 22, 23, - 30, 35, 57, 17, 32, 72, 21, 22, 29, 58, - 35, 20, 19, 21, 31, 33, 34, 58, 33, 58, - 34 + 0, 3, 49, 50, 51, 25, 0, 51, 5, 22, + 52, 53, 4, 18, 19, 33, 61, 53, 23, 26, + 54, 52, 25, 43, 46, 47, 61, 62, 63, 64, + 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, + 61, 27, 55, 55, 16, 22, 23, 26, 74, 74, + 74, 35, 13, 37, 12, 39, 40, 41, 10, 11, + 8, 9, 30, 36, 6, 7, 42, 43, 26, 44, + 45, 25, 56, 23, 23, 55, 55, 65, 62, 66, + 67, 68, 69, 70, 70, 71, 71, 71, 71, 72, + 72, 73, 73, 74, 74, 74, 15, 16, 17, 22, + 57, 76, 77, 25, 55, 38, 17, 17, 25, 29, + 55, 57, 77, 28, 57, 76, 63, 25, 25, 58, + 59, 25, 22, 25, 34, 14, 21, 22, 23, 24, + 31, 36, 60, 18, 33, 75, 22, 23, 30, 61, + 36, 21, 20, 22, 32, 34, 35, 61, 34, 61, + 35 }; /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ static const yytype_uint8 yyr1[] = { - 0, 47, 48, 49, 49, 50, 50, 51, 51, 51, - 51, 52, 53, 53, 54, 54, 54, 54, 55, 55, - 55, 55, 55, 55, 55, 56, 56, 56, 57, 57, - 57, 57, 57, 58, 58, 58, 59, 60, 60, 61, - 61, 62, 62, 63, 63, 64, 64, 65, 65, 66, - 66, 66, 67, 67, 67, 67, 67, 68, 68, 68, - 69, 69, 69, 70, 70, 70, 70, 71, 71, 71, - 71, 72, 72, 72, 73, 73, 73, 74, 74, 74 + 0, 48, 49, 50, 50, 51, 51, 52, 52, 53, + 53, 54, 54, 54, 54, 54, 54, 55, 56, 56, + 57, 57, 57, 57, 58, 58, 58, 58, 58, 58, + 58, 59, 59, 59, 60, 60, 60, 60, 60, 61, + 61, 61, 62, 63, 63, 64, 64, 65, 65, 66, + 66, 67, 67, 68, 68, 69, 69, 69, 70, 70, + 70, 70, 70, 71, 71, 71, 72, 72, 72, 73, + 73, 73, 73, 74, 74, 74, 74, 75, 75, 75, + 76, 76, 76, 77, 77, 77 }; /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN. */ static const yytype_uint8 yyr2[] = { - 0, 2, 4, 0, 2, 4, 2, 2, 3, 3, - 4, 5, 0, 2, 4, 2, 3, 2, 2, 3, - 4, 2, 9, 5, 2, 0, 2, 2, 3, 1, - 2, 2, 2, 1, 1, 3, 1, 1, 5, 1, - 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, - 3, 3, 1, 3, 3, 3, 3, 3, 3, 1, - 3, 3, 1, 3, 3, 3, 1, 1, 2, 2, - 2, 0, 2, 2, 0, 2, 2, 2, 3, 2 + 0, 2, 3, 2, 4, 1, 2, 0, 2, 4, + 2, 2, 3, 2, 4, 3, 4, 5, 0, 2, + 4, 2, 3, 2, 2, 3, 4, 2, 9, 5, + 2, 0, 2, 2, 3, 1, 2, 2, 2, 1, + 1, 3, 1, 1, 5, 1, 3, 1, 3, 1, + 3, 1, 3, 1, 3, 1, 3, 3, 1, 3, + 3, 3, 3, 3, 3, 1, 3, 3, 1, 3, + 3, 3, 1, 1, 2, 2, 2, 0, 2, 2, + 0, 2, 2, 2, 3, 2 }; @@ -1460,79 +1474,144 @@ yyreduce: switch (yyn) { case 2: -#line 105 "dtc-parser.y" /* yacc.c:1646 */ +#line 110 "dtc-parser.y" /* yacc.c:1646 */ { - the_boot_info = build_boot_info((yyvsp[-1].re), (yyvsp[0].node), - guess_boot_cpuid((yyvsp[0].node))); + parser_output = build_dt_info((yyvsp[-2].flags), (yyvsp[-1].re), (yyvsp[0].node), + guess_boot_cpuid((yyvsp[0].node))); } -#line 1469 "dtc-parser.tab.c" /* yacc.c:1646 */ +#line 1483 "dtc-parser.tab.c" /* yacc.c:1646 */ break; case 3: -#line 113 "dtc-parser.y" /* yacc.c:1646 */ +#line 118 "dtc-parser.y" /* yacc.c:1646 */ { - (yyval.re) = NULL; + (yyval.flags) = DTSF_V1; } -#line 1477 "dtc-parser.tab.c" /* yacc.c:1646 */ +#line 1491 "dtc-parser.tab.c" /* yacc.c:1646 */ break; case 4: -#line 117 "dtc-parser.y" /* yacc.c:1646 */ +#line 122 "dtc-parser.y" /* yacc.c:1646 */ + { + (yyval.flags) = DTSF_V1 | DTSF_PLUGIN; + } +#line 1499 "dtc-parser.tab.c" /* yacc.c:1646 */ + break; + + case 6: +#line 130 "dtc-parser.y" /* yacc.c:1646 */ + { + if ((yyvsp[0].flags) != (yyvsp[-1].flags)) + ERROR(&(yylsp[0]), "Header flags don't match earlier ones"); + (yyval.flags) = (yyvsp[-1].flags); + } +#line 1509 "dtc-parser.tab.c" /* yacc.c:1646 */ + break; + + case 7: +#line 139 "dtc-parser.y" /* yacc.c:1646 */ + { + (yyval.re) = NULL; + } +#line 1517 "dtc-parser.tab.c" /* yacc.c:1646 */ + break; + + case 8: +#line 143 "dtc-parser.y" /* yacc.c:1646 */ { (yyval.re) = chain_reserve_entry((yyvsp[-1].re), (yyvsp[0].re)); } -#line 1485 "dtc-parser.tab.c" /* yacc.c:1646 */ +#line 1525 "dtc-parser.tab.c" /* yacc.c:1646 */ break; - case 5: -#line 124 "dtc-parser.y" /* yacc.c:1646 */ + case 9: +#line 150 "dtc-parser.y" /* yacc.c:1646 */ { (yyval.re) = build_reserve_entry((yyvsp[-2].integer), (yyvsp[-1].integer)); } -#line 1493 "dtc-parser.tab.c" /* yacc.c:1646 */ +#line 1533 "dtc-parser.tab.c" /* yacc.c:1646 */ break; - case 6: -#line 128 "dtc-parser.y" /* yacc.c:1646 */ + case 10: +#line 154 "dtc-parser.y" /* yacc.c:1646 */ { add_label(&(yyvsp[0].re)->labels, (yyvsp[-1].labelref)); (yyval.re) = (yyvsp[0].re); } -#line 1502 "dtc-parser.tab.c" /* yacc.c:1646 */ +#line 1542 "dtc-parser.tab.c" /* yacc.c:1646 */ break; - case 7: -#line 136 "dtc-parser.y" /* yacc.c:1646 */ + case 11: +#line 162 "dtc-parser.y" /* yacc.c:1646 */ { (yyval.node) = name_node((yyvsp[0].node), ""); } -#line 1510 "dtc-parser.tab.c" /* yacc.c:1646 */ +#line 1550 "dtc-parser.tab.c" /* yacc.c:1646 */ break; - case 8: -#line 140 "dtc-parser.y" /* yacc.c:1646 */ + case 12: +#line 166 "dtc-parser.y" /* yacc.c:1646 */ { (yyval.node) = merge_nodes((yyvsp[-2].node), (yyvsp[0].node)); } -#line 1518 "dtc-parser.tab.c" /* yacc.c:1646 */ +#line 1558 "dtc-parser.tab.c" /* yacc.c:1646 */ break; - case 9: -#line 144 "dtc-parser.y" /* yacc.c:1646 */ + case 13: +#line 170 "dtc-parser.y" /* yacc.c:1646 */ { - struct node *target = get_node_by_ref((yyvsp[-2].node), (yyvsp[-1].labelref)); + /* + * We rely on the rule being always: + * versioninfo plugindecl memreserves devicetree + * so $-1 is what we want (plugindecl) + */ + if (!((yyvsp[(-1) - (2)].flags) & DTSF_PLUGIN)) + ERROR(&(yylsp[0]), "Label or path %s not found", (yyvsp[-1].labelref)); + (yyval.node) = add_orphan_node(name_node(build_node(NULL, NULL), ""), (yyvsp[0].node), (yyvsp[-1].labelref)); + } +#line 1573 "dtc-parser.tab.c" /* yacc.c:1646 */ + break; - if (target) + case 14: +#line 181 "dtc-parser.y" /* yacc.c:1646 */ + { + struct node *target = get_node_by_ref((yyvsp[-3].node), (yyvsp[-1].labelref)); + + if (target) { + add_label(&target->labels, (yyvsp[-2].labelref)); merge_nodes(target, (yyvsp[0].node)); - else + } else ERROR(&(yylsp[-1]), "Label or path %s not found", (yyvsp[-1].labelref)); + (yyval.node) = (yyvsp[-3].node); + } +#line 1588 "dtc-parser.tab.c" /* yacc.c:1646 */ + break; + + case 15: +#line 192 "dtc-parser.y" /* yacc.c:1646 */ + { + struct node *target = get_node_by_ref((yyvsp[-2].node), (yyvsp[-1].labelref)); + + if (target) { + merge_nodes(target, (yyvsp[0].node)); + } else { + /* + * We rely on the rule being always: + * versioninfo plugindecl memreserves devicetree + * so $-1 is what we want (plugindecl) + */ + if ((yyvsp[(-1) - (3)].flags) & DTSF_PLUGIN) + add_orphan_node((yyvsp[-2].node), (yyvsp[0].node), (yyvsp[-1].labelref)); + else + ERROR(&(yylsp[-1]), "Label or path %s not found", (yyvsp[-1].labelref)); + } (yyval.node) = (yyvsp[-2].node); } -#line 1532 "dtc-parser.tab.c" /* yacc.c:1646 */ +#line 1611 "dtc-parser.tab.c" /* yacc.c:1646 */ break; - case 10: -#line 154 "dtc-parser.y" /* yacc.c:1646 */ + case 16: +#line 211 "dtc-parser.y" /* yacc.c:1646 */ { struct node *target = get_node_by_ref((yyvsp[-3].node), (yyvsp[-1].labelref)); @@ -1544,100 +1623,100 @@ yyreduce: (yyval.node) = (yyvsp[-3].node); } -#line 1548 "dtc-parser.tab.c" /* yacc.c:1646 */ +#line 1627 "dtc-parser.tab.c" /* yacc.c:1646 */ break; - case 11: -#line 169 "dtc-parser.y" /* yacc.c:1646 */ + case 17: +#line 226 "dtc-parser.y" /* yacc.c:1646 */ { (yyval.node) = build_node((yyvsp[-3].proplist), (yyvsp[-2].nodelist)); } -#line 1556 "dtc-parser.tab.c" /* yacc.c:1646 */ +#line 1635 "dtc-parser.tab.c" /* yacc.c:1646 */ break; - case 12: -#line 176 "dtc-parser.y" /* yacc.c:1646 */ + case 18: +#line 233 "dtc-parser.y" /* yacc.c:1646 */ { (yyval.proplist) = NULL; } -#line 1564 "dtc-parser.tab.c" /* yacc.c:1646 */ +#line 1643 "dtc-parser.tab.c" /* yacc.c:1646 */ break; - case 13: -#line 180 "dtc-parser.y" /* yacc.c:1646 */ + case 19: +#line 237 "dtc-parser.y" /* yacc.c:1646 */ { (yyval.proplist) = chain_property((yyvsp[0].prop), (yyvsp[-1].proplist)); } -#line 1572 "dtc-parser.tab.c" /* yacc.c:1646 */ +#line 1651 "dtc-parser.tab.c" /* yacc.c:1646 */ break; - case 14: -#line 187 "dtc-parser.y" /* yacc.c:1646 */ + case 20: +#line 244 "dtc-parser.y" /* yacc.c:1646 */ { (yyval.prop) = build_property((yyvsp[-3].propnodename), (yyvsp[-1].data)); } -#line 1580 "dtc-parser.tab.c" /* yacc.c:1646 */ +#line 1659 "dtc-parser.tab.c" /* yacc.c:1646 */ break; - case 15: -#line 191 "dtc-parser.y" /* yacc.c:1646 */ + case 21: +#line 248 "dtc-parser.y" /* yacc.c:1646 */ { (yyval.prop) = build_property((yyvsp[-1].propnodename), empty_data); } -#line 1588 "dtc-parser.tab.c" /* yacc.c:1646 */ +#line 1667 "dtc-parser.tab.c" /* yacc.c:1646 */ break; - case 16: -#line 195 "dtc-parser.y" /* yacc.c:1646 */ + case 22: +#line 252 "dtc-parser.y" /* yacc.c:1646 */ { (yyval.prop) = build_property_delete((yyvsp[-1].propnodename)); } -#line 1596 "dtc-parser.tab.c" /* yacc.c:1646 */ +#line 1675 "dtc-parser.tab.c" /* yacc.c:1646 */ break; - case 17: -#line 199 "dtc-parser.y" /* yacc.c:1646 */ + case 23: +#line 256 "dtc-parser.y" /* yacc.c:1646 */ { add_label(&(yyvsp[0].prop)->labels, (yyvsp[-1].labelref)); (yyval.prop) = (yyvsp[0].prop); } -#line 1605 "dtc-parser.tab.c" /* yacc.c:1646 */ +#line 1684 "dtc-parser.tab.c" /* yacc.c:1646 */ break; - case 18: -#line 207 "dtc-parser.y" /* yacc.c:1646 */ + case 24: +#line 264 "dtc-parser.y" /* yacc.c:1646 */ { (yyval.data) = data_merge((yyvsp[-1].data), (yyvsp[0].data)); } -#line 1613 "dtc-parser.tab.c" /* yacc.c:1646 */ +#line 1692 "dtc-parser.tab.c" /* yacc.c:1646 */ break; - case 19: -#line 211 "dtc-parser.y" /* yacc.c:1646 */ + case 25: +#line 268 "dtc-parser.y" /* yacc.c:1646 */ { (yyval.data) = data_merge((yyvsp[-2].data), (yyvsp[-1].array).data); } -#line 1621 "dtc-parser.tab.c" /* yacc.c:1646 */ +#line 1700 "dtc-parser.tab.c" /* yacc.c:1646 */ break; - case 20: -#line 215 "dtc-parser.y" /* yacc.c:1646 */ + case 26: +#line 272 "dtc-parser.y" /* yacc.c:1646 */ { (yyval.data) = data_merge((yyvsp[-3].data), (yyvsp[-1].data)); } -#line 1629 "dtc-parser.tab.c" /* yacc.c:1646 */ +#line 1708 "dtc-parser.tab.c" /* yacc.c:1646 */ break; - case 21: -#line 219 "dtc-parser.y" /* yacc.c:1646 */ + case 27: +#line 276 "dtc-parser.y" /* yacc.c:1646 */ { (yyval.data) = data_add_marker((yyvsp[-1].data), REF_PATH, (yyvsp[0].labelref)); } -#line 1637 "dtc-parser.tab.c" /* yacc.c:1646 */ +#line 1716 "dtc-parser.tab.c" /* yacc.c:1646 */ break; - case 22: -#line 223 "dtc-parser.y" /* yacc.c:1646 */ + case 28: +#line 280 "dtc-parser.y" /* yacc.c:1646 */ { FILE *f = srcfile_relative_open((yyvsp[-5].data).val, NULL); struct data d; @@ -1653,11 +1732,11 @@ yyreduce: (yyval.data) = data_merge((yyvsp[-8].data), d); fclose(f); } -#line 1657 "dtc-parser.tab.c" /* yacc.c:1646 */ +#line 1736 "dtc-parser.tab.c" /* yacc.c:1646 */ break; - case 23: -#line 239 "dtc-parser.y" /* yacc.c:1646 */ + case 29: +#line 296 "dtc-parser.y" /* yacc.c:1646 */ { FILE *f = srcfile_relative_open((yyvsp[-1].data).val, NULL); struct data d = empty_data; @@ -1667,43 +1746,43 @@ yyreduce: (yyval.data) = data_merge((yyvsp[-4].data), d); fclose(f); } -#line 1671 "dtc-parser.tab.c" /* yacc.c:1646 */ +#line 1750 "dtc-parser.tab.c" /* yacc.c:1646 */ break; - case 24: -#line 249 "dtc-parser.y" /* yacc.c:1646 */ + case 30: +#line 306 "dtc-parser.y" /* yacc.c:1646 */ { (yyval.data) = data_add_marker((yyvsp[-1].data), LABEL, (yyvsp[0].labelref)); } -#line 1679 "dtc-parser.tab.c" /* yacc.c:1646 */ +#line 1758 "dtc-parser.tab.c" /* yacc.c:1646 */ break; - case 25: -#line 256 "dtc-parser.y" /* yacc.c:1646 */ + case 31: +#line 313 "dtc-parser.y" /* yacc.c:1646 */ { (yyval.data) = empty_data; } -#line 1687 "dtc-parser.tab.c" /* yacc.c:1646 */ +#line 1766 "dtc-parser.tab.c" /* yacc.c:1646 */ break; - case 26: -#line 260 "dtc-parser.y" /* yacc.c:1646 */ + case 32: +#line 317 "dtc-parser.y" /* yacc.c:1646 */ { (yyval.data) = (yyvsp[-1].data); } -#line 1695 "dtc-parser.tab.c" /* yacc.c:1646 */ +#line 1774 "dtc-parser.tab.c" /* yacc.c:1646 */ break; - case 27: -#line 264 "dtc-parser.y" /* yacc.c:1646 */ + case 33: +#line 321 "dtc-parser.y" /* yacc.c:1646 */ { (yyval.data) = data_add_marker((yyvsp[-1].data), LABEL, (yyvsp[0].labelref)); } -#line 1703 "dtc-parser.tab.c" /* yacc.c:1646 */ +#line 1782 "dtc-parser.tab.c" /* yacc.c:1646 */ break; - case 28: -#line 271 "dtc-parser.y" /* yacc.c:1646 */ + case 34: +#line 328 "dtc-parser.y" /* yacc.c:1646 */ { unsigned long long bits; @@ -1719,20 +1798,20 @@ yyreduce: (yyval.array).data = empty_data; (yyval.array).bits = bits; } -#line 1723 "dtc-parser.tab.c" /* yacc.c:1646 */ +#line 1802 "dtc-parser.tab.c" /* yacc.c:1646 */ break; - case 29: -#line 287 "dtc-parser.y" /* yacc.c:1646 */ + case 35: +#line 344 "dtc-parser.y" /* yacc.c:1646 */ { (yyval.array).data = empty_data; (yyval.array).bits = 32; } -#line 1732 "dtc-parser.tab.c" /* yacc.c:1646 */ +#line 1811 "dtc-parser.tab.c" /* yacc.c:1646 */ break; - case 30: -#line 292 "dtc-parser.y" /* yacc.c:1646 */ + case 36: +#line 349 "dtc-parser.y" /* yacc.c:1646 */ { if ((yyvsp[-1].array).bits < 64) { uint64_t mask = (1ULL << (yyvsp[-1].array).bits) - 1; @@ -1751,11 +1830,11 @@ yyreduce: (yyval.array).data = data_append_integer((yyvsp[-1].array).data, (yyvsp[0].integer), (yyvsp[-1].array).bits); } -#line 1755 "dtc-parser.tab.c" /* yacc.c:1646 */ +#line 1834 "dtc-parser.tab.c" /* yacc.c:1646 */ break; - case 31: -#line 311 "dtc-parser.y" /* yacc.c:1646 */ + case 37: +#line 368 "dtc-parser.y" /* yacc.c:1646 */ { uint64_t val = ~0ULL >> (64 - (yyvsp[-1].array).bits); @@ -1769,233 +1848,247 @@ yyreduce: (yyval.array).data = data_append_integer((yyvsp[-1].array).data, val, (yyvsp[-1].array).bits); } -#line 1773 "dtc-parser.tab.c" /* yacc.c:1646 */ +#line 1852 "dtc-parser.tab.c" /* yacc.c:1646 */ break; - case 32: -#line 325 "dtc-parser.y" /* yacc.c:1646 */ + case 38: +#line 382 "dtc-parser.y" /* yacc.c:1646 */ { (yyval.array).data = data_add_marker((yyvsp[-1].array).data, LABEL, (yyvsp[0].labelref)); } -#line 1781 "dtc-parser.tab.c" /* yacc.c:1646 */ +#line 1860 "dtc-parser.tab.c" /* yacc.c:1646 */ break; - case 35: -#line 334 "dtc-parser.y" /* yacc.c:1646 */ + case 41: +#line 391 "dtc-parser.y" /* yacc.c:1646 */ { (yyval.integer) = (yyvsp[-1].integer); } -#line 1789 "dtc-parser.tab.c" /* yacc.c:1646 */ +#line 1868 "dtc-parser.tab.c" /* yacc.c:1646 */ break; - case 38: -#line 345 "dtc-parser.y" /* yacc.c:1646 */ + case 44: +#line 402 "dtc-parser.y" /* yacc.c:1646 */ { (yyval.integer) = (yyvsp[-4].integer) ? (yyvsp[-2].integer) : (yyvsp[0].integer); } -#line 1795 "dtc-parser.tab.c" /* yacc.c:1646 */ +#line 1874 "dtc-parser.tab.c" /* yacc.c:1646 */ break; - case 40: -#line 350 "dtc-parser.y" /* yacc.c:1646 */ + case 46: +#line 407 "dtc-parser.y" /* yacc.c:1646 */ { (yyval.integer) = (yyvsp[-2].integer) || (yyvsp[0].integer); } -#line 1801 "dtc-parser.tab.c" /* yacc.c:1646 */ +#line 1880 "dtc-parser.tab.c" /* yacc.c:1646 */ break; - case 42: -#line 355 "dtc-parser.y" /* yacc.c:1646 */ + case 48: +#line 412 "dtc-parser.y" /* yacc.c:1646 */ { (yyval.integer) = (yyvsp[-2].integer) && (yyvsp[0].integer); } -#line 1807 "dtc-parser.tab.c" /* yacc.c:1646 */ +#line 1886 "dtc-parser.tab.c" /* yacc.c:1646 */ break; - case 44: -#line 360 "dtc-parser.y" /* yacc.c:1646 */ + case 50: +#line 417 "dtc-parser.y" /* yacc.c:1646 */ { (yyval.integer) = (yyvsp[-2].integer) | (yyvsp[0].integer); } -#line 1813 "dtc-parser.tab.c" /* yacc.c:1646 */ +#line 1892 "dtc-parser.tab.c" /* yacc.c:1646 */ break; - case 46: -#line 365 "dtc-parser.y" /* yacc.c:1646 */ + case 52: +#line 422 "dtc-parser.y" /* yacc.c:1646 */ { (yyval.integer) = (yyvsp[-2].integer) ^ (yyvsp[0].integer); } -#line 1819 "dtc-parser.tab.c" /* yacc.c:1646 */ +#line 1898 "dtc-parser.tab.c" /* yacc.c:1646 */ break; - case 48: -#line 370 "dtc-parser.y" /* yacc.c:1646 */ + case 54: +#line 427 "dtc-parser.y" /* yacc.c:1646 */ { (yyval.integer) = (yyvsp[-2].integer) & (yyvsp[0].integer); } -#line 1825 "dtc-parser.tab.c" /* yacc.c:1646 */ +#line 1904 "dtc-parser.tab.c" /* yacc.c:1646 */ break; - case 50: -#line 375 "dtc-parser.y" /* yacc.c:1646 */ + case 56: +#line 432 "dtc-parser.y" /* yacc.c:1646 */ { (yyval.integer) = (yyvsp[-2].integer) == (yyvsp[0].integer); } -#line 1831 "dtc-parser.tab.c" /* yacc.c:1646 */ +#line 1910 "dtc-parser.tab.c" /* yacc.c:1646 */ break; - case 51: -#line 376 "dtc-parser.y" /* yacc.c:1646 */ + case 57: +#line 433 "dtc-parser.y" /* yacc.c:1646 */ { (yyval.integer) = (yyvsp[-2].integer) != (yyvsp[0].integer); } -#line 1837 "dtc-parser.tab.c" /* yacc.c:1646 */ +#line 1916 "dtc-parser.tab.c" /* yacc.c:1646 */ break; - case 53: -#line 381 "dtc-parser.y" /* yacc.c:1646 */ + case 59: +#line 438 "dtc-parser.y" /* yacc.c:1646 */ { (yyval.integer) = (yyvsp[-2].integer) < (yyvsp[0].integer); } -#line 1843 "dtc-parser.tab.c" /* yacc.c:1646 */ +#line 1922 "dtc-parser.tab.c" /* yacc.c:1646 */ break; - case 54: -#line 382 "dtc-parser.y" /* yacc.c:1646 */ + case 60: +#line 439 "dtc-parser.y" /* yacc.c:1646 */ { (yyval.integer) = (yyvsp[-2].integer) > (yyvsp[0].integer); } -#line 1849 "dtc-parser.tab.c" /* yacc.c:1646 */ +#line 1928 "dtc-parser.tab.c" /* yacc.c:1646 */ break; - case 55: -#line 383 "dtc-parser.y" /* yacc.c:1646 */ + case 61: +#line 440 "dtc-parser.y" /* yacc.c:1646 */ { (yyval.integer) = (yyvsp[-2].integer) <= (yyvsp[0].integer); } -#line 1855 "dtc-parser.tab.c" /* yacc.c:1646 */ +#line 1934 "dtc-parser.tab.c" /* yacc.c:1646 */ break; - case 56: -#line 384 "dtc-parser.y" /* yacc.c:1646 */ + case 62: +#line 441 "dtc-parser.y" /* yacc.c:1646 */ { (yyval.integer) = (yyvsp[-2].integer) >= (yyvsp[0].integer); } -#line 1861 "dtc-parser.tab.c" /* yacc.c:1646 */ +#line 1940 "dtc-parser.tab.c" /* yacc.c:1646 */ break; - case 57: -#line 388 "dtc-parser.y" /* yacc.c:1646 */ + case 63: +#line 445 "dtc-parser.y" /* yacc.c:1646 */ { (yyval.integer) = (yyvsp[-2].integer) << (yyvsp[0].integer); } -#line 1867 "dtc-parser.tab.c" /* yacc.c:1646 */ +#line 1946 "dtc-parser.tab.c" /* yacc.c:1646 */ break; - case 58: -#line 389 "dtc-parser.y" /* yacc.c:1646 */ + case 64: +#line 446 "dtc-parser.y" /* yacc.c:1646 */ { (yyval.integer) = (yyvsp[-2].integer) >> (yyvsp[0].integer); } -#line 1873 "dtc-parser.tab.c" /* yacc.c:1646 */ +#line 1952 "dtc-parser.tab.c" /* yacc.c:1646 */ break; - case 60: -#line 394 "dtc-parser.y" /* yacc.c:1646 */ + case 66: +#line 451 "dtc-parser.y" /* yacc.c:1646 */ { (yyval.integer) = (yyvsp[-2].integer) + (yyvsp[0].integer); } -#line 1879 "dtc-parser.tab.c" /* yacc.c:1646 */ +#line 1958 "dtc-parser.tab.c" /* yacc.c:1646 */ break; - case 61: -#line 395 "dtc-parser.y" /* yacc.c:1646 */ + case 67: +#line 452 "dtc-parser.y" /* yacc.c:1646 */ { (yyval.integer) = (yyvsp[-2].integer) - (yyvsp[0].integer); } -#line 1885 "dtc-parser.tab.c" /* yacc.c:1646 */ +#line 1964 "dtc-parser.tab.c" /* yacc.c:1646 */ break; - case 63: -#line 400 "dtc-parser.y" /* yacc.c:1646 */ + case 69: +#line 457 "dtc-parser.y" /* yacc.c:1646 */ { (yyval.integer) = (yyvsp[-2].integer) * (yyvsp[0].integer); } -#line 1891 "dtc-parser.tab.c" /* yacc.c:1646 */ +#line 1970 "dtc-parser.tab.c" /* yacc.c:1646 */ break; - case 64: -#line 401 "dtc-parser.y" /* yacc.c:1646 */ - { (yyval.integer) = (yyvsp[-2].integer) / (yyvsp[0].integer); } -#line 1897 "dtc-parser.tab.c" /* yacc.c:1646 */ + case 70: +#line 459 "dtc-parser.y" /* yacc.c:1646 */ + { + if ((yyvsp[0].integer) != 0) { + (yyval.integer) = (yyvsp[-2].integer) / (yyvsp[0].integer); + } else { + ERROR(&(yyloc), "Division by zero"); + (yyval.integer) = 0; + } + } +#line 1983 "dtc-parser.tab.c" /* yacc.c:1646 */ break; - case 65: -#line 402 "dtc-parser.y" /* yacc.c:1646 */ - { (yyval.integer) = (yyvsp[-2].integer) % (yyvsp[0].integer); } -#line 1903 "dtc-parser.tab.c" /* yacc.c:1646 */ + case 71: +#line 468 "dtc-parser.y" /* yacc.c:1646 */ + { + if ((yyvsp[0].integer) != 0) { + (yyval.integer) = (yyvsp[-2].integer) % (yyvsp[0].integer); + } else { + ERROR(&(yyloc), "Division by zero"); + (yyval.integer) = 0; + } + } +#line 1996 "dtc-parser.tab.c" /* yacc.c:1646 */ break; - case 68: -#line 408 "dtc-parser.y" /* yacc.c:1646 */ + case 74: +#line 481 "dtc-parser.y" /* yacc.c:1646 */ { (yyval.integer) = -(yyvsp[0].integer); } -#line 1909 "dtc-parser.tab.c" /* yacc.c:1646 */ +#line 2002 "dtc-parser.tab.c" /* yacc.c:1646 */ break; - case 69: -#line 409 "dtc-parser.y" /* yacc.c:1646 */ + case 75: +#line 482 "dtc-parser.y" /* yacc.c:1646 */ { (yyval.integer) = ~(yyvsp[0].integer); } -#line 1915 "dtc-parser.tab.c" /* yacc.c:1646 */ +#line 2008 "dtc-parser.tab.c" /* yacc.c:1646 */ break; - case 70: -#line 410 "dtc-parser.y" /* yacc.c:1646 */ + case 76: +#line 483 "dtc-parser.y" /* yacc.c:1646 */ { (yyval.integer) = !(yyvsp[0].integer); } -#line 1921 "dtc-parser.tab.c" /* yacc.c:1646 */ +#line 2014 "dtc-parser.tab.c" /* yacc.c:1646 */ break; - case 71: -#line 415 "dtc-parser.y" /* yacc.c:1646 */ + case 77: +#line 488 "dtc-parser.y" /* yacc.c:1646 */ { (yyval.data) = empty_data; } -#line 1929 "dtc-parser.tab.c" /* yacc.c:1646 */ +#line 2022 "dtc-parser.tab.c" /* yacc.c:1646 */ break; - case 72: -#line 419 "dtc-parser.y" /* yacc.c:1646 */ + case 78: +#line 492 "dtc-parser.y" /* yacc.c:1646 */ { (yyval.data) = data_append_byte((yyvsp[-1].data), (yyvsp[0].byte)); } -#line 1937 "dtc-parser.tab.c" /* yacc.c:1646 */ +#line 2030 "dtc-parser.tab.c" /* yacc.c:1646 */ break; - case 73: -#line 423 "dtc-parser.y" /* yacc.c:1646 */ + case 79: +#line 496 "dtc-parser.y" /* yacc.c:1646 */ { (yyval.data) = data_add_marker((yyvsp[-1].data), LABEL, (yyvsp[0].labelref)); } -#line 1945 "dtc-parser.tab.c" /* yacc.c:1646 */ +#line 2038 "dtc-parser.tab.c" /* yacc.c:1646 */ break; - case 74: -#line 430 "dtc-parser.y" /* yacc.c:1646 */ + case 80: +#line 503 "dtc-parser.y" /* yacc.c:1646 */ { (yyval.nodelist) = NULL; } -#line 1953 "dtc-parser.tab.c" /* yacc.c:1646 */ +#line 2046 "dtc-parser.tab.c" /* yacc.c:1646 */ break; - case 75: -#line 434 "dtc-parser.y" /* yacc.c:1646 */ + case 81: +#line 507 "dtc-parser.y" /* yacc.c:1646 */ { (yyval.nodelist) = chain_node((yyvsp[-1].node), (yyvsp[0].nodelist)); } -#line 1961 "dtc-parser.tab.c" /* yacc.c:1646 */ +#line 2054 "dtc-parser.tab.c" /* yacc.c:1646 */ break; - case 76: -#line 438 "dtc-parser.y" /* yacc.c:1646 */ + case 82: +#line 511 "dtc-parser.y" /* yacc.c:1646 */ { ERROR(&(yylsp[0]), "Properties must precede subnodes"); YYERROR; } -#line 1970 "dtc-parser.tab.c" /* yacc.c:1646 */ +#line 2063 "dtc-parser.tab.c" /* yacc.c:1646 */ break; - case 77: -#line 446 "dtc-parser.y" /* yacc.c:1646 */ + case 83: +#line 519 "dtc-parser.y" /* yacc.c:1646 */ { (yyval.node) = name_node((yyvsp[0].node), (yyvsp[-1].propnodename)); } -#line 1978 "dtc-parser.tab.c" /* yacc.c:1646 */ +#line 2071 "dtc-parser.tab.c" /* yacc.c:1646 */ break; - case 78: -#line 450 "dtc-parser.y" /* yacc.c:1646 */ + case 84: +#line 523 "dtc-parser.y" /* yacc.c:1646 */ { (yyval.node) = name_node(build_node_delete(), (yyvsp[-1].propnodename)); } -#line 1986 "dtc-parser.tab.c" /* yacc.c:1646 */ +#line 2079 "dtc-parser.tab.c" /* yacc.c:1646 */ break; - case 79: -#line 454 "dtc-parser.y" /* yacc.c:1646 */ + case 85: +#line 527 "dtc-parser.y" /* yacc.c:1646 */ { add_label(&(yyvsp[0].node)->labels, (yyvsp[-1].labelref)); (yyval.node) = (yyvsp[0].node); } -#line 1995 "dtc-parser.tab.c" /* yacc.c:1646 */ +#line 2088 "dtc-parser.tab.c" /* yacc.c:1646 */ break; -#line 1999 "dtc-parser.tab.c" /* yacc.c:1646 */ +#line 2092 "dtc-parser.tab.c" /* yacc.c:1646 */ default: break; } /* User semantic actions sometimes alter yychar, and that requires @@ -2230,7 +2323,7 @@ yyreturn: #endif return yyresult; } -#line 460 "dtc-parser.y" /* yacc.c:1906 */ +#line 533 "dtc-parser.y" /* yacc.c:1906 */ void yyerror(char const *s) |