0176-scripts-dtc-Update-to-upstream-version-1.4.1.patch 92 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373237423752376237723782379238023812382238323842385238623872388238923902391239223932394239523962397239823992400240124022403240424052406240724082409241024112412241324142415241624172418241924202421242224232424242524262427242824292430243124322433243424352436243724382439244024412442244324442445244624472448244924502451245224532454245524562457245824592460246124622463246424652466246724682469247024712472247324742475247624772478247924802481248224832484248524862487248824892490249124922493249424952496249724982499250025012502250325042505250625072508250925102511251225132514251525162517251825192520252125222523252425252526252725282529253025312532253325342535253625372538253925402541254225432544254525462547254825492550255125522553255425552556255725582559256025612562256325642565256625672568256925702571257225732574257525762577257825792580258125822583258425852586258725882589259025912592259325942595259625972598259926002601260226032604260526062607260826092610261126122613261426152616261726182619262026212622262326242625262626272628262926302631263226332634263526362637263826392640264126422643264426452646264726482649265026512652265326542655265626572658265926602661266226632664266526662667266826692670267126722673267426752676267726782679268026812682268326842685268626872688268926902691269226932694269526962697269826992700270127022703270427052706270727082709271027112712271327142715271627172718271927202721272227232724272527262727272827292730273127322733273427352736
  1. From 646dd14af89c2379b160d81fc54cca4d97b36416 Mon Sep 17 00:00:00 2001
  2. From: Phil Elwell <phil@raspberrypi.org>
  3. Date: Mon, 10 Aug 2015 09:49:15 +0100
  4. Subject: [PATCH 176/381] scripts/dtc: Update to upstream version 1.4.1
  5. Includes the new localfixups format.
  6. Signed-off-by: Phil Elwell <phil@raspberrypi.org>
  7. ---
  8. scripts/dtc/checks.c | 105 ++++-
  9. scripts/dtc/dtc-lexer.l | 5 +
  10. scripts/dtc/dtc-lexer.lex.c_shipped | 490 ++++++++++++------------
  11. scripts/dtc/dtc-parser.tab.c_shipped | 722 ++++++++++++++++++-----------------
  12. scripts/dtc/dtc-parser.tab.h_shipped | 46 +--
  13. scripts/dtc/dtc-parser.y | 22 +-
  14. scripts/dtc/dtc.c | 9 +-
  15. scripts/dtc/dtc.h | 40 ++
  16. scripts/dtc/flattree.c | 202 ++++++++++
  17. scripts/dtc/version_gen.h | 2 +-
  18. 10 files changed, 1021 insertions(+), 622 deletions(-)
  19. --- a/scripts/dtc/checks.c
  20. +++ b/scripts/dtc/checks.c
  21. @@ -458,6 +458,8 @@ static void fixup_phandle_references(str
  22. struct node *node, struct property *prop)
  23. {
  24. struct marker *m = prop->val.markers;
  25. + struct fixup *f, **fp;
  26. + struct fixup_entry *fe, **fep;
  27. struct node *refnode;
  28. cell_t phandle;
  29. @@ -466,11 +468,69 @@ static void fixup_phandle_references(str
  30. refnode = get_node_by_ref(dt, m->ref);
  31. if (! refnode) {
  32. - FAIL(c, "Reference to non-existent node or label \"%s\"\n",
  33. - m->ref);
  34. + if (!dt->is_plugin) {
  35. + FAIL(c, "Reference to non-existent node or label \"%s\"\n",
  36. + m->ref);
  37. + continue;
  38. + }
  39. +
  40. + /* allocate fixup entry */
  41. + fe = xmalloc(sizeof(*fe));
  42. +
  43. + fe->node = node;
  44. + fe->prop = prop;
  45. + fe->offset = m->offset;
  46. + fe->next = NULL;
  47. +
  48. + /* search for an already existing fixup */
  49. + for_each_fixup(dt, f)
  50. + if (strcmp(f->ref, m->ref) == 0)
  51. + break;
  52. +
  53. + /* no fixup found, add new */
  54. + if (f == NULL) {
  55. + f = xmalloc(sizeof(*f));
  56. + f->ref = m->ref;
  57. + f->entries = NULL;
  58. + f->next = NULL;
  59. +
  60. + /* add it to the tree */
  61. + fp = &dt->fixups;
  62. + while (*fp)
  63. + fp = &(*fp)->next;
  64. + *fp = f;
  65. + }
  66. +
  67. + /* and now append fixup entry */
  68. + fep = &f->entries;
  69. + while (*fep)
  70. + fep = &(*fep)->next;
  71. + *fep = fe;
  72. +
  73. + /* mark the entry as unresolved */
  74. + *((cell_t *)(prop->val.val + m->offset)) =
  75. + cpu_to_fdt32(0xdeadbeef);
  76. continue;
  77. }
  78. + /* if it's a local reference, we need to record it */
  79. + if (symbol_fixup_support) {
  80. +
  81. + /* allocate a new local fixup entry */
  82. + fe = xmalloc(sizeof(*fe));
  83. +
  84. + fe->node = node;
  85. + fe->prop = prop;
  86. + fe->offset = m->offset;
  87. + fe->next = NULL;
  88. +
  89. + /* append it to the local fixups */
  90. + fep = &dt->local_fixups;
  91. + while (*fep)
  92. + fep = &(*fep)->next;
  93. + *fep = fe;
  94. + }
  95. +
  96. phandle = get_node_phandle(dt, refnode);
  97. *((cell_t *)(prop->val.val + m->offset)) = cpu_to_fdt32(phandle);
  98. }
  99. @@ -652,6 +712,45 @@ static void check_obsolete_chosen_interr
  100. }
  101. TREE_WARNING(obsolete_chosen_interrupt_controller, NULL);
  102. +static void check_auto_label_phandles(struct check *c, struct node *dt,
  103. + struct node *node)
  104. +{
  105. + struct label *l;
  106. + struct symbol *s, **sp;
  107. + int has_label;
  108. +
  109. + if (!symbol_fixup_support)
  110. + return;
  111. +
  112. + has_label = 0;
  113. + for_each_label(node->labels, l) {
  114. + has_label = 1;
  115. + break;
  116. + }
  117. +
  118. + if (!has_label)
  119. + return;
  120. +
  121. + /* force allocation of a phandle for this node */
  122. + (void)get_node_phandle(dt, node);
  123. +
  124. + /* add the symbol */
  125. + for_each_label(node->labels, l) {
  126. +
  127. + s = xmalloc(sizeof(*s));
  128. + s->label = l;
  129. + s->node = node;
  130. + s->next = NULL;
  131. +
  132. + /* add it to the symbols list */
  133. + sp = &dt->symbols;
  134. + while (*sp)
  135. + sp = &((*sp)->next);
  136. + *sp = s;
  137. + }
  138. +}
  139. +NODE_WARNING(auto_label_phandles, NULL);
  140. +
  141. static struct check *check_table[] = {
  142. &duplicate_node_names, &duplicate_property_names,
  143. &node_name_chars, &node_name_format, &property_name_chars,
  144. @@ -670,6 +769,8 @@ static struct check *check_table[] = {
  145. &avoid_default_addr_size,
  146. &obsolete_chosen_interrupt_controller,
  147. + &auto_label_phandles,
  148. +
  149. &always_fail,
  150. };
  151. --- a/scripts/dtc/dtc-lexer.l
  152. +++ b/scripts/dtc/dtc-lexer.l
  153. @@ -113,6 +113,11 @@ static void lexical_error(const char *fm
  154. return DT_V1;
  155. }
  156. +<*>"/plugin/" {
  157. + DPRINT("Keyword: /plugin/\n");
  158. + return DT_PLUGIN;
  159. + }
  160. +
  161. <*>"/memreserve/" {
  162. DPRINT("Keyword: /memreserve/\n");
  163. BEGIN_DEFAULT();
  164. --- a/scripts/dtc/dtc-lexer.lex.c_shipped
  165. +++ b/scripts/dtc/dtc-lexer.lex.c_shipped
  166. @@ -9,7 +9,7 @@
  167. #define FLEX_SCANNER
  168. #define YY_FLEX_MAJOR_VERSION 2
  169. #define YY_FLEX_MINOR_VERSION 5
  170. -#define YY_FLEX_SUBMINOR_VERSION 39
  171. +#define YY_FLEX_SUBMINOR_VERSION 35
  172. #if YY_FLEX_SUBMINOR_VERSION > 0
  173. #define FLEX_BETA
  174. #endif
  175. @@ -162,12 +162,7 @@ typedef unsigned int flex_uint32_t;
  176. typedef struct yy_buffer_state *YY_BUFFER_STATE;
  177. #endif
  178. -#ifndef YY_TYPEDEF_YY_SIZE_T
  179. -#define YY_TYPEDEF_YY_SIZE_T
  180. -typedef size_t yy_size_t;
  181. -#endif
  182. -
  183. -extern yy_size_t yyleng;
  184. +extern int yyleng;
  185. extern FILE *yyin, *yyout;
  186. @@ -176,7 +171,6 @@ extern FILE *yyin, *yyout;
  187. #define EOB_ACT_LAST_MATCH 2
  188. #define YY_LESS_LINENO(n)
  189. - #define YY_LINENO_REWIND_TO(ptr)
  190. /* Return all but the first "n" matched characters back to the input stream. */
  191. #define yyless(n) \
  192. @@ -194,6 +188,11 @@ extern FILE *yyin, *yyout;
  193. #define unput(c) yyunput( c, (yytext_ptr) )
  194. +#ifndef YY_TYPEDEF_YY_SIZE_T
  195. +#define YY_TYPEDEF_YY_SIZE_T
  196. +typedef size_t yy_size_t;
  197. +#endif
  198. +
  199. #ifndef YY_STRUCT_YY_BUFFER_STATE
  200. #define YY_STRUCT_YY_BUFFER_STATE
  201. struct yy_buffer_state
  202. @@ -211,7 +210,7 @@ struct yy_buffer_state
  203. /* Number of characters read into yy_ch_buf, not including EOB
  204. * characters.
  205. */
  206. - yy_size_t yy_n_chars;
  207. + int yy_n_chars;
  208. /* Whether we "own" the buffer - i.e., we know we created it,
  209. * and can realloc() it to grow it, and should free() it to
  210. @@ -281,8 +280,8 @@ static YY_BUFFER_STATE * yy_buffer_stack
  211. /* yy_hold_char holds the character lost when yytext is formed. */
  212. static char yy_hold_char;
  213. -static yy_size_t yy_n_chars; /* number of characters read into yy_ch_buf */
  214. -yy_size_t yyleng;
  215. +static int yy_n_chars; /* number of characters read into yy_ch_buf */
  216. +int yyleng;
  217. /* Points to current character in buffer. */
  218. static char *yy_c_buf_p = (char *) 0;
  219. @@ -310,7 +309,7 @@ static void yy_init_buffer (YY_BUFFER_ST
  220. YY_BUFFER_STATE yy_scan_buffer (char *base,yy_size_t size );
  221. YY_BUFFER_STATE yy_scan_string (yyconst char *yy_str );
  222. -YY_BUFFER_STATE yy_scan_bytes (yyconst char *bytes,yy_size_t len );
  223. +YY_BUFFER_STATE yy_scan_bytes (yyconst char *bytes,int len );
  224. void *yyalloc (yy_size_t );
  225. void *yyrealloc (void *,yy_size_t );
  226. @@ -342,7 +341,7 @@ void yyfree (void * );
  227. /* Begin user sect3 */
  228. -#define yywrap() 1
  229. +#define yywrap(n) 1
  230. #define YY_SKIP_YYWRAP
  231. typedef unsigned char YY_CHAR;
  232. @@ -373,8 +372,8 @@ static void yy_fatal_error (yyconst char
  233. *yy_cp = '\0'; \
  234. (yy_c_buf_p) = yy_cp;
  235. -#define YY_NUM_RULES 30
  236. -#define YY_END_OF_BUFFER 31
  237. +#define YY_NUM_RULES 31
  238. +#define YY_END_OF_BUFFER 32
  239. /* This struct is not used in this scanner,
  240. but its presence is necessary. */
  241. struct yy_trans_info
  242. @@ -382,25 +381,26 @@ struct yy_trans_info
  243. flex_int32_t yy_verify;
  244. flex_int32_t yy_nxt;
  245. };
  246. -static yyconst flex_int16_t yy_accept[159] =
  247. +static yyconst flex_int16_t yy_accept[166] =
  248. { 0,
  249. - 0, 0, 0, 0, 0, 0, 0, 0, 31, 29,
  250. - 18, 18, 29, 29, 29, 29, 29, 29, 29, 29,
  251. - 29, 29, 29, 29, 29, 29, 15, 16, 16, 29,
  252. - 16, 10, 10, 18, 26, 0, 3, 0, 27, 12,
  253. - 0, 0, 11, 0, 0, 0, 0, 0, 0, 0,
  254. - 21, 23, 25, 24, 22, 0, 9, 28, 0, 0,
  255. - 0, 14, 14, 16, 16, 16, 10, 10, 10, 0,
  256. - 12, 0, 11, 0, 0, 0, 20, 0, 0, 0,
  257. - 0, 0, 0, 0, 0, 16, 10, 10, 10, 0,
  258. - 13, 19, 0, 0, 0, 0, 0, 0, 0, 0,
  259. -
  260. - 0, 16, 0, 0, 0, 0, 0, 0, 0, 0,
  261. - 0, 16, 6, 0, 0, 0, 0, 0, 0, 2,
  262. - 0, 0, 0, 0, 0, 0, 0, 0, 4, 17,
  263. - 0, 0, 2, 0, 0, 0, 0, 0, 0, 0,
  264. - 0, 0, 0, 0, 0, 1, 0, 0, 0, 0,
  265. - 5, 8, 0, 0, 0, 0, 7, 0
  266. + 0, 0, 0, 0, 0, 0, 0, 0, 32, 30,
  267. + 19, 19, 30, 30, 30, 30, 30, 30, 30, 30,
  268. + 30, 30, 30, 30, 30, 30, 16, 17, 17, 30,
  269. + 17, 11, 11, 19, 27, 0, 3, 0, 28, 13,
  270. + 0, 0, 12, 0, 0, 0, 0, 0, 0, 0,
  271. + 0, 22, 24, 26, 25, 23, 0, 10, 29, 0,
  272. + 0, 0, 15, 15, 17, 17, 17, 11, 11, 11,
  273. + 0, 13, 0, 12, 0, 0, 0, 21, 0, 0,
  274. + 0, 0, 0, 0, 0, 0, 0, 17, 11, 11,
  275. + 11, 0, 14, 20, 0, 0, 0, 0, 0, 0,
  276. +
  277. + 0, 0, 0, 0, 17, 0, 0, 0, 0, 0,
  278. + 0, 0, 0, 0, 0, 17, 7, 0, 0, 0,
  279. + 0, 0, 0, 0, 2, 0, 0, 0, 0, 0,
  280. + 0, 0, 0, 0, 4, 18, 0, 0, 5, 2,
  281. + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  282. + 0, 0, 1, 0, 0, 0, 0, 6, 9, 0,
  283. + 0, 0, 0, 8, 0
  284. } ;
  285. static yyconst flex_int32_t yy_ec[256] =
  286. @@ -416,9 +416,9 @@ static yyconst flex_int32_t yy_ec[256] =
  287. 22, 22, 22, 22, 24, 22, 22, 25, 22, 22,
  288. 1, 26, 27, 1, 22, 1, 21, 28, 29, 30,
  289. - 31, 21, 22, 22, 32, 22, 22, 33, 34, 35,
  290. - 36, 37, 22, 38, 39, 40, 41, 42, 22, 25,
  291. - 43, 22, 44, 45, 46, 1, 1, 1, 1, 1,
  292. + 31, 21, 32, 22, 33, 22, 22, 34, 35, 36,
  293. + 37, 38, 22, 39, 40, 41, 42, 43, 22, 25,
  294. + 44, 22, 45, 46, 47, 1, 1, 1, 1, 1,
  295. 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
  296. 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
  297. 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
  298. @@ -435,163 +435,165 @@ static yyconst flex_int32_t yy_ec[256] =
  299. 1, 1, 1, 1, 1
  300. } ;
  301. -static yyconst flex_int32_t yy_meta[47] =
  302. +static yyconst flex_int32_t yy_meta[48] =
  303. { 0,
  304. 1, 1, 1, 1, 1, 1, 2, 3, 1, 2,
  305. 2, 2, 4, 5, 5, 5, 6, 1, 1, 1,
  306. 7, 8, 8, 8, 8, 1, 1, 7, 7, 7,
  307. 7, 8, 8, 8, 8, 8, 8, 8, 8, 8,
  308. - 8, 8, 8, 3, 1, 4
  309. + 8, 8, 8, 8, 3, 1, 4
  310. } ;
  311. -static yyconst flex_int16_t yy_base[173] =
  312. +static yyconst flex_int16_t yy_base[180] =
  313. { 0,
  314. - 0, 383, 34, 382, 65, 381, 37, 105, 387, 391,
  315. - 54, 111, 367, 110, 109, 109, 112, 41, 366, 104,
  316. - 367, 338, 124, 117, 0, 144, 391, 0, 121, 0,
  317. - 135, 155, 140, 179, 391, 160, 391, 379, 391, 0,
  318. - 368, 141, 391, 167, 370, 376, 346, 103, 342, 345,
  319. - 391, 391, 391, 391, 391, 358, 391, 391, 175, 342,
  320. - 338, 391, 355, 0, 185, 339, 184, 347, 346, 0,
  321. - 0, 322, 175, 357, 175, 363, 352, 324, 330, 323,
  322. - 332, 326, 201, 324, 329, 322, 391, 333, 181, 309,
  323. - 391, 341, 340, 313, 320, 338, 178, 311, 146, 317,
  324. -
  325. - 314, 315, 335, 331, 303, 300, 309, 299, 308, 188,
  326. - 336, 335, 391, 305, 320, 281, 283, 271, 203, 288,
  327. - 281, 271, 266, 264, 245, 242, 208, 104, 391, 391,
  328. - 244, 218, 204, 219, 206, 224, 201, 212, 204, 229,
  329. - 215, 208, 207, 200, 219, 391, 233, 221, 200, 181,
  330. - 391, 391, 149, 122, 86, 41, 391, 391, 245, 251,
  331. - 259, 263, 267, 273, 280, 284, 292, 300, 304, 310,
  332. - 318, 326
  333. + 0, 393, 35, 392, 66, 391, 38, 107, 397, 401,
  334. + 55, 113, 377, 112, 111, 111, 114, 42, 376, 106,
  335. + 377, 347, 126, 120, 0, 147, 401, 0, 124, 0,
  336. + 137, 158, 170, 163, 401, 153, 401, 389, 401, 0,
  337. + 378, 120, 401, 131, 380, 386, 355, 139, 351, 355,
  338. + 351, 401, 401, 401, 401, 401, 367, 401, 401, 185,
  339. + 350, 346, 401, 364, 0, 185, 347, 189, 356, 355,
  340. + 0, 0, 330, 180, 366, 141, 372, 361, 332, 338,
  341. + 331, 341, 334, 326, 205, 331, 337, 329, 401, 341,
  342. + 167, 316, 401, 349, 348, 320, 328, 346, 180, 318,
  343. +
  344. + 324, 209, 324, 320, 322, 342, 338, 309, 306, 315,
  345. + 305, 315, 312, 192, 342, 341, 401, 293, 306, 282,
  346. + 268, 252, 255, 203, 285, 282, 272, 268, 252, 233,
  347. + 232, 239, 208, 107, 401, 401, 238, 211, 401, 211,
  348. + 212, 208, 228, 203, 215, 207, 233, 222, 212, 211,
  349. + 203, 227, 401, 237, 225, 204, 185, 401, 401, 149,
  350. + 128, 88, 42, 401, 401, 253, 259, 267, 271, 275,
  351. + 281, 288, 292, 300, 308, 312, 318, 326, 334
  352. } ;
  353. -static yyconst flex_int16_t yy_def[173] =
  354. +static yyconst flex_int16_t yy_def[180] =
  355. { 0,
  356. - 158, 1, 1, 3, 158, 5, 1, 1, 158, 158,
  357. - 158, 158, 158, 159, 160, 161, 158, 158, 158, 158,
  358. - 162, 158, 158, 158, 163, 162, 158, 164, 165, 164,
  359. - 164, 158, 158, 158, 158, 159, 158, 159, 158, 166,
  360. - 158, 161, 158, 161, 167, 168, 158, 158, 158, 158,
  361. - 158, 158, 158, 158, 158, 162, 158, 158, 158, 158,
  362. - 158, 158, 162, 164, 165, 164, 158, 158, 158, 169,
  363. - 166, 170, 161, 167, 167, 168, 158, 158, 158, 158,
  364. - 158, 158, 158, 158, 158, 164, 158, 158, 169, 170,
  365. - 158, 158, 158, 158, 158, 158, 158, 158, 158, 158,
  366. -
  367. - 158, 164, 158, 158, 158, 158, 158, 158, 158, 171,
  368. - 158, 164, 158, 158, 158, 158, 158, 158, 171, 158,
  369. - 171, 158, 158, 158, 158, 158, 158, 158, 158, 158,
  370. - 158, 158, 158, 158, 158, 158, 158, 158, 158, 158,
  371. - 172, 158, 158, 158, 172, 158, 172, 158, 158, 158,
  372. - 158, 158, 158, 158, 158, 158, 158, 0, 158, 158,
  373. - 158, 158, 158, 158, 158, 158, 158, 158, 158, 158,
  374. - 158, 158
  375. + 165, 1, 1, 3, 165, 5, 1, 1, 165, 165,
  376. + 165, 165, 165, 166, 167, 168, 165, 165, 165, 165,
  377. + 169, 165, 165, 165, 170, 169, 165, 171, 172, 171,
  378. + 171, 165, 165, 165, 165, 166, 165, 166, 165, 173,
  379. + 165, 168, 165, 168, 174, 175, 165, 165, 165, 165,
  380. + 165, 165, 165, 165, 165, 165, 169, 165, 165, 165,
  381. + 165, 165, 165, 169, 171, 172, 171, 165, 165, 165,
  382. + 176, 173, 177, 168, 174, 174, 175, 165, 165, 165,
  383. + 165, 165, 165, 165, 165, 165, 165, 171, 165, 165,
  384. + 176, 177, 165, 165, 165, 165, 165, 165, 165, 165,
  385. +
  386. + 165, 165, 165, 165, 171, 165, 165, 165, 165, 165,
  387. + 165, 165, 165, 178, 165, 171, 165, 165, 165, 165,
  388. + 165, 165, 165, 178, 165, 178, 165, 165, 165, 165,
  389. + 165, 165, 165, 165, 165, 165, 165, 165, 165, 165,
  390. + 165, 165, 165, 165, 165, 165, 165, 179, 165, 165,
  391. + 165, 179, 165, 179, 165, 165, 165, 165, 165, 165,
  392. + 165, 165, 165, 165, 0, 165, 165, 165, 165, 165,
  393. + 165, 165, 165, 165, 165, 165, 165, 165, 165
  394. } ;
  395. -static yyconst flex_int16_t yy_nxt[438] =
  396. +static yyconst flex_int16_t yy_nxt[449] =
  397. { 0,
  398. 10, 11, 12, 11, 13, 14, 10, 15, 16, 10,
  399. 10, 10, 17, 10, 10, 10, 10, 18, 19, 20,
  400. 21, 21, 21, 21, 21, 10, 10, 21, 21, 21,
  401. 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
  402. - 21, 21, 21, 10, 22, 10, 24, 25, 25, 25,
  403. - 32, 33, 33, 157, 26, 34, 34, 34, 51, 52,
  404. - 27, 26, 26, 26, 26, 10, 11, 12, 11, 13,
  405. - 14, 28, 15, 16, 28, 28, 28, 24, 28, 28,
  406. - 28, 10, 18, 19, 20, 29, 29, 29, 29, 29,
  407. - 30, 10, 29, 29, 29, 29, 29, 29, 29, 29,
  408. -
  409. - 29, 29, 29, 29, 29, 29, 29, 29, 10, 22,
  410. - 10, 23, 34, 34, 34, 37, 39, 43, 32, 33,
  411. - 33, 45, 54, 55, 46, 59, 45, 64, 156, 46,
  412. - 64, 64, 64, 79, 44, 38, 59, 57, 134, 47,
  413. - 135, 48, 80, 49, 47, 50, 48, 99, 61, 43,
  414. - 50, 110, 41, 67, 67, 67, 60, 63, 63, 63,
  415. - 57, 155, 68, 69, 63, 37, 44, 66, 67, 67,
  416. - 67, 63, 63, 63, 63, 73, 59, 68, 69, 70,
  417. - 34, 34, 34, 43, 75, 38, 154, 92, 83, 83,
  418. - 83, 64, 44, 120, 64, 64, 64, 67, 67, 67,
  419. -
  420. - 44, 57, 99, 68, 69, 107, 68, 69, 120, 127,
  421. - 108, 153, 152, 121, 83, 83, 83, 133, 133, 133,
  422. - 146, 133, 133, 133, 146, 140, 140, 140, 121, 141,
  423. - 140, 140, 140, 151, 141, 158, 150, 149, 148, 144,
  424. - 147, 143, 142, 139, 147, 36, 36, 36, 36, 36,
  425. - 36, 36, 36, 40, 138, 137, 136, 40, 40, 42,
  426. - 42, 42, 42, 42, 42, 42, 42, 56, 56, 56,
  427. - 56, 62, 132, 62, 64, 131, 130, 64, 129, 64,
  428. - 64, 65, 128, 158, 65, 65, 65, 65, 71, 127,
  429. - 71, 71, 74, 74, 74, 74, 74, 74, 74, 74,
  430. -
  431. - 76, 76, 76, 76, 76, 76, 76, 76, 89, 126,
  432. - 89, 90, 125, 90, 90, 124, 90, 90, 119, 119,
  433. - 119, 119, 119, 119, 119, 119, 145, 145, 145, 145,
  434. - 145, 145, 145, 145, 123, 122, 59, 59, 118, 117,
  435. - 116, 115, 114, 113, 45, 112, 108, 111, 109, 106,
  436. - 105, 104, 46, 103, 91, 87, 102, 101, 100, 98,
  437. - 97, 96, 95, 94, 93, 77, 75, 91, 88, 87,
  438. - 86, 57, 85, 84, 57, 82, 81, 78, 77, 75,
  439. - 72, 158, 58, 57, 53, 35, 158, 31, 23, 23,
  440. - 9, 158, 158, 158, 158, 158, 158, 158, 158, 158,
  441. -
  442. - 158, 158, 158, 158, 158, 158, 158, 158, 158, 158,
  443. - 158, 158, 158, 158, 158, 158, 158, 158, 158, 158,
  444. - 158, 158, 158, 158, 158, 158, 158, 158, 158, 158,
  445. - 158, 158, 158, 158, 158, 158, 158
  446. + 21, 21, 21, 21, 10, 22, 10, 24, 25, 25,
  447. + 25, 32, 33, 33, 164, 26, 34, 34, 34, 52,
  448. + 53, 27, 26, 26, 26, 26, 10, 11, 12, 11,
  449. + 13, 14, 28, 15, 16, 28, 28, 28, 24, 28,
  450. + 28, 28, 10, 18, 19, 20, 29, 29, 29, 29,
  451. + 29, 30, 10, 29, 29, 29, 29, 29, 29, 29,
  452. +
  453. + 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
  454. + 10, 22, 10, 23, 34, 34, 34, 37, 39, 43,
  455. + 32, 33, 33, 45, 55, 56, 46, 60, 43, 45,
  456. + 65, 163, 46, 65, 65, 65, 44, 38, 60, 74,
  457. + 58, 47, 141, 48, 142, 44, 49, 47, 50, 48,
  458. + 76, 51, 62, 94, 50, 41, 44, 51, 37, 61,
  459. + 64, 64, 64, 58, 34, 34, 34, 64, 162, 80,
  460. + 67, 68, 68, 68, 64, 64, 64, 64, 38, 81,
  461. + 69, 70, 71, 68, 68, 68, 60, 161, 43, 69,
  462. + 70, 65, 69, 70, 65, 65, 65, 125, 85, 85,
  463. +
  464. + 85, 58, 68, 68, 68, 44, 102, 110, 125, 133,
  465. + 102, 69, 70, 111, 114, 160, 159, 126, 85, 85,
  466. + 85, 140, 140, 140, 140, 140, 140, 153, 126, 147,
  467. + 147, 147, 153, 148, 147, 147, 147, 158, 148, 165,
  468. + 157, 156, 155, 151, 150, 149, 146, 154, 145, 144,
  469. + 143, 139, 154, 36, 36, 36, 36, 36, 36, 36,
  470. + 36, 40, 138, 137, 136, 40, 40, 42, 42, 42,
  471. + 42, 42, 42, 42, 42, 57, 57, 57, 57, 63,
  472. + 135, 63, 65, 134, 165, 65, 133, 65, 65, 66,
  473. + 132, 131, 66, 66, 66, 66, 72, 130, 72, 72,
  474. +
  475. + 75, 75, 75, 75, 75, 75, 75, 75, 77, 77,
  476. + 77, 77, 77, 77, 77, 77, 91, 129, 91, 92,
  477. + 128, 92, 92, 127, 92, 92, 124, 124, 124, 124,
  478. + 124, 124, 124, 124, 152, 152, 152, 152, 152, 152,
  479. + 152, 152, 60, 60, 123, 122, 121, 120, 119, 118,
  480. + 117, 45, 116, 111, 115, 113, 112, 109, 108, 107,
  481. + 46, 106, 93, 89, 105, 104, 103, 101, 100, 99,
  482. + 98, 97, 96, 95, 78, 76, 93, 90, 89, 88,
  483. + 58, 87, 86, 58, 84, 83, 82, 79, 78, 76,
  484. + 73, 165, 59, 58, 54, 35, 165, 31, 23, 23,
  485. +
  486. + 9, 165, 165, 165, 165, 165, 165, 165, 165, 165,
  487. + 165, 165, 165, 165, 165, 165, 165, 165, 165, 165,
  488. + 165, 165, 165, 165, 165, 165, 165, 165, 165, 165,
  489. + 165, 165, 165, 165, 165, 165, 165, 165, 165, 165,
  490. + 165, 165, 165, 165, 165, 165, 165, 165
  491. } ;
  492. -static yyconst flex_int16_t yy_chk[438] =
  493. +static yyconst flex_int16_t yy_chk[449] =
  494. { 0,
  495. 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
  496. 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
  497. 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
  498. 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
  499. - 1, 1, 1, 1, 1, 1, 3, 3, 3, 3,
  500. - 7, 7, 7, 156, 3, 11, 11, 11, 18, 18,
  501. - 3, 3, 3, 3, 3, 5, 5, 5, 5, 5,
  502. + 1, 1, 1, 1, 1, 1, 1, 3, 3, 3,
  503. + 3, 7, 7, 7, 163, 3, 11, 11, 11, 18,
  504. + 18, 3, 3, 3, 3, 3, 5, 5, 5, 5,
  505. 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
  506. 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
  507. 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
  508. 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
  509. - 5, 8, 12, 12, 12, 14, 15, 16, 8, 8,
  510. - 8, 17, 20, 20, 17, 23, 24, 29, 155, 24,
  511. - 29, 29, 29, 48, 16, 14, 31, 29, 128, 17,
  512. - 128, 17, 48, 17, 24, 17, 24, 99, 24, 42,
  513. - 24, 99, 15, 33, 33, 33, 23, 26, 26, 26,
  514. - 26, 154, 33, 33, 26, 36, 42, 31, 32, 32,
  515. - 32, 26, 26, 26, 26, 44, 59, 32, 32, 32,
  516. - 34, 34, 34, 73, 75, 36, 153, 75, 59, 59,
  517. - 59, 65, 44, 110, 65, 65, 65, 67, 67, 67,
  518. -
  519. - 73, 65, 83, 89, 89, 97, 67, 67, 119, 127,
  520. - 97, 150, 149, 110, 83, 83, 83, 133, 133, 133,
  521. - 141, 127, 127, 127, 145, 136, 136, 136, 119, 136,
  522. - 140, 140, 140, 148, 140, 147, 144, 143, 142, 139,
  523. - 141, 138, 137, 135, 145, 159, 159, 159, 159, 159,
  524. - 159, 159, 159, 160, 134, 132, 131, 160, 160, 161,
  525. - 161, 161, 161, 161, 161, 161, 161, 162, 162, 162,
  526. - 162, 163, 126, 163, 164, 125, 124, 164, 123, 164,
  527. - 164, 165, 122, 121, 165, 165, 165, 165, 166, 120,
  528. - 166, 166, 167, 167, 167, 167, 167, 167, 167, 167,
  529. -
  530. - 168, 168, 168, 168, 168, 168, 168, 168, 169, 118,
  531. - 169, 170, 117, 170, 170, 116, 170, 170, 171, 171,
  532. - 171, 171, 171, 171, 171, 171, 172, 172, 172, 172,
  533. - 172, 172, 172, 172, 115, 114, 112, 111, 109, 108,
  534. - 107, 106, 105, 104, 103, 102, 101, 100, 98, 96,
  535. - 95, 94, 93, 92, 90, 88, 86, 85, 84, 82,
  536. - 81, 80, 79, 78, 77, 76, 74, 72, 69, 68,
  537. - 66, 63, 61, 60, 56, 50, 49, 47, 46, 45,
  538. + 5, 5, 5, 8, 12, 12, 12, 14, 15, 16,
  539. + 8, 8, 8, 17, 20, 20, 17, 23, 42, 24,
  540. + 29, 162, 24, 29, 29, 29, 16, 14, 31, 44,
  541. + 29, 17, 134, 17, 134, 42, 17, 24, 17, 24,
  542. + 76, 17, 24, 76, 24, 15, 44, 24, 36, 23,
  543. + 26, 26, 26, 26, 34, 34, 34, 26, 161, 48,
  544. + 31, 32, 32, 32, 26, 26, 26, 26, 36, 48,
  545. + 32, 32, 32, 33, 33, 33, 60, 160, 74, 91,
  546. + 91, 66, 33, 33, 66, 66, 66, 114, 60, 60,
  547. +
  548. + 60, 66, 68, 68, 68, 74, 85, 99, 124, 133,
  549. + 102, 68, 68, 99, 102, 157, 156, 114, 85, 85,
  550. + 85, 133, 133, 133, 140, 140, 140, 148, 124, 143,
  551. + 143, 143, 152, 143, 147, 147, 147, 155, 147, 154,
  552. + 151, 150, 149, 146, 145, 144, 142, 148, 141, 138,
  553. + 137, 132, 152, 166, 166, 166, 166, 166, 166, 166,
  554. + 166, 167, 131, 130, 129, 167, 167, 168, 168, 168,
  555. + 168, 168, 168, 168, 168, 169, 169, 169, 169, 170,
  556. + 128, 170, 171, 127, 126, 171, 125, 171, 171, 172,
  557. + 123, 122, 172, 172, 172, 172, 173, 121, 173, 173,
  558. +
  559. + 174, 174, 174, 174, 174, 174, 174, 174, 175, 175,
  560. + 175, 175, 175, 175, 175, 175, 176, 120, 176, 177,
  561. + 119, 177, 177, 118, 177, 177, 178, 178, 178, 178,
  562. + 178, 178, 178, 178, 179, 179, 179, 179, 179, 179,
  563. + 179, 179, 116, 115, 113, 112, 111, 110, 109, 108,
  564. + 107, 106, 105, 104, 103, 101, 100, 98, 97, 96,
  565. + 95, 94, 92, 90, 88, 87, 86, 84, 83, 82,
  566. + 81, 80, 79, 78, 77, 75, 73, 70, 69, 67,
  567. + 64, 62, 61, 57, 51, 50, 49, 47, 46, 45,
  568. 41, 38, 22, 21, 19, 13, 9, 6, 4, 2,
  569. - 158, 158, 158, 158, 158, 158, 158, 158, 158, 158,
  570. - 158, 158, 158, 158, 158, 158, 158, 158, 158, 158,
  571. - 158, 158, 158, 158, 158, 158, 158, 158, 158, 158,
  572. - 158, 158, 158, 158, 158, 158, 158, 158, 158, 158,
  573. - 158, 158, 158, 158, 158, 158, 158
  574. + 165, 165, 165, 165, 165, 165, 165, 165, 165, 165,
  575. + 165, 165, 165, 165, 165, 165, 165, 165, 165, 165,
  576. + 165, 165, 165, 165, 165, 165, 165, 165, 165, 165,
  577. + 165, 165, 165, 165, 165, 165, 165, 165, 165, 165,
  578. + 165, 165, 165, 165, 165, 165, 165, 165
  579. } ;
  580. static yy_state_type yy_last_accepting_state;
  581. @@ -662,7 +664,7 @@ static int dts_version = 1;
  582. static void push_input_file(const char *filename);
  583. static bool pop_input_file(void);
  584. static void lexical_error(const char *fmt, ...);
  585. -#line 666 "dtc-lexer.lex.c"
  586. +#line 668 "dtc-lexer.lex.c"
  587. #define INITIAL 0
  588. #define BYTESTRING 1
  589. @@ -704,7 +706,7 @@ FILE *yyget_out (void );
  590. void yyset_out (FILE * out_str );
  591. -yy_size_t yyget_leng (void );
  592. +int yyget_leng (void );
  593. char *yyget_text (void );
  594. @@ -853,6 +855,10 @@ YY_DECL
  595. register char *yy_cp, *yy_bp;
  596. register int yy_act;
  597. +#line 68 "dtc-lexer.l"
  598. +
  599. +#line 861 "dtc-lexer.lex.c"
  600. +
  601. if ( !(yy_init) )
  602. {
  603. (yy_init) = 1;
  604. @@ -879,11 +885,6 @@ YY_DECL
  605. yy_load_buffer_state( );
  606. }
  607. - {
  608. -#line 68 "dtc-lexer.l"
  609. -
  610. -#line 886 "dtc-lexer.lex.c"
  611. -
  612. while ( 1 ) /* loops until end-of-file is reached */
  613. {
  614. yy_cp = (yy_c_buf_p);
  615. @@ -901,7 +902,7 @@ YY_DECL
  616. yy_match:
  617. do
  618. {
  619. - register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)] ;
  620. + register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)];
  621. if ( yy_accept[yy_current_state] )
  622. {
  623. (yy_last_accepting_state) = yy_current_state;
  624. @@ -910,13 +911,13 @@ yy_match:
  625. while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
  626. {
  627. yy_current_state = (int) yy_def[yy_current_state];
  628. - if ( yy_current_state >= 159 )
  629. + if ( yy_current_state >= 166 )
  630. yy_c = yy_meta[(unsigned int) yy_c];
  631. }
  632. yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
  633. ++yy_cp;
  634. }
  635. - while ( yy_current_state != 158 );
  636. + while ( yy_current_state != 165 );
  637. yy_cp = (yy_last_accepting_cpos);
  638. yy_current_state = (yy_last_accepting_state);
  639. @@ -1007,23 +1008,31 @@ case 5:
  640. YY_RULE_SETUP
  641. #line 116 "dtc-lexer.l"
  642. {
  643. + DPRINT("Keyword: /plugin/\n");
  644. + return DT_PLUGIN;
  645. + }
  646. + YY_BREAK
  647. +case 6:
  648. +YY_RULE_SETUP
  649. +#line 121 "dtc-lexer.l"
  650. +{
  651. DPRINT("Keyword: /memreserve/\n");
  652. BEGIN_DEFAULT();
  653. return DT_MEMRESERVE;
  654. }
  655. YY_BREAK
  656. -case 6:
  657. +case 7:
  658. YY_RULE_SETUP
  659. -#line 122 "dtc-lexer.l"
  660. +#line 127 "dtc-lexer.l"
  661. {
  662. DPRINT("Keyword: /bits/\n");
  663. BEGIN_DEFAULT();
  664. return DT_BITS;
  665. }
  666. YY_BREAK
  667. -case 7:
  668. +case 8:
  669. YY_RULE_SETUP
  670. -#line 128 "dtc-lexer.l"
  671. +#line 133 "dtc-lexer.l"
  672. {
  673. DPRINT("Keyword: /delete-property/\n");
  674. DPRINT("<PROPNODENAME>\n");
  675. @@ -1031,9 +1040,9 @@ YY_RULE_SETUP
  676. return DT_DEL_PROP;
  677. }
  678. YY_BREAK
  679. -case 8:
  680. +case 9:
  681. YY_RULE_SETUP
  682. -#line 135 "dtc-lexer.l"
  683. +#line 140 "dtc-lexer.l"
  684. {
  685. DPRINT("Keyword: /delete-node/\n");
  686. DPRINT("<PROPNODENAME>\n");
  687. @@ -1041,9 +1050,9 @@ YY_RULE_SETUP
  688. return DT_DEL_NODE;
  689. }
  690. YY_BREAK
  691. -case 9:
  692. +case 10:
  693. YY_RULE_SETUP
  694. -#line 142 "dtc-lexer.l"
  695. +#line 147 "dtc-lexer.l"
  696. {
  697. DPRINT("Label: %s\n", yytext);
  698. yylval.labelref = xstrdup(yytext);
  699. @@ -1051,9 +1060,9 @@ YY_RULE_SETUP
  700. return DT_LABEL;
  701. }
  702. YY_BREAK
  703. -case 10:
  704. +case 11:
  705. YY_RULE_SETUP
  706. -#line 149 "dtc-lexer.l"
  707. +#line 154 "dtc-lexer.l"
  708. {
  709. char *e;
  710. DPRINT("Integer Literal: '%s'\n", yytext);
  711. @@ -1073,10 +1082,10 @@ YY_RULE_SETUP
  712. return DT_LITERAL;
  713. }
  714. YY_BREAK
  715. -case 11:
  716. -/* rule 11 can match eol */
  717. +case 12:
  718. +/* rule 12 can match eol */
  719. YY_RULE_SETUP
  720. -#line 168 "dtc-lexer.l"
  721. +#line 173 "dtc-lexer.l"
  722. {
  723. struct data d;
  724. DPRINT("Character literal: %s\n", yytext);
  725. @@ -1098,18 +1107,18 @@ YY_RULE_SETUP
  726. return DT_CHAR_LITERAL;
  727. }
  728. YY_BREAK
  729. -case 12:
  730. +case 13:
  731. YY_RULE_SETUP
  732. -#line 189 "dtc-lexer.l"
  733. +#line 194 "dtc-lexer.l"
  734. { /* label reference */
  735. DPRINT("Ref: %s\n", yytext+1);
  736. yylval.labelref = xstrdup(yytext+1);
  737. return DT_REF;
  738. }
  739. YY_BREAK
  740. -case 13:
  741. +case 14:
  742. YY_RULE_SETUP
  743. -#line 195 "dtc-lexer.l"
  744. +#line 200 "dtc-lexer.l"
  745. { /* new-style path reference */
  746. yytext[yyleng-1] = '\0';
  747. DPRINT("Ref: %s\n", yytext+2);
  748. @@ -1117,27 +1126,27 @@ YY_RULE_SETUP
  749. return DT_REF;
  750. }
  751. YY_BREAK
  752. -case 14:
  753. +case 15:
  754. YY_RULE_SETUP
  755. -#line 202 "dtc-lexer.l"
  756. +#line 207 "dtc-lexer.l"
  757. {
  758. yylval.byte = strtol(yytext, NULL, 16);
  759. DPRINT("Byte: %02x\n", (int)yylval.byte);
  760. return DT_BYTE;
  761. }
  762. YY_BREAK
  763. -case 15:
  764. +case 16:
  765. YY_RULE_SETUP
  766. -#line 208 "dtc-lexer.l"
  767. +#line 213 "dtc-lexer.l"
  768. {
  769. DPRINT("/BYTESTRING\n");
  770. BEGIN_DEFAULT();
  771. return ']';
  772. }
  773. YY_BREAK
  774. -case 16:
  775. +case 17:
  776. YY_RULE_SETUP
  777. -#line 214 "dtc-lexer.l"
  778. +#line 219 "dtc-lexer.l"
  779. {
  780. DPRINT("PropNodeName: %s\n", yytext);
  781. yylval.propnodename = xstrdup((yytext[0] == '\\') ?
  782. @@ -1146,75 +1155,75 @@ YY_RULE_SETUP
  783. return DT_PROPNODENAME;
  784. }
  785. YY_BREAK
  786. -case 17:
  787. +case 18:
  788. YY_RULE_SETUP
  789. -#line 222 "dtc-lexer.l"
  790. +#line 227 "dtc-lexer.l"
  791. {
  792. DPRINT("Binary Include\n");
  793. return DT_INCBIN;
  794. }
  795. YY_BREAK
  796. -case 18:
  797. -/* rule 18 can match eol */
  798. -YY_RULE_SETUP
  799. -#line 227 "dtc-lexer.l"
  800. -/* eat whitespace */
  801. - YY_BREAK
  802. case 19:
  803. /* rule 19 can match eol */
  804. YY_RULE_SETUP
  805. -#line 228 "dtc-lexer.l"
  806. -/* eat C-style comments */
  807. +#line 232 "dtc-lexer.l"
  808. +/* eat whitespace */
  809. YY_BREAK
  810. case 20:
  811. /* rule 20 can match eol */
  812. YY_RULE_SETUP
  813. -#line 229 "dtc-lexer.l"
  814. -/* eat C++-style comments */
  815. +#line 233 "dtc-lexer.l"
  816. +/* eat C-style comments */
  817. YY_BREAK
  818. case 21:
  819. +/* rule 21 can match eol */
  820. YY_RULE_SETUP
  821. -#line 231 "dtc-lexer.l"
  822. -{ return DT_LSHIFT; };
  823. +#line 234 "dtc-lexer.l"
  824. +/* eat C++-style comments */
  825. YY_BREAK
  826. case 22:
  827. YY_RULE_SETUP
  828. -#line 232 "dtc-lexer.l"
  829. -{ return DT_RSHIFT; };
  830. +#line 236 "dtc-lexer.l"
  831. +{ return DT_LSHIFT; };
  832. YY_BREAK
  833. case 23:
  834. YY_RULE_SETUP
  835. -#line 233 "dtc-lexer.l"
  836. -{ return DT_LE; };
  837. +#line 237 "dtc-lexer.l"
  838. +{ return DT_RSHIFT; };
  839. YY_BREAK
  840. case 24:
  841. YY_RULE_SETUP
  842. -#line 234 "dtc-lexer.l"
  843. -{ return DT_GE; };
  844. +#line 238 "dtc-lexer.l"
  845. +{ return DT_LE; };
  846. YY_BREAK
  847. case 25:
  848. YY_RULE_SETUP
  849. -#line 235 "dtc-lexer.l"
  850. -{ return DT_EQ; };
  851. +#line 239 "dtc-lexer.l"
  852. +{ return DT_GE; };
  853. YY_BREAK
  854. case 26:
  855. YY_RULE_SETUP
  856. -#line 236 "dtc-lexer.l"
  857. -{ return DT_NE; };
  858. +#line 240 "dtc-lexer.l"
  859. +{ return DT_EQ; };
  860. YY_BREAK
  861. case 27:
  862. YY_RULE_SETUP
  863. -#line 237 "dtc-lexer.l"
  864. -{ return DT_AND; };
  865. +#line 241 "dtc-lexer.l"
  866. +{ return DT_NE; };
  867. YY_BREAK
  868. case 28:
  869. YY_RULE_SETUP
  870. -#line 238 "dtc-lexer.l"
  871. -{ return DT_OR; };
  872. +#line 242 "dtc-lexer.l"
  873. +{ return DT_AND; };
  874. YY_BREAK
  875. case 29:
  876. YY_RULE_SETUP
  877. -#line 240 "dtc-lexer.l"
  878. +#line 243 "dtc-lexer.l"
  879. +{ return DT_OR; };
  880. + YY_BREAK
  881. +case 30:
  882. +YY_RULE_SETUP
  883. +#line 245 "dtc-lexer.l"
  884. {
  885. DPRINT("Char: %c (\\x%02x)\n", yytext[0],
  886. (unsigned)yytext[0]);
  887. @@ -1230,12 +1239,12 @@ YY_RULE_SETUP
  888. return yytext[0];
  889. }
  890. YY_BREAK
  891. -case 30:
  892. +case 31:
  893. YY_RULE_SETUP
  894. -#line 255 "dtc-lexer.l"
  895. +#line 260 "dtc-lexer.l"
  896. ECHO;
  897. YY_BREAK
  898. -#line 1239 "dtc-lexer.lex.c"
  899. +#line 1248 "dtc-lexer.lex.c"
  900. case YY_END_OF_BUFFER:
  901. {
  902. @@ -1365,7 +1374,6 @@ ECHO;
  903. "fatal flex scanner internal error--no action found" );
  904. } /* end of action switch */
  905. } /* end of scanning one token */
  906. - } /* end of user's declarations */
  907. } /* end of yylex */
  908. /* yy_get_next_buffer - try to read in a new buffer
  909. @@ -1421,21 +1429,21 @@ static int yy_get_next_buffer (void)
  910. else
  911. {
  912. - yy_size_t num_to_read =
  913. + int num_to_read =
  914. YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1;
  915. while ( num_to_read <= 0 )
  916. { /* Not enough room in the buffer - grow it. */
  917. /* just a shorter name for the current buffer */
  918. - YY_BUFFER_STATE b = YY_CURRENT_BUFFER_LVALUE;
  919. + YY_BUFFER_STATE b = YY_CURRENT_BUFFER;
  920. int yy_c_buf_p_offset =
  921. (int) ((yy_c_buf_p) - b->yy_ch_buf);
  922. if ( b->yy_is_our_buffer )
  923. {
  924. - yy_size_t new_size = b->yy_buf_size * 2;
  925. + int new_size = b->yy_buf_size * 2;
  926. if ( new_size <= 0 )
  927. b->yy_buf_size += b->yy_buf_size / 8;
  928. @@ -1466,7 +1474,7 @@ static int yy_get_next_buffer (void)
  929. /* Read in more data. */
  930. YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]),
  931. - (yy_n_chars), num_to_read );
  932. + (yy_n_chars), (size_t) num_to_read );
  933. YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
  934. }
  935. @@ -1528,7 +1536,7 @@ static int yy_get_next_buffer (void)
  936. while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
  937. {
  938. yy_current_state = (int) yy_def[yy_current_state];
  939. - if ( yy_current_state >= 159 )
  940. + if ( yy_current_state >= 166 )
  941. yy_c = yy_meta[(unsigned int) yy_c];
  942. }
  943. yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
  944. @@ -1556,13 +1564,13 @@ static int yy_get_next_buffer (void)
  945. while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
  946. {
  947. yy_current_state = (int) yy_def[yy_current_state];
  948. - if ( yy_current_state >= 159 )
  949. + if ( yy_current_state >= 166 )
  950. yy_c = yy_meta[(unsigned int) yy_c];
  951. }
  952. yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
  953. - yy_is_jam = (yy_current_state == 158);
  954. + yy_is_jam = (yy_current_state == 165);
  955. - return yy_is_jam ? 0 : yy_current_state;
  956. + return yy_is_jam ? 0 : yy_current_state;
  957. }
  958. #ifndef YY_NO_INPUT
  959. @@ -1589,7 +1597,7 @@ static int yy_get_next_buffer (void)
  960. else
  961. { /* need more input */
  962. - yy_size_t offset = (yy_c_buf_p) - (yytext_ptr);
  963. + int offset = (yy_c_buf_p) - (yytext_ptr);
  964. ++(yy_c_buf_p);
  965. switch ( yy_get_next_buffer( ) )
  966. @@ -1863,7 +1871,7 @@ void yypop_buffer_state (void)
  967. */
  968. static void yyensure_buffer_stack (void)
  969. {
  970. - yy_size_t num_to_alloc;
  971. + int num_to_alloc;
  972. if (!(yy_buffer_stack)) {
  973. @@ -1960,12 +1968,12 @@ YY_BUFFER_STATE yy_scan_string (yyconst
  974. *
  975. * @return the newly allocated buffer state object.
  976. */
  977. -YY_BUFFER_STATE yy_scan_bytes (yyconst char * yybytes, yy_size_t _yybytes_len )
  978. +YY_BUFFER_STATE yy_scan_bytes (yyconst char * yybytes, int _yybytes_len )
  979. {
  980. YY_BUFFER_STATE b;
  981. char *buf;
  982. yy_size_t n;
  983. - yy_size_t i;
  984. + int i;
  985. /* Get memory for full buffer, including space for trailing EOB's. */
  986. n = _yybytes_len + 2;
  987. @@ -2047,7 +2055,7 @@ FILE *yyget_out (void)
  988. /** Get the length of the current token.
  989. *
  990. */
  991. -yy_size_t yyget_leng (void)
  992. +int yyget_leng (void)
  993. {
  994. return yyleng;
  995. }
  996. @@ -2195,7 +2203,7 @@ void yyfree (void * ptr )
  997. #define YYTABLES_NAME "yytables"
  998. -#line 254 "dtc-lexer.l"
  999. +#line 260 "dtc-lexer.l"
  1000. --- a/scripts/dtc/dtc-parser.tab.c_shipped
  1001. +++ b/scripts/dtc/dtc-parser.tab.c_shipped
  1002. @@ -65,6 +65,7 @@
  1003. #line 20 "dtc-parser.y" /* yacc.c:339 */
  1004. #include <stdio.h>
  1005. +#include <inttypes.h>
  1006. #include "dtc.h"
  1007. #include "srcpos.h"
  1008. @@ -80,7 +81,7 @@ extern void yyerror(char const *s);
  1009. extern struct boot_info *the_boot_info;
  1010. extern bool treesource_error;
  1011. -#line 84 "dtc-parser.tab.c" /* yacc.c:339 */
  1012. +#line 85 "dtc-parser.tab.c" /* yacc.c:339 */
  1013. # ifndef YY_NULLPTR
  1014. # if defined __cplusplus && 201103L <= __cplusplus
  1015. @@ -116,26 +117,27 @@ extern int yydebug;
  1016. enum yytokentype
  1017. {
  1018. DT_V1 = 258,
  1019. - DT_MEMRESERVE = 259,
  1020. - DT_LSHIFT = 260,
  1021. - DT_RSHIFT = 261,
  1022. - DT_LE = 262,
  1023. - DT_GE = 263,
  1024. - DT_EQ = 264,
  1025. - DT_NE = 265,
  1026. - DT_AND = 266,
  1027. - DT_OR = 267,
  1028. - DT_BITS = 268,
  1029. - DT_DEL_PROP = 269,
  1030. - DT_DEL_NODE = 270,
  1031. - DT_PROPNODENAME = 271,
  1032. - DT_LITERAL = 272,
  1033. - DT_CHAR_LITERAL = 273,
  1034. - DT_BYTE = 274,
  1035. - DT_STRING = 275,
  1036. - DT_LABEL = 276,
  1037. - DT_REF = 277,
  1038. - DT_INCBIN = 278
  1039. + DT_PLUGIN = 259,
  1040. + DT_MEMRESERVE = 260,
  1041. + DT_LSHIFT = 261,
  1042. + DT_RSHIFT = 262,
  1043. + DT_LE = 263,
  1044. + DT_GE = 264,
  1045. + DT_EQ = 265,
  1046. + DT_NE = 266,
  1047. + DT_AND = 267,
  1048. + DT_OR = 268,
  1049. + DT_BITS = 269,
  1050. + DT_DEL_PROP = 270,
  1051. + DT_DEL_NODE = 271,
  1052. + DT_PROPNODENAME = 272,
  1053. + DT_LITERAL = 273,
  1054. + DT_CHAR_LITERAL = 274,
  1055. + DT_BYTE = 275,
  1056. + DT_STRING = 276,
  1057. + DT_LABEL = 277,
  1058. + DT_REF = 278,
  1059. + DT_INCBIN = 279
  1060. };
  1061. #endif
  1062. @@ -144,7 +146,7 @@ extern int yydebug;
  1063. typedef union YYSTYPE YYSTYPE;
  1064. union YYSTYPE
  1065. {
  1066. -#line 38 "dtc-parser.y" /* yacc.c:355 */
  1067. +#line 39 "dtc-parser.y" /* yacc.c:355 */
  1068. char *propnodename;
  1069. char *labelref;
  1070. @@ -162,8 +164,9 @@ union YYSTYPE
  1071. struct node *nodelist;
  1072. struct reserve_info *re;
  1073. uint64_t integer;
  1074. + bool is_plugin;
  1075. -#line 167 "dtc-parser.tab.c" /* yacc.c:355 */
  1076. +#line 170 "dtc-parser.tab.c" /* yacc.c:355 */
  1077. };
  1078. # define YYSTYPE_IS_TRIVIAL 1
  1079. # define YYSTYPE_IS_DECLARED 1
  1080. @@ -192,7 +195,7 @@ int yyparse (void);
  1081. /* Copy the second part of user declarations. */
  1082. -#line 196 "dtc-parser.tab.c" /* yacc.c:358 */
  1083. +#line 199 "dtc-parser.tab.c" /* yacc.c:358 */
  1084. #ifdef short
  1085. # undef short
  1086. @@ -439,18 +442,18 @@ union yyalloc
  1087. #define YYLAST 136
  1088. /* YYNTOKENS -- Number of terminals. */
  1089. -#define YYNTOKENS 47
  1090. +#define YYNTOKENS 48
  1091. /* YYNNTS -- Number of nonterminals. */
  1092. -#define YYNNTS 28
  1093. +#define YYNNTS 29
  1094. /* YYNRULES -- Number of rules. */
  1095. -#define YYNRULES 80
  1096. +#define YYNRULES 82
  1097. /* YYNSTATES -- Number of states. */
  1098. -#define YYNSTATES 144
  1099. +#define YYNSTATES 147
  1100. /* YYTRANSLATE[YYX] -- Symbol number corresponding to YYX as returned
  1101. by yylex, with out-of-bounds checking. */
  1102. #define YYUNDEFTOK 2
  1103. -#define YYMAXUTOK 278
  1104. +#define YYMAXUTOK 279
  1105. #define YYTRANSLATE(YYX) \
  1106. ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
  1107. @@ -462,16 +465,16 @@ static const yytype_uint8 yytranslate[]
  1108. 0, 2, 2, 2, 2, 2, 2, 2, 2, 2,
  1109. 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
  1110. 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
  1111. - 2, 2, 2, 46, 2, 2, 2, 44, 40, 2,
  1112. - 32, 34, 43, 41, 33, 42, 2, 25, 2, 2,
  1113. - 2, 2, 2, 2, 2, 2, 2, 2, 37, 24,
  1114. - 35, 28, 29, 36, 2, 2, 2, 2, 2, 2,
  1115. + 2, 2, 2, 47, 2, 2, 2, 45, 41, 2,
  1116. + 33, 35, 44, 42, 34, 43, 2, 26, 2, 2,
  1117. + 2, 2, 2, 2, 2, 2, 2, 2, 38, 25,
  1118. + 36, 29, 30, 37, 2, 2, 2, 2, 2, 2,
  1119. 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
  1120. 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
  1121. - 2, 30, 2, 31, 39, 2, 2, 2, 2, 2,
  1122. + 2, 31, 2, 32, 40, 2, 2, 2, 2, 2,
  1123. 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
  1124. 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
  1125. - 2, 2, 2, 26, 38, 27, 45, 2, 2, 2,
  1126. + 2, 2, 2, 27, 39, 28, 46, 2, 2, 2,
  1127. 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
  1128. 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
  1129. 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
  1130. @@ -486,22 +489,22 @@ static const yytype_uint8 yytranslate[]
  1131. 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
  1132. 2, 2, 2, 2, 2, 2, 1, 2, 3, 4,
  1133. 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
  1134. - 15, 16, 17, 18, 19, 20, 21, 22, 23
  1135. + 15, 16, 17, 18, 19, 20, 21, 22, 23, 24
  1136. };
  1137. #if YYDEBUG
  1138. /* YYRLINE[YYN] -- Source line where rule number YYN was defined. */
  1139. static const yytype_uint16 yyrline[] =
  1140. {
  1141. - 0, 104, 104, 113, 116, 123, 127, 135, 139, 144,
  1142. - 155, 165, 180, 188, 191, 198, 202, 206, 210, 218,
  1143. - 222, 226, 230, 234, 250, 260, 268, 271, 275, 282,
  1144. - 298, 303, 322, 336, 343, 344, 345, 352, 356, 357,
  1145. - 361, 362, 366, 367, 371, 372, 376, 377, 381, 382,
  1146. - 386, 387, 388, 392, 393, 394, 395, 396, 400, 401,
  1147. - 402, 406, 407, 408, 412, 413, 414, 415, 419, 420,
  1148. - 421, 422, 427, 430, 434, 442, 445, 449, 457, 461,
  1149. - 465
  1150. + 0, 108, 108, 118, 121, 129, 132, 139, 143, 151,
  1151. + 155, 160, 171, 181, 196, 204, 207, 214, 218, 222,
  1152. + 226, 234, 238, 242, 246, 250, 266, 276, 284, 287,
  1153. + 291, 298, 314, 319, 338, 352, 359, 360, 361, 368,
  1154. + 372, 373, 377, 378, 382, 383, 387, 388, 392, 393,
  1155. + 397, 398, 402, 403, 404, 408, 409, 410, 411, 412,
  1156. + 416, 417, 418, 422, 423, 424, 428, 429, 430, 431,
  1157. + 435, 436, 437, 438, 443, 446, 450, 458, 461, 465,
  1158. + 473, 477, 481
  1159. };
  1160. #endif
  1161. @@ -510,19 +513,19 @@ static const yytype_uint16 yyrline[] =
  1162. First, the terminals, then, starting at YYNTOKENS, nonterminals. */
  1163. static const char *const yytname[] =
  1164. {
  1165. - "$end", "error", "$undefined", "DT_V1", "DT_MEMRESERVE", "DT_LSHIFT",
  1166. - "DT_RSHIFT", "DT_LE", "DT_GE", "DT_EQ", "DT_NE", "DT_AND", "DT_OR",
  1167. - "DT_BITS", "DT_DEL_PROP", "DT_DEL_NODE", "DT_PROPNODENAME", "DT_LITERAL",
  1168. - "DT_CHAR_LITERAL", "DT_BYTE", "DT_STRING", "DT_LABEL", "DT_REF",
  1169. - "DT_INCBIN", "';'", "'/'", "'{'", "'}'", "'='", "'>'", "'['", "']'",
  1170. - "'('", "','", "')'", "'<'", "'?'", "':'", "'|'", "'^'", "'&'", "'+'",
  1171. - "'-'", "'*'", "'%'", "'~'", "'!'", "$accept", "sourcefile",
  1172. - "memreserves", "memreserve", "devicetree", "nodedef", "proplist",
  1173. - "propdef", "propdata", "propdataprefix", "arrayprefix", "integer_prim",
  1174. - "integer_expr", "integer_trinary", "integer_or", "integer_and",
  1175. - "integer_bitor", "integer_bitxor", "integer_bitand", "integer_eq",
  1176. - "integer_rela", "integer_shift", "integer_add", "integer_mul",
  1177. - "integer_unary", "bytestring", "subnodes", "subnode", YY_NULLPTR
  1178. + "$end", "error", "$undefined", "DT_V1", "DT_PLUGIN", "DT_MEMRESERVE",
  1179. + "DT_LSHIFT", "DT_RSHIFT", "DT_LE", "DT_GE", "DT_EQ", "DT_NE", "DT_AND",
  1180. + "DT_OR", "DT_BITS", "DT_DEL_PROP", "DT_DEL_NODE", "DT_PROPNODENAME",
  1181. + "DT_LITERAL", "DT_CHAR_LITERAL", "DT_BYTE", "DT_STRING", "DT_LABEL",
  1182. + "DT_REF", "DT_INCBIN", "';'", "'/'", "'{'", "'}'", "'='", "'>'", "'['",
  1183. + "']'", "'('", "','", "')'", "'<'", "'?'", "':'", "'|'", "'^'", "'&'",
  1184. + "'+'", "'-'", "'*'", "'%'", "'~'", "'!'", "$accept", "sourcefile",
  1185. + "plugindecl", "memreserves", "memreserve", "devicetree", "nodedef",
  1186. + "proplist", "propdef", "propdata", "propdataprefix", "arrayprefix",
  1187. + "integer_prim", "integer_expr", "integer_trinary", "integer_or",
  1188. + "integer_and", "integer_bitor", "integer_bitxor", "integer_bitand",
  1189. + "integer_eq", "integer_rela", "integer_shift", "integer_add",
  1190. + "integer_mul", "integer_unary", "bytestring", "subnodes", "subnode", YY_NULLPTR
  1191. };
  1192. #endif
  1193. @@ -533,16 +536,16 @@ static const yytype_uint16 yytoknum[] =
  1194. {
  1195. 0, 256, 257, 258, 259, 260, 261, 262, 263, 264,
  1196. 265, 266, 267, 268, 269, 270, 271, 272, 273, 274,
  1197. - 275, 276, 277, 278, 59, 47, 123, 125, 61, 62,
  1198. - 91, 93, 40, 44, 41, 60, 63, 58, 124, 94,
  1199. - 38, 43, 45, 42, 37, 126, 33
  1200. + 275, 276, 277, 278, 279, 59, 47, 123, 125, 61,
  1201. + 62, 91, 93, 40, 44, 41, 60, 63, 58, 124,
  1202. + 94, 38, 43, 45, 42, 37, 126, 33
  1203. };
  1204. # endif
  1205. -#define YYPACT_NINF -81
  1206. +#define YYPACT_NINF -84
  1207. #define yypact_value_is_default(Yystate) \
  1208. - (!!((Yystate) == (-81)))
  1209. + (!!((Yystate) == (-84)))
  1210. #define YYTABLE_NINF -1
  1211. @@ -553,21 +556,21 @@ static const yytype_uint16 yytoknum[] =
  1212. STATE-NUM. */
  1213. static const yytype_int8 yypact[] =
  1214. {
  1215. - 16, -11, 21, 10, -81, 25, 10, 19, 10, -81,
  1216. - -81, -9, 25, -81, 2, 51, -81, -9, -9, -9,
  1217. - -81, 1, -81, -6, 50, 14, 28, 29, 36, 3,
  1218. - 58, 44, -3, -81, 47, -81, -81, 65, 68, 2,
  1219. - 2, -81, -81, -81, -81, -9, -9, -9, -9, -9,
  1220. - -9, -9, -9, -9, -9, -9, -9, -9, -9, -9,
  1221. - -9, -9, -9, -9, -81, 63, 69, 2, -81, -81,
  1222. - 50, 57, 14, 28, 29, 36, 3, 3, 58, 58,
  1223. - 58, 58, 44, 44, -3, -3, -81, -81, -81, 79,
  1224. - 80, -8, 63, -81, 72, 63, -81, -81, -9, 76,
  1225. - 77, -81, -81, -81, -81, -81, 78, -81, -81, -81,
  1226. - -81, -81, 35, 4, -81, -81, -81, -81, 86, -81,
  1227. - -81, -81, 73, -81, -81, 33, 71, 84, 39, -81,
  1228. - -81, -81, -81, -81, 41, -81, -81, -81, 25, -81,
  1229. - 74, 25, 75, -81
  1230. + 15, -12, 35, 42, -84, 27, 9, -84, 24, 9,
  1231. + 43, 9, -84, -84, -10, 24, -84, 60, 44, -84,
  1232. + -10, -10, -10, -84, 55, -84, -7, 52, 53, 51,
  1233. + 54, 10, 2, 38, 37, -4, -84, 68, -84, -84,
  1234. + 71, 73, 60, 60, -84, -84, -84, -84, -10, -10,
  1235. + -10, -10, -10, -10, -10, -10, -10, -10, -10, -10,
  1236. + -10, -10, -10, -10, -10, -10, -10, -84, 56, 72,
  1237. + 60, -84, -84, 52, 61, 53, 51, 54, 10, 2,
  1238. + 2, 38, 38, 38, 38, 37, 37, -4, -4, -84,
  1239. + -84, -84, 81, 83, 34, 56, -84, 74, 56, -84,
  1240. + -84, -10, 76, 78, -84, -84, -84, -84, -84, 79,
  1241. + -84, -84, -84, -84, -84, -6, 3, -84, -84, -84,
  1242. + -84, 87, -84, -84, -84, 75, -84, -84, 32, 70,
  1243. + 86, 36, -84, -84, -84, -84, -84, 47, -84, -84,
  1244. + -84, 24, -84, 77, 24, 80, -84
  1245. };
  1246. /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM.
  1247. @@ -575,37 +578,37 @@ static const yytype_int8 yypact[] =
  1248. means the default is an error. */
  1249. static const yytype_uint8 yydefact[] =
  1250. {
  1251. - 0, 0, 0, 3, 1, 0, 0, 0, 3, 34,
  1252. - 35, 0, 0, 6, 0, 2, 4, 0, 0, 0,
  1253. - 68, 0, 37, 38, 40, 42, 44, 46, 48, 50,
  1254. - 53, 60, 63, 67, 0, 13, 7, 0, 0, 0,
  1255. - 0, 69, 70, 71, 36, 0, 0, 0, 0, 0,
  1256. + 0, 0, 0, 3, 1, 0, 5, 4, 0, 0,
  1257. + 0, 5, 36, 37, 0, 0, 8, 0, 2, 6,
  1258. + 0, 0, 0, 70, 0, 39, 40, 42, 44, 46,
  1259. + 48, 50, 52, 55, 62, 65, 69, 0, 15, 9,
  1260. + 0, 0, 0, 0, 71, 72, 73, 38, 0, 0,
  1261. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  1262. - 0, 0, 0, 0, 5, 75, 0, 0, 10, 8,
  1263. - 41, 0, 43, 45, 47, 49, 51, 52, 56, 57,
  1264. - 55, 54, 58, 59, 61, 62, 65, 64, 66, 0,
  1265. - 0, 0, 0, 14, 0, 75, 11, 9, 0, 0,
  1266. - 0, 16, 26, 78, 18, 80, 0, 77, 76, 39,
  1267. - 17, 79, 0, 0, 12, 25, 15, 27, 0, 19,
  1268. - 28, 22, 0, 72, 30, 0, 0, 0, 0, 33,
  1269. - 32, 20, 31, 29, 0, 73, 74, 21, 0, 24,
  1270. - 0, 0, 0, 23
  1271. + 0, 0, 0, 0, 0, 0, 0, 7, 77, 0,
  1272. + 0, 12, 10, 43, 0, 45, 47, 49, 51, 53,
  1273. + 54, 58, 59, 57, 56, 60, 61, 63, 64, 67,
  1274. + 66, 68, 0, 0, 0, 0, 16, 0, 77, 13,
  1275. + 11, 0, 0, 0, 18, 28, 80, 20, 82, 0,
  1276. + 79, 78, 41, 19, 81, 0, 0, 14, 27, 17,
  1277. + 29, 0, 21, 30, 24, 0, 74, 32, 0, 0,
  1278. + 0, 0, 35, 34, 22, 33, 31, 0, 75, 76,
  1279. + 23, 0, 26, 0, 0, 0, 25
  1280. };
  1281. /* YYPGOTO[NTERM-NUM]. */
  1282. static const yytype_int8 yypgoto[] =
  1283. {
  1284. - -81, -81, 100, 104, -81, -38, -81, -80, -81, -81,
  1285. - -81, -5, 66, 13, -81, 70, 67, 81, 64, 82,
  1286. - 37, 27, 34, 38, -14, -81, 22, 24
  1287. + -84, -84, -84, 98, 101, -84, -41, -84, -83, -84,
  1288. + -84, -84, -8, 63, 12, -84, 66, 67, 65, 69,
  1289. + 82, 29, 18, 25, 26, -17, -84, 20, 28
  1290. };
  1291. /* YYDEFGOTO[NTERM-NUM]. */
  1292. static const yytype_int16 yydefgoto[] =
  1293. {
  1294. - -1, 2, 7, 8, 15, 36, 65, 93, 112, 113,
  1295. - 125, 20, 21, 22, 23, 24, 25, 26, 27, 28,
  1296. - 29, 30, 31, 32, 33, 128, 94, 95
  1297. + -1, 2, 6, 10, 11, 18, 39, 68, 96, 115,
  1298. + 116, 128, 23, 24, 25, 26, 27, 28, 29, 30,
  1299. + 31, 32, 33, 34, 35, 36, 131, 97, 98
  1300. };
  1301. /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If
  1302. @@ -613,87 +616,87 @@ static const yytype_int16 yydefgoto[] =
  1303. number is the opposite. If YYTABLE_NINF, syntax error. */
  1304. static const yytype_uint8 yytable[] =
  1305. {
  1306. - 12, 68, 69, 41, 42, 43, 45, 34, 9, 10,
  1307. - 53, 54, 104, 3, 5, 107, 101, 118, 35, 1,
  1308. - 102, 4, 61, 11, 119, 120, 121, 122, 35, 97,
  1309. - 46, 6, 55, 17, 123, 44, 18, 19, 56, 124,
  1310. - 62, 63, 9, 10, 14, 51, 52, 86, 87, 88,
  1311. - 9, 10, 48, 103, 129, 130, 115, 11, 135, 116,
  1312. - 136, 47, 131, 57, 58, 11, 37, 49, 117, 50,
  1313. - 137, 64, 38, 39, 138, 139, 40, 89, 90, 91,
  1314. - 78, 79, 80, 81, 92, 59, 60, 66, 76, 77,
  1315. - 67, 82, 83, 96, 98, 99, 100, 84, 85, 106,
  1316. - 110, 111, 114, 126, 134, 127, 133, 141, 16, 143,
  1317. - 13, 109, 71, 74, 72, 70, 105, 108, 0, 0,
  1318. - 132, 0, 0, 0, 0, 0, 0, 0, 0, 73,
  1319. - 0, 0, 75, 140, 0, 0, 142
  1320. + 15, 71, 72, 44, 45, 46, 48, 37, 12, 13,
  1321. + 56, 57, 107, 3, 8, 110, 118, 121, 1, 119,
  1322. + 54, 55, 64, 14, 122, 123, 124, 125, 120, 100,
  1323. + 49, 9, 58, 20, 126, 4, 21, 22, 59, 127,
  1324. + 65, 66, 12, 13, 60, 61, 5, 89, 90, 91,
  1325. + 12, 13, 7, 106, 132, 133, 138, 14, 139, 104,
  1326. + 40, 38, 134, 105, 50, 14, 41, 42, 140, 17,
  1327. + 43, 92, 93, 94, 81, 82, 83, 84, 95, 62,
  1328. + 63, 141, 142, 79, 80, 85, 86, 38, 87, 88,
  1329. + 47, 52, 51, 67, 69, 53, 70, 99, 102, 101,
  1330. + 103, 113, 109, 114, 117, 129, 136, 137, 130, 19,
  1331. + 16, 144, 74, 112, 73, 146, 76, 75, 111, 0,
  1332. + 135, 77, 0, 108, 0, 0, 0, 0, 0, 0,
  1333. + 0, 0, 0, 143, 0, 78, 145
  1334. };
  1335. static const yytype_int16 yycheck[] =
  1336. {
  1337. - 5, 39, 40, 17, 18, 19, 12, 12, 17, 18,
  1338. - 7, 8, 92, 24, 4, 95, 24, 13, 26, 3,
  1339. - 28, 0, 25, 32, 20, 21, 22, 23, 26, 67,
  1340. - 36, 21, 29, 42, 30, 34, 45, 46, 35, 35,
  1341. - 43, 44, 17, 18, 25, 9, 10, 61, 62, 63,
  1342. - 17, 18, 38, 91, 21, 22, 21, 32, 19, 24,
  1343. - 21, 11, 29, 5, 6, 32, 15, 39, 33, 40,
  1344. - 31, 24, 21, 22, 33, 34, 25, 14, 15, 16,
  1345. - 53, 54, 55, 56, 21, 41, 42, 22, 51, 52,
  1346. - 22, 57, 58, 24, 37, 16, 16, 59, 60, 27,
  1347. - 24, 24, 24, 17, 20, 32, 35, 33, 8, 34,
  1348. - 6, 98, 46, 49, 47, 45, 92, 95, -1, -1,
  1349. - 125, -1, -1, -1, -1, -1, -1, -1, -1, 48,
  1350. - -1, -1, 50, 138, -1, -1, 141
  1351. + 8, 42, 43, 20, 21, 22, 13, 15, 18, 19,
  1352. + 8, 9, 95, 25, 5, 98, 22, 14, 3, 25,
  1353. + 10, 11, 26, 33, 21, 22, 23, 24, 34, 70,
  1354. + 37, 22, 30, 43, 31, 0, 46, 47, 36, 36,
  1355. + 44, 45, 18, 19, 6, 7, 4, 64, 65, 66,
  1356. + 18, 19, 25, 94, 22, 23, 20, 33, 22, 25,
  1357. + 16, 27, 30, 29, 12, 33, 22, 23, 32, 26,
  1358. + 26, 15, 16, 17, 56, 57, 58, 59, 22, 42,
  1359. + 43, 34, 35, 54, 55, 60, 61, 27, 62, 63,
  1360. + 35, 40, 39, 25, 23, 41, 23, 25, 17, 38,
  1361. + 17, 25, 28, 25, 25, 18, 36, 21, 33, 11,
  1362. + 9, 34, 49, 101, 48, 35, 51, 50, 98, -1,
  1363. + 128, 52, -1, 95, -1, -1, -1, -1, -1, -1,
  1364. + -1, -1, -1, 141, -1, 53, 144
  1365. };
  1366. /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
  1367. symbol of state STATE-NUM. */
  1368. static const yytype_uint8 yystos[] =
  1369. {
  1370. - 0, 3, 48, 24, 0, 4, 21, 49, 50, 17,
  1371. - 18, 32, 58, 50, 25, 51, 49, 42, 45, 46,
  1372. - 58, 59, 60, 61, 62, 63, 64, 65, 66, 67,
  1373. - 68, 69, 70, 71, 58, 26, 52, 15, 21, 22,
  1374. - 25, 71, 71, 71, 34, 12, 36, 11, 38, 39,
  1375. - 40, 9, 10, 7, 8, 29, 35, 5, 6, 41,
  1376. - 42, 25, 43, 44, 24, 53, 22, 22, 52, 52,
  1377. - 62, 59, 63, 64, 65, 66, 67, 67, 68, 68,
  1378. - 68, 68, 69, 69, 70, 70, 71, 71, 71, 14,
  1379. - 15, 16, 21, 54, 73, 74, 24, 52, 37, 16,
  1380. - 16, 24, 28, 52, 54, 74, 27, 54, 73, 60,
  1381. - 24, 24, 55, 56, 24, 21, 24, 33, 13, 20,
  1382. - 21, 22, 23, 30, 35, 57, 17, 32, 72, 21,
  1383. - 22, 29, 58, 35, 20, 19, 21, 31, 33, 34,
  1384. - 58, 33, 58, 34
  1385. + 0, 3, 49, 25, 0, 4, 50, 25, 5, 22,
  1386. + 51, 52, 18, 19, 33, 60, 52, 26, 53, 51,
  1387. + 43, 46, 47, 60, 61, 62, 63, 64, 65, 66,
  1388. + 67, 68, 69, 70, 71, 72, 73, 60, 27, 54,
  1389. + 16, 22, 23, 26, 73, 73, 73, 35, 13, 37,
  1390. + 12, 39, 40, 41, 10, 11, 8, 9, 30, 36,
  1391. + 6, 7, 42, 43, 26, 44, 45, 25, 55, 23,
  1392. + 23, 54, 54, 64, 61, 65, 66, 67, 68, 69,
  1393. + 69, 70, 70, 70, 70, 71, 71, 72, 72, 73,
  1394. + 73, 73, 15, 16, 17, 22, 56, 75, 76, 25,
  1395. + 54, 38, 17, 17, 25, 29, 54, 56, 76, 28,
  1396. + 56, 75, 62, 25, 25, 57, 58, 25, 22, 25,
  1397. + 34, 14, 21, 22, 23, 24, 31, 36, 59, 18,
  1398. + 33, 74, 22, 23, 30, 60, 36, 21, 20, 22,
  1399. + 32, 34, 35, 60, 34, 60, 35
  1400. };
  1401. /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */
  1402. static const yytype_uint8 yyr1[] =
  1403. {
  1404. - 0, 47, 48, 49, 49, 50, 50, 51, 51, 51,
  1405. - 51, 51, 52, 53, 53, 54, 54, 54, 54, 55,
  1406. - 55, 55, 55, 55, 55, 55, 56, 56, 56, 57,
  1407. - 57, 57, 57, 57, 58, 58, 58, 59, 60, 60,
  1408. - 61, 61, 62, 62, 63, 63, 64, 64, 65, 65,
  1409. - 66, 66, 66, 67, 67, 67, 67, 67, 68, 68,
  1410. - 68, 69, 69, 69, 70, 70, 70, 70, 71, 71,
  1411. - 71, 71, 72, 72, 72, 73, 73, 73, 74, 74,
  1412. - 74
  1413. + 0, 48, 49, 50, 50, 51, 51, 52, 52, 53,
  1414. + 53, 53, 53, 53, 54, 55, 55, 56, 56, 56,
  1415. + 56, 57, 57, 57, 57, 57, 57, 57, 58, 58,
  1416. + 58, 59, 59, 59, 59, 59, 60, 60, 60, 61,
  1417. + 62, 62, 63, 63, 64, 64, 65, 65, 66, 66,
  1418. + 67, 67, 68, 68, 68, 69, 69, 69, 69, 69,
  1419. + 70, 70, 70, 71, 71, 71, 72, 72, 72, 72,
  1420. + 73, 73, 73, 73, 74, 74, 74, 75, 75, 75,
  1421. + 76, 76, 76
  1422. };
  1423. /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN. */
  1424. static const yytype_uint8 yyr2[] =
  1425. {
  1426. - 0, 2, 4, 0, 2, 4, 2, 2, 3, 4,
  1427. - 3, 4, 5, 0, 2, 4, 2, 3, 2, 2,
  1428. - 3, 4, 2, 9, 5, 2, 0, 2, 2, 3,
  1429. - 1, 2, 2, 2, 1, 1, 3, 1, 1, 5,
  1430. - 1, 3, 1, 3, 1, 3, 1, 3, 1, 3,
  1431. - 1, 3, 3, 1, 3, 3, 3, 3, 3, 3,
  1432. - 1, 3, 3, 1, 3, 3, 3, 1, 1, 2,
  1433. - 2, 2, 0, 2, 2, 0, 2, 2, 2, 3,
  1434. - 2
  1435. + 0, 2, 5, 0, 2, 0, 2, 4, 2, 2,
  1436. + 3, 4, 3, 4, 5, 0, 2, 4, 2, 3,
  1437. + 2, 2, 3, 4, 2, 9, 5, 2, 0, 2,
  1438. + 2, 3, 1, 2, 2, 2, 1, 1, 3, 1,
  1439. + 1, 5, 1, 3, 1, 3, 1, 3, 1, 3,
  1440. + 1, 3, 1, 3, 3, 1, 3, 3, 3, 3,
  1441. + 3, 3, 1, 3, 3, 1, 3, 3, 3, 1,
  1442. + 1, 2, 2, 2, 0, 2, 2, 0, 2, 2,
  1443. + 2, 3, 2
  1444. };
  1445. @@ -1463,65 +1466,82 @@ yyreduce:
  1446. switch (yyn)
  1447. {
  1448. case 2:
  1449. -#line 105 "dtc-parser.y" /* yacc.c:1646 */
  1450. +#line 109 "dtc-parser.y" /* yacc.c:1646 */
  1451. {
  1452. + (yyvsp[0].node)->is_plugin = (yyvsp[-2].is_plugin);
  1453. the_boot_info = build_boot_info((yyvsp[-1].re), (yyvsp[0].node),
  1454. guess_boot_cpuid((yyvsp[0].node)));
  1455. }
  1456. -#line 1472 "dtc-parser.tab.c" /* yacc.c:1646 */
  1457. +#line 1476 "dtc-parser.tab.c" /* yacc.c:1646 */
  1458. break;
  1459. case 3:
  1460. -#line 113 "dtc-parser.y" /* yacc.c:1646 */
  1461. +#line 118 "dtc-parser.y" /* yacc.c:1646 */
  1462. {
  1463. - (yyval.re) = NULL;
  1464. + (yyval.is_plugin) = false;
  1465. }
  1466. -#line 1480 "dtc-parser.tab.c" /* yacc.c:1646 */
  1467. +#line 1484 "dtc-parser.tab.c" /* yacc.c:1646 */
  1468. break;
  1469. case 4:
  1470. -#line 117 "dtc-parser.y" /* yacc.c:1646 */
  1471. +#line 122 "dtc-parser.y" /* yacc.c:1646 */
  1472. {
  1473. - (yyval.re) = chain_reserve_entry((yyvsp[-1].re), (yyvsp[0].re));
  1474. + (yyval.is_plugin) = true;
  1475. }
  1476. -#line 1488 "dtc-parser.tab.c" /* yacc.c:1646 */
  1477. +#line 1492 "dtc-parser.tab.c" /* yacc.c:1646 */
  1478. break;
  1479. case 5:
  1480. -#line 124 "dtc-parser.y" /* yacc.c:1646 */
  1481. +#line 129 "dtc-parser.y" /* yacc.c:1646 */
  1482. {
  1483. - (yyval.re) = build_reserve_entry((yyvsp[-2].integer), (yyvsp[-1].integer));
  1484. + (yyval.re) = NULL;
  1485. }
  1486. -#line 1496 "dtc-parser.tab.c" /* yacc.c:1646 */
  1487. +#line 1500 "dtc-parser.tab.c" /* yacc.c:1646 */
  1488. break;
  1489. case 6:
  1490. -#line 128 "dtc-parser.y" /* yacc.c:1646 */
  1491. +#line 133 "dtc-parser.y" /* yacc.c:1646 */
  1492. + {
  1493. + (yyval.re) = chain_reserve_entry((yyvsp[-1].re), (yyvsp[0].re));
  1494. + }
  1495. +#line 1508 "dtc-parser.tab.c" /* yacc.c:1646 */
  1496. + break;
  1497. +
  1498. + case 7:
  1499. +#line 140 "dtc-parser.y" /* yacc.c:1646 */
  1500. + {
  1501. + (yyval.re) = build_reserve_entry((yyvsp[-2].integer), (yyvsp[-1].integer));
  1502. + }
  1503. +#line 1516 "dtc-parser.tab.c" /* yacc.c:1646 */
  1504. + break;
  1505. +
  1506. + case 8:
  1507. +#line 144 "dtc-parser.y" /* yacc.c:1646 */
  1508. {
  1509. add_label(&(yyvsp[0].re)->labels, (yyvsp[-1].labelref));
  1510. (yyval.re) = (yyvsp[0].re);
  1511. }
  1512. -#line 1505 "dtc-parser.tab.c" /* yacc.c:1646 */
  1513. +#line 1525 "dtc-parser.tab.c" /* yacc.c:1646 */
  1514. break;
  1515. - case 7:
  1516. -#line 136 "dtc-parser.y" /* yacc.c:1646 */
  1517. + case 9:
  1518. +#line 152 "dtc-parser.y" /* yacc.c:1646 */
  1519. {
  1520. (yyval.node) = name_node((yyvsp[0].node), "");
  1521. }
  1522. -#line 1513 "dtc-parser.tab.c" /* yacc.c:1646 */
  1523. +#line 1533 "dtc-parser.tab.c" /* yacc.c:1646 */
  1524. break;
  1525. - case 8:
  1526. -#line 140 "dtc-parser.y" /* yacc.c:1646 */
  1527. + case 10:
  1528. +#line 156 "dtc-parser.y" /* yacc.c:1646 */
  1529. {
  1530. (yyval.node) = merge_nodes((yyvsp[-2].node), (yyvsp[0].node));
  1531. }
  1532. -#line 1521 "dtc-parser.tab.c" /* yacc.c:1646 */
  1533. +#line 1541 "dtc-parser.tab.c" /* yacc.c:1646 */
  1534. break;
  1535. - case 9:
  1536. -#line 145 "dtc-parser.y" /* yacc.c:1646 */
  1537. + case 11:
  1538. +#line 161 "dtc-parser.y" /* yacc.c:1646 */
  1539. {
  1540. struct node *target = get_node_by_ref((yyvsp[-3].node), (yyvsp[-1].labelref));
  1541. @@ -1532,11 +1552,11 @@ yyreduce:
  1542. ERROR(&(yylsp[-1]), "Label or path %s not found", (yyvsp[-1].labelref));
  1543. (yyval.node) = (yyvsp[-3].node);
  1544. }
  1545. -#line 1536 "dtc-parser.tab.c" /* yacc.c:1646 */
  1546. +#line 1556 "dtc-parser.tab.c" /* yacc.c:1646 */
  1547. break;
  1548. - case 10:
  1549. -#line 156 "dtc-parser.y" /* yacc.c:1646 */
  1550. + case 12:
  1551. +#line 172 "dtc-parser.y" /* yacc.c:1646 */
  1552. {
  1553. struct node *target = get_node_by_ref((yyvsp[-2].node), (yyvsp[-1].labelref));
  1554. @@ -1546,11 +1566,11 @@ yyreduce:
  1555. ERROR(&(yylsp[-1]), "Label or path %s not found", (yyvsp[-1].labelref));
  1556. (yyval.node) = (yyvsp[-2].node);
  1557. }
  1558. -#line 1550 "dtc-parser.tab.c" /* yacc.c:1646 */
  1559. +#line 1570 "dtc-parser.tab.c" /* yacc.c:1646 */
  1560. break;
  1561. - case 11:
  1562. -#line 166 "dtc-parser.y" /* yacc.c:1646 */
  1563. + case 13:
  1564. +#line 182 "dtc-parser.y" /* yacc.c:1646 */
  1565. {
  1566. struct node *target = get_node_by_ref((yyvsp[-3].node), (yyvsp[-1].labelref));
  1567. @@ -1562,100 +1582,100 @@ yyreduce:
  1568. (yyval.node) = (yyvsp[-3].node);
  1569. }
  1570. -#line 1566 "dtc-parser.tab.c" /* yacc.c:1646 */
  1571. +#line 1586 "dtc-parser.tab.c" /* yacc.c:1646 */
  1572. break;
  1573. - case 12:
  1574. -#line 181 "dtc-parser.y" /* yacc.c:1646 */
  1575. + case 14:
  1576. +#line 197 "dtc-parser.y" /* yacc.c:1646 */
  1577. {
  1578. (yyval.node) = build_node((yyvsp[-3].proplist), (yyvsp[-2].nodelist));
  1579. }
  1580. -#line 1574 "dtc-parser.tab.c" /* yacc.c:1646 */
  1581. +#line 1594 "dtc-parser.tab.c" /* yacc.c:1646 */
  1582. break;
  1583. - case 13:
  1584. -#line 188 "dtc-parser.y" /* yacc.c:1646 */
  1585. + case 15:
  1586. +#line 204 "dtc-parser.y" /* yacc.c:1646 */
  1587. {
  1588. (yyval.proplist) = NULL;
  1589. }
  1590. -#line 1582 "dtc-parser.tab.c" /* yacc.c:1646 */
  1591. +#line 1602 "dtc-parser.tab.c" /* yacc.c:1646 */
  1592. break;
  1593. - case 14:
  1594. -#line 192 "dtc-parser.y" /* yacc.c:1646 */
  1595. + case 16:
  1596. +#line 208 "dtc-parser.y" /* yacc.c:1646 */
  1597. {
  1598. (yyval.proplist) = chain_property((yyvsp[0].prop), (yyvsp[-1].proplist));
  1599. }
  1600. -#line 1590 "dtc-parser.tab.c" /* yacc.c:1646 */
  1601. +#line 1610 "dtc-parser.tab.c" /* yacc.c:1646 */
  1602. break;
  1603. - case 15:
  1604. -#line 199 "dtc-parser.y" /* yacc.c:1646 */
  1605. + case 17:
  1606. +#line 215 "dtc-parser.y" /* yacc.c:1646 */
  1607. {
  1608. (yyval.prop) = build_property((yyvsp[-3].propnodename), (yyvsp[-1].data));
  1609. }
  1610. -#line 1598 "dtc-parser.tab.c" /* yacc.c:1646 */
  1611. +#line 1618 "dtc-parser.tab.c" /* yacc.c:1646 */
  1612. break;
  1613. - case 16:
  1614. -#line 203 "dtc-parser.y" /* yacc.c:1646 */
  1615. + case 18:
  1616. +#line 219 "dtc-parser.y" /* yacc.c:1646 */
  1617. {
  1618. (yyval.prop) = build_property((yyvsp[-1].propnodename), empty_data);
  1619. }
  1620. -#line 1606 "dtc-parser.tab.c" /* yacc.c:1646 */
  1621. +#line 1626 "dtc-parser.tab.c" /* yacc.c:1646 */
  1622. break;
  1623. - case 17:
  1624. -#line 207 "dtc-parser.y" /* yacc.c:1646 */
  1625. + case 19:
  1626. +#line 223 "dtc-parser.y" /* yacc.c:1646 */
  1627. {
  1628. (yyval.prop) = build_property_delete((yyvsp[-1].propnodename));
  1629. }
  1630. -#line 1614 "dtc-parser.tab.c" /* yacc.c:1646 */
  1631. +#line 1634 "dtc-parser.tab.c" /* yacc.c:1646 */
  1632. break;
  1633. - case 18:
  1634. -#line 211 "dtc-parser.y" /* yacc.c:1646 */
  1635. + case 20:
  1636. +#line 227 "dtc-parser.y" /* yacc.c:1646 */
  1637. {
  1638. add_label(&(yyvsp[0].prop)->labels, (yyvsp[-1].labelref));
  1639. (yyval.prop) = (yyvsp[0].prop);
  1640. }
  1641. -#line 1623 "dtc-parser.tab.c" /* yacc.c:1646 */
  1642. +#line 1643 "dtc-parser.tab.c" /* yacc.c:1646 */
  1643. break;
  1644. - case 19:
  1645. -#line 219 "dtc-parser.y" /* yacc.c:1646 */
  1646. + case 21:
  1647. +#line 235 "dtc-parser.y" /* yacc.c:1646 */
  1648. {
  1649. (yyval.data) = data_merge((yyvsp[-1].data), (yyvsp[0].data));
  1650. }
  1651. -#line 1631 "dtc-parser.tab.c" /* yacc.c:1646 */
  1652. +#line 1651 "dtc-parser.tab.c" /* yacc.c:1646 */
  1653. break;
  1654. - case 20:
  1655. -#line 223 "dtc-parser.y" /* yacc.c:1646 */
  1656. + case 22:
  1657. +#line 239 "dtc-parser.y" /* yacc.c:1646 */
  1658. {
  1659. (yyval.data) = data_merge((yyvsp[-2].data), (yyvsp[-1].array).data);
  1660. }
  1661. -#line 1639 "dtc-parser.tab.c" /* yacc.c:1646 */
  1662. +#line 1659 "dtc-parser.tab.c" /* yacc.c:1646 */
  1663. break;
  1664. - case 21:
  1665. -#line 227 "dtc-parser.y" /* yacc.c:1646 */
  1666. + case 23:
  1667. +#line 243 "dtc-parser.y" /* yacc.c:1646 */
  1668. {
  1669. (yyval.data) = data_merge((yyvsp[-3].data), (yyvsp[-1].data));
  1670. }
  1671. -#line 1647 "dtc-parser.tab.c" /* yacc.c:1646 */
  1672. +#line 1667 "dtc-parser.tab.c" /* yacc.c:1646 */
  1673. break;
  1674. - case 22:
  1675. -#line 231 "dtc-parser.y" /* yacc.c:1646 */
  1676. + case 24:
  1677. +#line 247 "dtc-parser.y" /* yacc.c:1646 */
  1678. {
  1679. (yyval.data) = data_add_marker((yyvsp[-1].data), REF_PATH, (yyvsp[0].labelref));
  1680. }
  1681. -#line 1655 "dtc-parser.tab.c" /* yacc.c:1646 */
  1682. +#line 1675 "dtc-parser.tab.c" /* yacc.c:1646 */
  1683. break;
  1684. - case 23:
  1685. -#line 235 "dtc-parser.y" /* yacc.c:1646 */
  1686. + case 25:
  1687. +#line 251 "dtc-parser.y" /* yacc.c:1646 */
  1688. {
  1689. FILE *f = srcfile_relative_open((yyvsp[-5].data).val, NULL);
  1690. struct data d;
  1691. @@ -1671,11 +1691,11 @@ yyreduce:
  1692. (yyval.data) = data_merge((yyvsp[-8].data), d);
  1693. fclose(f);
  1694. }
  1695. -#line 1675 "dtc-parser.tab.c" /* yacc.c:1646 */
  1696. +#line 1695 "dtc-parser.tab.c" /* yacc.c:1646 */
  1697. break;
  1698. - case 24:
  1699. -#line 251 "dtc-parser.y" /* yacc.c:1646 */
  1700. + case 26:
  1701. +#line 267 "dtc-parser.y" /* yacc.c:1646 */
  1702. {
  1703. FILE *f = srcfile_relative_open((yyvsp[-1].data).val, NULL);
  1704. struct data d = empty_data;
  1705. @@ -1685,43 +1705,43 @@ yyreduce:
  1706. (yyval.data) = data_merge((yyvsp[-4].data), d);
  1707. fclose(f);
  1708. }
  1709. -#line 1689 "dtc-parser.tab.c" /* yacc.c:1646 */
  1710. +#line 1709 "dtc-parser.tab.c" /* yacc.c:1646 */
  1711. break;
  1712. - case 25:
  1713. -#line 261 "dtc-parser.y" /* yacc.c:1646 */
  1714. + case 27:
  1715. +#line 277 "dtc-parser.y" /* yacc.c:1646 */
  1716. {
  1717. (yyval.data) = data_add_marker((yyvsp[-1].data), LABEL, (yyvsp[0].labelref));
  1718. }
  1719. -#line 1697 "dtc-parser.tab.c" /* yacc.c:1646 */
  1720. +#line 1717 "dtc-parser.tab.c" /* yacc.c:1646 */
  1721. break;
  1722. - case 26:
  1723. -#line 268 "dtc-parser.y" /* yacc.c:1646 */
  1724. + case 28:
  1725. +#line 284 "dtc-parser.y" /* yacc.c:1646 */
  1726. {
  1727. (yyval.data) = empty_data;
  1728. }
  1729. -#line 1705 "dtc-parser.tab.c" /* yacc.c:1646 */
  1730. +#line 1725 "dtc-parser.tab.c" /* yacc.c:1646 */
  1731. break;
  1732. - case 27:
  1733. -#line 272 "dtc-parser.y" /* yacc.c:1646 */
  1734. + case 29:
  1735. +#line 288 "dtc-parser.y" /* yacc.c:1646 */
  1736. {
  1737. (yyval.data) = (yyvsp[-1].data);
  1738. }
  1739. -#line 1713 "dtc-parser.tab.c" /* yacc.c:1646 */
  1740. +#line 1733 "dtc-parser.tab.c" /* yacc.c:1646 */
  1741. break;
  1742. - case 28:
  1743. -#line 276 "dtc-parser.y" /* yacc.c:1646 */
  1744. + case 30:
  1745. +#line 292 "dtc-parser.y" /* yacc.c:1646 */
  1746. {
  1747. (yyval.data) = data_add_marker((yyvsp[-1].data), LABEL, (yyvsp[0].labelref));
  1748. }
  1749. -#line 1721 "dtc-parser.tab.c" /* yacc.c:1646 */
  1750. +#line 1741 "dtc-parser.tab.c" /* yacc.c:1646 */
  1751. break;
  1752. - case 29:
  1753. -#line 283 "dtc-parser.y" /* yacc.c:1646 */
  1754. + case 31:
  1755. +#line 299 "dtc-parser.y" /* yacc.c:1646 */
  1756. {
  1757. unsigned long long bits;
  1758. @@ -1737,20 +1757,20 @@ yyreduce:
  1759. (yyval.array).data = empty_data;
  1760. (yyval.array).bits = bits;
  1761. }
  1762. -#line 1741 "dtc-parser.tab.c" /* yacc.c:1646 */
  1763. +#line 1761 "dtc-parser.tab.c" /* yacc.c:1646 */
  1764. break;
  1765. - case 30:
  1766. -#line 299 "dtc-parser.y" /* yacc.c:1646 */
  1767. + case 32:
  1768. +#line 315 "dtc-parser.y" /* yacc.c:1646 */
  1769. {
  1770. (yyval.array).data = empty_data;
  1771. (yyval.array).bits = 32;
  1772. }
  1773. -#line 1750 "dtc-parser.tab.c" /* yacc.c:1646 */
  1774. +#line 1770 "dtc-parser.tab.c" /* yacc.c:1646 */
  1775. break;
  1776. - case 31:
  1777. -#line 304 "dtc-parser.y" /* yacc.c:1646 */
  1778. + case 33:
  1779. +#line 320 "dtc-parser.y" /* yacc.c:1646 */
  1780. {
  1781. if ((yyvsp[-1].array).bits < 64) {
  1782. uint64_t mask = (1ULL << (yyvsp[-1].array).bits) - 1;
  1783. @@ -1769,11 +1789,11 @@ yyreduce:
  1784. (yyval.array).data = data_append_integer((yyvsp[-1].array).data, (yyvsp[0].integer), (yyvsp[-1].array).bits);
  1785. }
  1786. -#line 1773 "dtc-parser.tab.c" /* yacc.c:1646 */
  1787. +#line 1793 "dtc-parser.tab.c" /* yacc.c:1646 */
  1788. break;
  1789. - case 32:
  1790. -#line 323 "dtc-parser.y" /* yacc.c:1646 */
  1791. + case 34:
  1792. +#line 339 "dtc-parser.y" /* yacc.c:1646 */
  1793. {
  1794. uint64_t val = ~0ULL >> (64 - (yyvsp[-1].array).bits);
  1795. @@ -1787,233 +1807,233 @@ yyreduce:
  1796. (yyval.array).data = data_append_integer((yyvsp[-1].array).data, val, (yyvsp[-1].array).bits);
  1797. }
  1798. -#line 1791 "dtc-parser.tab.c" /* yacc.c:1646 */
  1799. +#line 1811 "dtc-parser.tab.c" /* yacc.c:1646 */
  1800. break;
  1801. - case 33:
  1802. -#line 337 "dtc-parser.y" /* yacc.c:1646 */
  1803. + case 35:
  1804. +#line 353 "dtc-parser.y" /* yacc.c:1646 */
  1805. {
  1806. (yyval.array).data = data_add_marker((yyvsp[-1].array).data, LABEL, (yyvsp[0].labelref));
  1807. }
  1808. -#line 1799 "dtc-parser.tab.c" /* yacc.c:1646 */
  1809. +#line 1819 "dtc-parser.tab.c" /* yacc.c:1646 */
  1810. break;
  1811. - case 36:
  1812. -#line 346 "dtc-parser.y" /* yacc.c:1646 */
  1813. + case 38:
  1814. +#line 362 "dtc-parser.y" /* yacc.c:1646 */
  1815. {
  1816. (yyval.integer) = (yyvsp[-1].integer);
  1817. }
  1818. -#line 1807 "dtc-parser.tab.c" /* yacc.c:1646 */
  1819. +#line 1827 "dtc-parser.tab.c" /* yacc.c:1646 */
  1820. break;
  1821. - case 39:
  1822. -#line 357 "dtc-parser.y" /* yacc.c:1646 */
  1823. + case 41:
  1824. +#line 373 "dtc-parser.y" /* yacc.c:1646 */
  1825. { (yyval.integer) = (yyvsp[-4].integer) ? (yyvsp[-2].integer) : (yyvsp[0].integer); }
  1826. -#line 1813 "dtc-parser.tab.c" /* yacc.c:1646 */
  1827. +#line 1833 "dtc-parser.tab.c" /* yacc.c:1646 */
  1828. break;
  1829. - case 41:
  1830. -#line 362 "dtc-parser.y" /* yacc.c:1646 */
  1831. + case 43:
  1832. +#line 378 "dtc-parser.y" /* yacc.c:1646 */
  1833. { (yyval.integer) = (yyvsp[-2].integer) || (yyvsp[0].integer); }
  1834. -#line 1819 "dtc-parser.tab.c" /* yacc.c:1646 */
  1835. +#line 1839 "dtc-parser.tab.c" /* yacc.c:1646 */
  1836. break;
  1837. - case 43:
  1838. -#line 367 "dtc-parser.y" /* yacc.c:1646 */
  1839. + case 45:
  1840. +#line 383 "dtc-parser.y" /* yacc.c:1646 */
  1841. { (yyval.integer) = (yyvsp[-2].integer) && (yyvsp[0].integer); }
  1842. -#line 1825 "dtc-parser.tab.c" /* yacc.c:1646 */
  1843. +#line 1845 "dtc-parser.tab.c" /* yacc.c:1646 */
  1844. break;
  1845. - case 45:
  1846. -#line 372 "dtc-parser.y" /* yacc.c:1646 */
  1847. + case 47:
  1848. +#line 388 "dtc-parser.y" /* yacc.c:1646 */
  1849. { (yyval.integer) = (yyvsp[-2].integer) | (yyvsp[0].integer); }
  1850. -#line 1831 "dtc-parser.tab.c" /* yacc.c:1646 */
  1851. +#line 1851 "dtc-parser.tab.c" /* yacc.c:1646 */
  1852. break;
  1853. - case 47:
  1854. -#line 377 "dtc-parser.y" /* yacc.c:1646 */
  1855. + case 49:
  1856. +#line 393 "dtc-parser.y" /* yacc.c:1646 */
  1857. { (yyval.integer) = (yyvsp[-2].integer) ^ (yyvsp[0].integer); }
  1858. -#line 1837 "dtc-parser.tab.c" /* yacc.c:1646 */
  1859. +#line 1857 "dtc-parser.tab.c" /* yacc.c:1646 */
  1860. break;
  1861. - case 49:
  1862. -#line 382 "dtc-parser.y" /* yacc.c:1646 */
  1863. + case 51:
  1864. +#line 398 "dtc-parser.y" /* yacc.c:1646 */
  1865. { (yyval.integer) = (yyvsp[-2].integer) & (yyvsp[0].integer); }
  1866. -#line 1843 "dtc-parser.tab.c" /* yacc.c:1646 */
  1867. +#line 1863 "dtc-parser.tab.c" /* yacc.c:1646 */
  1868. break;
  1869. - case 51:
  1870. -#line 387 "dtc-parser.y" /* yacc.c:1646 */
  1871. + case 53:
  1872. +#line 403 "dtc-parser.y" /* yacc.c:1646 */
  1873. { (yyval.integer) = (yyvsp[-2].integer) == (yyvsp[0].integer); }
  1874. -#line 1849 "dtc-parser.tab.c" /* yacc.c:1646 */
  1875. +#line 1869 "dtc-parser.tab.c" /* yacc.c:1646 */
  1876. break;
  1877. - case 52:
  1878. -#line 388 "dtc-parser.y" /* yacc.c:1646 */
  1879. + case 54:
  1880. +#line 404 "dtc-parser.y" /* yacc.c:1646 */
  1881. { (yyval.integer) = (yyvsp[-2].integer) != (yyvsp[0].integer); }
  1882. -#line 1855 "dtc-parser.tab.c" /* yacc.c:1646 */
  1883. +#line 1875 "dtc-parser.tab.c" /* yacc.c:1646 */
  1884. break;
  1885. - case 54:
  1886. -#line 393 "dtc-parser.y" /* yacc.c:1646 */
  1887. + case 56:
  1888. +#line 409 "dtc-parser.y" /* yacc.c:1646 */
  1889. { (yyval.integer) = (yyvsp[-2].integer) < (yyvsp[0].integer); }
  1890. -#line 1861 "dtc-parser.tab.c" /* yacc.c:1646 */
  1891. +#line 1881 "dtc-parser.tab.c" /* yacc.c:1646 */
  1892. break;
  1893. - case 55:
  1894. -#line 394 "dtc-parser.y" /* yacc.c:1646 */
  1895. + case 57:
  1896. +#line 410 "dtc-parser.y" /* yacc.c:1646 */
  1897. { (yyval.integer) = (yyvsp[-2].integer) > (yyvsp[0].integer); }
  1898. -#line 1867 "dtc-parser.tab.c" /* yacc.c:1646 */
  1899. +#line 1887 "dtc-parser.tab.c" /* yacc.c:1646 */
  1900. break;
  1901. - case 56:
  1902. -#line 395 "dtc-parser.y" /* yacc.c:1646 */
  1903. + case 58:
  1904. +#line 411 "dtc-parser.y" /* yacc.c:1646 */
  1905. { (yyval.integer) = (yyvsp[-2].integer) <= (yyvsp[0].integer); }
  1906. -#line 1873 "dtc-parser.tab.c" /* yacc.c:1646 */
  1907. +#line 1893 "dtc-parser.tab.c" /* yacc.c:1646 */
  1908. break;
  1909. - case 57:
  1910. -#line 396 "dtc-parser.y" /* yacc.c:1646 */
  1911. + case 59:
  1912. +#line 412 "dtc-parser.y" /* yacc.c:1646 */
  1913. { (yyval.integer) = (yyvsp[-2].integer) >= (yyvsp[0].integer); }
  1914. -#line 1879 "dtc-parser.tab.c" /* yacc.c:1646 */
  1915. +#line 1899 "dtc-parser.tab.c" /* yacc.c:1646 */
  1916. break;
  1917. - case 58:
  1918. -#line 400 "dtc-parser.y" /* yacc.c:1646 */
  1919. + case 60:
  1920. +#line 416 "dtc-parser.y" /* yacc.c:1646 */
  1921. { (yyval.integer) = (yyvsp[-2].integer) << (yyvsp[0].integer); }
  1922. -#line 1885 "dtc-parser.tab.c" /* yacc.c:1646 */
  1923. +#line 1905 "dtc-parser.tab.c" /* yacc.c:1646 */
  1924. break;
  1925. - case 59:
  1926. -#line 401 "dtc-parser.y" /* yacc.c:1646 */
  1927. + case 61:
  1928. +#line 417 "dtc-parser.y" /* yacc.c:1646 */
  1929. { (yyval.integer) = (yyvsp[-2].integer) >> (yyvsp[0].integer); }
  1930. -#line 1891 "dtc-parser.tab.c" /* yacc.c:1646 */
  1931. +#line 1911 "dtc-parser.tab.c" /* yacc.c:1646 */
  1932. break;
  1933. - case 61:
  1934. -#line 406 "dtc-parser.y" /* yacc.c:1646 */
  1935. + case 63:
  1936. +#line 422 "dtc-parser.y" /* yacc.c:1646 */
  1937. { (yyval.integer) = (yyvsp[-2].integer) + (yyvsp[0].integer); }
  1938. -#line 1897 "dtc-parser.tab.c" /* yacc.c:1646 */
  1939. +#line 1917 "dtc-parser.tab.c" /* yacc.c:1646 */
  1940. break;
  1941. - case 62:
  1942. -#line 407 "dtc-parser.y" /* yacc.c:1646 */
  1943. + case 64:
  1944. +#line 423 "dtc-parser.y" /* yacc.c:1646 */
  1945. { (yyval.integer) = (yyvsp[-2].integer) - (yyvsp[0].integer); }
  1946. -#line 1903 "dtc-parser.tab.c" /* yacc.c:1646 */
  1947. +#line 1923 "dtc-parser.tab.c" /* yacc.c:1646 */
  1948. break;
  1949. - case 64:
  1950. -#line 412 "dtc-parser.y" /* yacc.c:1646 */
  1951. + case 66:
  1952. +#line 428 "dtc-parser.y" /* yacc.c:1646 */
  1953. { (yyval.integer) = (yyvsp[-2].integer) * (yyvsp[0].integer); }
  1954. -#line 1909 "dtc-parser.tab.c" /* yacc.c:1646 */
  1955. +#line 1929 "dtc-parser.tab.c" /* yacc.c:1646 */
  1956. break;
  1957. - case 65:
  1958. -#line 413 "dtc-parser.y" /* yacc.c:1646 */
  1959. + case 67:
  1960. +#line 429 "dtc-parser.y" /* yacc.c:1646 */
  1961. { (yyval.integer) = (yyvsp[-2].integer) / (yyvsp[0].integer); }
  1962. -#line 1915 "dtc-parser.tab.c" /* yacc.c:1646 */
  1963. +#line 1935 "dtc-parser.tab.c" /* yacc.c:1646 */
  1964. break;
  1965. - case 66:
  1966. -#line 414 "dtc-parser.y" /* yacc.c:1646 */
  1967. + case 68:
  1968. +#line 430 "dtc-parser.y" /* yacc.c:1646 */
  1969. { (yyval.integer) = (yyvsp[-2].integer) % (yyvsp[0].integer); }
  1970. -#line 1921 "dtc-parser.tab.c" /* yacc.c:1646 */
  1971. +#line 1941 "dtc-parser.tab.c" /* yacc.c:1646 */
  1972. break;
  1973. - case 69:
  1974. -#line 420 "dtc-parser.y" /* yacc.c:1646 */
  1975. + case 71:
  1976. +#line 436 "dtc-parser.y" /* yacc.c:1646 */
  1977. { (yyval.integer) = -(yyvsp[0].integer); }
  1978. -#line 1927 "dtc-parser.tab.c" /* yacc.c:1646 */
  1979. +#line 1947 "dtc-parser.tab.c" /* yacc.c:1646 */
  1980. break;
  1981. - case 70:
  1982. -#line 421 "dtc-parser.y" /* yacc.c:1646 */
  1983. + case 72:
  1984. +#line 437 "dtc-parser.y" /* yacc.c:1646 */
  1985. { (yyval.integer) = ~(yyvsp[0].integer); }
  1986. -#line 1933 "dtc-parser.tab.c" /* yacc.c:1646 */
  1987. +#line 1953 "dtc-parser.tab.c" /* yacc.c:1646 */
  1988. break;
  1989. - case 71:
  1990. -#line 422 "dtc-parser.y" /* yacc.c:1646 */
  1991. + case 73:
  1992. +#line 438 "dtc-parser.y" /* yacc.c:1646 */
  1993. { (yyval.integer) = !(yyvsp[0].integer); }
  1994. -#line 1939 "dtc-parser.tab.c" /* yacc.c:1646 */
  1995. +#line 1959 "dtc-parser.tab.c" /* yacc.c:1646 */
  1996. break;
  1997. - case 72:
  1998. -#line 427 "dtc-parser.y" /* yacc.c:1646 */
  1999. + case 74:
  2000. +#line 443 "dtc-parser.y" /* yacc.c:1646 */
  2001. {
  2002. (yyval.data) = empty_data;
  2003. }
  2004. -#line 1947 "dtc-parser.tab.c" /* yacc.c:1646 */
  2005. +#line 1967 "dtc-parser.tab.c" /* yacc.c:1646 */
  2006. break;
  2007. - case 73:
  2008. -#line 431 "dtc-parser.y" /* yacc.c:1646 */
  2009. + case 75:
  2010. +#line 447 "dtc-parser.y" /* yacc.c:1646 */
  2011. {
  2012. (yyval.data) = data_append_byte((yyvsp[-1].data), (yyvsp[0].byte));
  2013. }
  2014. -#line 1955 "dtc-parser.tab.c" /* yacc.c:1646 */
  2015. +#line 1975 "dtc-parser.tab.c" /* yacc.c:1646 */
  2016. break;
  2017. - case 74:
  2018. -#line 435 "dtc-parser.y" /* yacc.c:1646 */
  2019. + case 76:
  2020. +#line 451 "dtc-parser.y" /* yacc.c:1646 */
  2021. {
  2022. (yyval.data) = data_add_marker((yyvsp[-1].data), LABEL, (yyvsp[0].labelref));
  2023. }
  2024. -#line 1963 "dtc-parser.tab.c" /* yacc.c:1646 */
  2025. +#line 1983 "dtc-parser.tab.c" /* yacc.c:1646 */
  2026. break;
  2027. - case 75:
  2028. -#line 442 "dtc-parser.y" /* yacc.c:1646 */
  2029. + case 77:
  2030. +#line 458 "dtc-parser.y" /* yacc.c:1646 */
  2031. {
  2032. (yyval.nodelist) = NULL;
  2033. }
  2034. -#line 1971 "dtc-parser.tab.c" /* yacc.c:1646 */
  2035. +#line 1991 "dtc-parser.tab.c" /* yacc.c:1646 */
  2036. break;
  2037. - case 76:
  2038. -#line 446 "dtc-parser.y" /* yacc.c:1646 */
  2039. + case 78:
  2040. +#line 462 "dtc-parser.y" /* yacc.c:1646 */
  2041. {
  2042. (yyval.nodelist) = chain_node((yyvsp[-1].node), (yyvsp[0].nodelist));
  2043. }
  2044. -#line 1979 "dtc-parser.tab.c" /* yacc.c:1646 */
  2045. +#line 1999 "dtc-parser.tab.c" /* yacc.c:1646 */
  2046. break;
  2047. - case 77:
  2048. -#line 450 "dtc-parser.y" /* yacc.c:1646 */
  2049. + case 79:
  2050. +#line 466 "dtc-parser.y" /* yacc.c:1646 */
  2051. {
  2052. ERROR(&(yylsp[0]), "Properties must precede subnodes");
  2053. YYERROR;
  2054. }
  2055. -#line 1988 "dtc-parser.tab.c" /* yacc.c:1646 */
  2056. +#line 2008 "dtc-parser.tab.c" /* yacc.c:1646 */
  2057. break;
  2058. - case 78:
  2059. -#line 458 "dtc-parser.y" /* yacc.c:1646 */
  2060. + case 80:
  2061. +#line 474 "dtc-parser.y" /* yacc.c:1646 */
  2062. {
  2063. (yyval.node) = name_node((yyvsp[0].node), (yyvsp[-1].propnodename));
  2064. }
  2065. -#line 1996 "dtc-parser.tab.c" /* yacc.c:1646 */
  2066. +#line 2016 "dtc-parser.tab.c" /* yacc.c:1646 */
  2067. break;
  2068. - case 79:
  2069. -#line 462 "dtc-parser.y" /* yacc.c:1646 */
  2070. + case 81:
  2071. +#line 478 "dtc-parser.y" /* yacc.c:1646 */
  2072. {
  2073. (yyval.node) = name_node(build_node_delete(), (yyvsp[-1].propnodename));
  2074. }
  2075. -#line 2004 "dtc-parser.tab.c" /* yacc.c:1646 */
  2076. +#line 2024 "dtc-parser.tab.c" /* yacc.c:1646 */
  2077. break;
  2078. - case 80:
  2079. -#line 466 "dtc-parser.y" /* yacc.c:1646 */
  2080. + case 82:
  2081. +#line 482 "dtc-parser.y" /* yacc.c:1646 */
  2082. {
  2083. add_label(&(yyvsp[0].node)->labels, (yyvsp[-1].labelref));
  2084. (yyval.node) = (yyvsp[0].node);
  2085. }
  2086. -#line 2013 "dtc-parser.tab.c" /* yacc.c:1646 */
  2087. +#line 2033 "dtc-parser.tab.c" /* yacc.c:1646 */
  2088. break;
  2089. -#line 2017 "dtc-parser.tab.c" /* yacc.c:1646 */
  2090. +#line 2037 "dtc-parser.tab.c" /* yacc.c:1646 */
  2091. default: break;
  2092. }
  2093. /* User semantic actions sometimes alter yychar, and that requires
  2094. @@ -2248,7 +2268,7 @@ yyreturn:
  2095. #endif
  2096. return yyresult;
  2097. }
  2098. -#line 472 "dtc-parser.y" /* yacc.c:1906 */
  2099. +#line 488 "dtc-parser.y" /* yacc.c:1906 */
  2100. void yyerror(char const *s)
  2101. --- a/scripts/dtc/dtc-parser.tab.h_shipped
  2102. +++ b/scripts/dtc/dtc-parser.tab.h_shipped
  2103. @@ -46,26 +46,27 @@ extern int yydebug;
  2104. enum yytokentype
  2105. {
  2106. DT_V1 = 258,
  2107. - DT_MEMRESERVE = 259,
  2108. - DT_LSHIFT = 260,
  2109. - DT_RSHIFT = 261,
  2110. - DT_LE = 262,
  2111. - DT_GE = 263,
  2112. - DT_EQ = 264,
  2113. - DT_NE = 265,
  2114. - DT_AND = 266,
  2115. - DT_OR = 267,
  2116. - DT_BITS = 268,
  2117. - DT_DEL_PROP = 269,
  2118. - DT_DEL_NODE = 270,
  2119. - DT_PROPNODENAME = 271,
  2120. - DT_LITERAL = 272,
  2121. - DT_CHAR_LITERAL = 273,
  2122. - DT_BYTE = 274,
  2123. - DT_STRING = 275,
  2124. - DT_LABEL = 276,
  2125. - DT_REF = 277,
  2126. - DT_INCBIN = 278
  2127. + DT_PLUGIN = 259,
  2128. + DT_MEMRESERVE = 260,
  2129. + DT_LSHIFT = 261,
  2130. + DT_RSHIFT = 262,
  2131. + DT_LE = 263,
  2132. + DT_GE = 264,
  2133. + DT_EQ = 265,
  2134. + DT_NE = 266,
  2135. + DT_AND = 267,
  2136. + DT_OR = 268,
  2137. + DT_BITS = 269,
  2138. + DT_DEL_PROP = 270,
  2139. + DT_DEL_NODE = 271,
  2140. + DT_PROPNODENAME = 272,
  2141. + DT_LITERAL = 273,
  2142. + DT_CHAR_LITERAL = 274,
  2143. + DT_BYTE = 275,
  2144. + DT_STRING = 276,
  2145. + DT_LABEL = 277,
  2146. + DT_REF = 278,
  2147. + DT_INCBIN = 279
  2148. };
  2149. #endif
  2150. @@ -74,7 +75,7 @@ extern int yydebug;
  2151. typedef union YYSTYPE YYSTYPE;
  2152. union YYSTYPE
  2153. {
  2154. -#line 38 "dtc-parser.y" /* yacc.c:1909 */
  2155. +#line 39 "dtc-parser.y" /* yacc.c:1909 */
  2156. char *propnodename;
  2157. char *labelref;
  2158. @@ -92,8 +93,9 @@ union YYSTYPE
  2159. struct node *nodelist;
  2160. struct reserve_info *re;
  2161. uint64_t integer;
  2162. + bool is_plugin;
  2163. -#line 97 "dtc-parser.tab.h" /* yacc.c:1909 */
  2164. +#line 99 "dtc-parser.tab.h" /* yacc.c:1909 */
  2165. };
  2166. # define YYSTYPE_IS_TRIVIAL 1
  2167. # define YYSTYPE_IS_DECLARED 1
  2168. --- a/scripts/dtc/dtc-parser.y
  2169. +++ b/scripts/dtc/dtc-parser.y
  2170. @@ -19,6 +19,7 @@
  2171. */
  2172. %{
  2173. #include <stdio.h>
  2174. +#include <inttypes.h>
  2175. #include "dtc.h"
  2176. #include "srcpos.h"
  2177. @@ -52,9 +53,11 @@ extern bool treesource_error;
  2178. struct node *nodelist;
  2179. struct reserve_info *re;
  2180. uint64_t integer;
  2181. + bool is_plugin;
  2182. }
  2183. %token DT_V1
  2184. +%token DT_PLUGIN
  2185. %token DT_MEMRESERVE
  2186. %token DT_LSHIFT DT_RSHIFT DT_LE DT_GE DT_EQ DT_NE DT_AND DT_OR
  2187. %token DT_BITS
  2188. @@ -71,6 +74,7 @@ extern bool treesource_error;
  2189. %type <data> propdata
  2190. %type <data> propdataprefix
  2191. +%type <is_plugin> plugindecl
  2192. %type <re> memreserve
  2193. %type <re> memreserves
  2194. %type <array> arrayprefix
  2195. @@ -101,10 +105,22 @@ extern bool treesource_error;
  2196. %%
  2197. sourcefile:
  2198. - DT_V1 ';' memreserves devicetree
  2199. + DT_V1 ';' plugindecl memreserves devicetree
  2200. {
  2201. - the_boot_info = build_boot_info($3, $4,
  2202. - guess_boot_cpuid($4));
  2203. + $5->is_plugin = $3;
  2204. + the_boot_info = build_boot_info($4, $5,
  2205. + guess_boot_cpuid($5));
  2206. + }
  2207. + ;
  2208. +
  2209. +plugindecl:
  2210. + /* empty */
  2211. + {
  2212. + $$ = false;
  2213. + }
  2214. + | DT_PLUGIN ';'
  2215. + {
  2216. + $$ = true;
  2217. }
  2218. ;
  2219. --- a/scripts/dtc/dtc.c
  2220. +++ b/scripts/dtc/dtc.c
  2221. @@ -29,6 +29,7 @@ int reservenum; /* Number of memory res
  2222. int minsize; /* Minimum blob size */
  2223. int padsize; /* Additional padding to blob */
  2224. int phandle_format = PHANDLE_BOTH; /* Use linux,phandle or phandle properties */
  2225. +int symbol_fixup_support = 0;
  2226. static void fill_fullpaths(struct node *tree, const char *prefix)
  2227. {
  2228. @@ -51,7 +52,7 @@ static void fill_fullpaths(struct node *
  2229. #define FDT_VERSION(version) _FDT_VERSION(version)
  2230. #define _FDT_VERSION(version) #version
  2231. static const char usage_synopsis[] = "dtc [options] <input file>";
  2232. -static const char usage_short_opts[] = "qI:O:o:V:d:R:S:p:fb:i:H:sW:E:hv";
  2233. +static const char usage_short_opts[] = "qI:O:o:V:d:R:S:p:fb:i:H:sW:E:@hv";
  2234. static struct option const usage_long_opts[] = {
  2235. {"quiet", no_argument, NULL, 'q'},
  2236. {"in-format", a_argument, NULL, 'I'},
  2237. @@ -69,6 +70,7 @@ static struct option const usage_long_op
  2238. {"phandle", a_argument, NULL, 'H'},
  2239. {"warning", a_argument, NULL, 'W'},
  2240. {"error", a_argument, NULL, 'E'},
  2241. + {"symbols", no_argument, NULL, '@'},
  2242. {"help", no_argument, NULL, 'h'},
  2243. {"version", no_argument, NULL, 'v'},
  2244. {NULL, no_argument, NULL, 0x0},
  2245. @@ -99,6 +101,7 @@ static const char * const usage_opts_hel
  2246. "\t\tboth - Both \"linux,phandle\" and \"phandle\" properties",
  2247. "\n\tEnable/disable warnings (prefix with \"no-\")",
  2248. "\n\tEnable/disable errors (prefix with \"no-\")",
  2249. + "\n\tEnable symbols/fixup support",
  2250. "\n\tPrint this help and exit",
  2251. "\n\tPrint version and exit",
  2252. NULL,
  2253. @@ -186,7 +189,9 @@ int main(int argc, char *argv[])
  2254. case 'E':
  2255. parse_checks_option(false, true, optarg);
  2256. break;
  2257. -
  2258. + case '@':
  2259. + symbol_fixup_support = 1;
  2260. + break;
  2261. case 'h':
  2262. usage(NULL);
  2263. default:
  2264. --- a/scripts/dtc/dtc.h
  2265. +++ b/scripts/dtc/dtc.h
  2266. @@ -54,6 +54,7 @@ extern int reservenum; /* Number of mem
  2267. extern int minsize; /* Minimum blob size */
  2268. extern int padsize; /* Additional padding to blob */
  2269. extern int phandle_format; /* Use linux,phandle or phandle properties */
  2270. +extern int symbol_fixup_support;/* enable symbols & fixup support */
  2271. #define PHANDLE_LEGACY 0x1
  2272. #define PHANDLE_EPAPR 0x2
  2273. @@ -132,6 +133,26 @@ struct label {
  2274. struct label *next;
  2275. };
  2276. +struct fixup_entry {
  2277. + int offset;
  2278. + struct node *node;
  2279. + struct property *prop;
  2280. + struct fixup_entry *next;
  2281. + bool local_fixup_generated;
  2282. +};
  2283. +
  2284. +struct fixup {
  2285. + char *ref;
  2286. + struct fixup_entry *entries;
  2287. + struct fixup *next;
  2288. +};
  2289. +
  2290. +struct symbol {
  2291. + struct label *label;
  2292. + struct node *node;
  2293. + struct symbol *next;
  2294. +};
  2295. +
  2296. struct property {
  2297. bool deleted;
  2298. char *name;
  2299. @@ -158,6 +179,13 @@ struct node {
  2300. int addr_cells, size_cells;
  2301. struct label *labels;
  2302. +
  2303. + struct symbol *symbols;
  2304. + struct fixup_entry *local_fixups;
  2305. + bool emit_local_fixup_node;
  2306. +
  2307. + bool is_plugin;
  2308. + struct fixup *fixups;
  2309. };
  2310. #define for_each_label_withdel(l0, l) \
  2311. @@ -181,6 +209,18 @@ struct node {
  2312. for_each_child_withdel(n, c) \
  2313. if (!(c)->deleted)
  2314. +#define for_each_fixup(n, f) \
  2315. + for ((f) = (n)->fixups; (f); (f) = (f)->next)
  2316. +
  2317. +#define for_each_fixup_entry(f, fe) \
  2318. + for ((fe) = (f)->entries; (fe); (fe) = (fe)->next)
  2319. +
  2320. +#define for_each_symbol(n, s) \
  2321. + for ((s) = (n)->symbols; (s); (s) = (s)->next)
  2322. +
  2323. +#define for_each_local_fixup_entry(n, fe) \
  2324. + for ((fe) = (n)->local_fixups; (fe); (fe) = (fe)->next)
  2325. +
  2326. void add_label(struct label **labels, char *label);
  2327. void delete_labels(struct label **labels);
  2328. --- a/scripts/dtc/flattree.c
  2329. +++ b/scripts/dtc/flattree.c
  2330. @@ -255,6 +255,204 @@ static int stringtable_insert(struct dat
  2331. return i;
  2332. }
  2333. +static void emit_local_fixups(struct node *tree, struct emitter *emit,
  2334. + void *etarget, struct data *strbuf, struct version_info *vi,
  2335. + struct node *node)
  2336. +{
  2337. + struct fixup_entry *fe, *fen;
  2338. + struct node *child;
  2339. + int nameoff, count;
  2340. + cell_t *buf;
  2341. + struct data d;
  2342. +
  2343. + if (node->emit_local_fixup_node) {
  2344. +
  2345. + /* emit the external fixups (do not emit /) */
  2346. + if (node != tree) {
  2347. + emit->beginnode(etarget, NULL);
  2348. + emit->string(etarget, node->name, 0);
  2349. + emit->align(etarget, sizeof(cell_t));
  2350. + }
  2351. +
  2352. + for_each_local_fixup_entry(tree, fe) {
  2353. + if (fe->node != node || fe->local_fixup_generated)
  2354. + continue;
  2355. +
  2356. + /* count the number of fixup entries */
  2357. + count = 0;
  2358. + for_each_local_fixup_entry(tree, fen) {
  2359. + if (fen->prop != fe->prop)
  2360. + continue;
  2361. + fen->local_fixup_generated = true;
  2362. + count++;
  2363. + }
  2364. +
  2365. + /* allocate buffer */
  2366. + buf = xmalloc(count * sizeof(cell_t));
  2367. +
  2368. + /* collect all the offsets in buffer */
  2369. + count = 0;
  2370. + for_each_local_fixup_entry(tree, fen) {
  2371. + if (fen->prop != fe->prop)
  2372. + continue;
  2373. + fen->local_fixup_generated = true;
  2374. + buf[count++] = cpu_to_fdt32(fen->offset);
  2375. + }
  2376. + d = empty_data;
  2377. + d.len = count * sizeof(cell_t);
  2378. + d.val = (char *)buf;
  2379. +
  2380. + nameoff = stringtable_insert(strbuf, fe->prop->name);
  2381. + emit->property(etarget, fe->prop->labels);
  2382. + emit->cell(etarget, count * sizeof(cell_t));
  2383. + emit->cell(etarget, nameoff);
  2384. +
  2385. + if ((vi->flags & FTF_VARALIGN) &&
  2386. + (count * sizeof(cell_t)) >= 8)
  2387. + emit->align(etarget, 8);
  2388. +
  2389. + emit->data(etarget, d);
  2390. + emit->align(etarget, sizeof(cell_t));
  2391. +
  2392. + free(buf);
  2393. + }
  2394. + }
  2395. +
  2396. + for_each_child(node, child)
  2397. + emit_local_fixups(tree, emit, etarget, strbuf, vi, child);
  2398. +
  2399. + if (node->emit_local_fixup_node && node != tree)
  2400. + emit->endnode(etarget, tree->labels);
  2401. +}
  2402. +
  2403. +static void emit_symbols_node(struct node *tree, struct emitter *emit,
  2404. + void *etarget, struct data *strbuf,
  2405. + struct version_info *vi)
  2406. +{
  2407. + struct symbol *sym;
  2408. + int nameoff, vallen;
  2409. +
  2410. + /* do nothing if no symbols */
  2411. + if (!tree->symbols)
  2412. + return;
  2413. +
  2414. + emit->beginnode(etarget, NULL);
  2415. + emit->string(etarget, "__symbols__", 0);
  2416. + emit->align(etarget, sizeof(cell_t));
  2417. +
  2418. + for_each_symbol(tree, sym) {
  2419. +
  2420. + vallen = strlen(sym->node->fullpath);
  2421. +
  2422. + nameoff = stringtable_insert(strbuf, sym->label->label);
  2423. +
  2424. + emit->property(etarget, NULL);
  2425. + emit->cell(etarget, vallen + 1);
  2426. + emit->cell(etarget, nameoff);
  2427. +
  2428. + if ((vi->flags & FTF_VARALIGN) && vallen >= 8)
  2429. + emit->align(etarget, 8);
  2430. +
  2431. + emit->string(etarget, sym->node->fullpath,
  2432. + strlen(sym->node->fullpath));
  2433. + emit->align(etarget, sizeof(cell_t));
  2434. + }
  2435. +
  2436. + emit->endnode(etarget, NULL);
  2437. +}
  2438. +
  2439. +static void emit_local_fixups_node(struct node *tree, struct emitter *emit,
  2440. + void *etarget, struct data *strbuf,
  2441. + struct version_info *vi)
  2442. +{
  2443. + struct fixup_entry *fe;
  2444. + struct node *node;
  2445. +
  2446. + /* do nothing if no local fixups */
  2447. + if (!tree->local_fixups)
  2448. + return;
  2449. +
  2450. + /* mark all nodes that need a local fixup generated (and parents) */
  2451. + for_each_local_fixup_entry(tree, fe) {
  2452. + node = fe->node;
  2453. + while (node != NULL && !node->emit_local_fixup_node) {
  2454. + node->emit_local_fixup_node = true;
  2455. + node = node->parent;
  2456. + }
  2457. + }
  2458. +
  2459. + /* emit the local fixups node now */
  2460. + emit->beginnode(etarget, NULL);
  2461. + emit->string(etarget, "__local_fixups__", 0);
  2462. + emit->align(etarget, sizeof(cell_t));
  2463. +
  2464. + emit_local_fixups(tree, emit, etarget, strbuf, vi, tree);
  2465. +
  2466. + emit->endnode(etarget, tree->labels);
  2467. +}
  2468. +
  2469. +static void emit_fixups_node(struct node *tree, struct emitter *emit,
  2470. + void *etarget, struct data *strbuf,
  2471. + struct version_info *vi)
  2472. +{
  2473. + struct fixup *f;
  2474. + struct fixup_entry *fe;
  2475. + char *name, *s;
  2476. + const char *fullpath;
  2477. + int namesz, nameoff, vallen;
  2478. +
  2479. + /* do nothing if no fixups */
  2480. + if (!tree->fixups)
  2481. + return;
  2482. +
  2483. + /* emit the external fixups */
  2484. + emit->beginnode(etarget, NULL);
  2485. + emit->string(etarget, "__fixups__", 0);
  2486. + emit->align(etarget, sizeof(cell_t));
  2487. +
  2488. + for_each_fixup(tree, f) {
  2489. +
  2490. + namesz = 0;
  2491. + for_each_fixup_entry(f, fe) {
  2492. + fullpath = fe->node->fullpath;
  2493. + if (fullpath[0] == '\0')
  2494. + fullpath = "/";
  2495. + namesz += strlen(fullpath) + 1;
  2496. + namesz += strlen(fe->prop->name) + 1;
  2497. + namesz += 32; /* space for :<number> + '\0' */
  2498. + }
  2499. +
  2500. + name = xmalloc(namesz);
  2501. +
  2502. + s = name;
  2503. + for_each_fixup_entry(f, fe) {
  2504. + fullpath = fe->node->fullpath;
  2505. + if (fullpath[0] == '\0')
  2506. + fullpath = "/";
  2507. + snprintf(s, name + namesz - s, "%s:%s:%d", fullpath,
  2508. + fe->prop->name, fe->offset);
  2509. + s += strlen(s) + 1;
  2510. + }
  2511. +
  2512. + nameoff = stringtable_insert(strbuf, f->ref);
  2513. + vallen = s - name - 1;
  2514. +
  2515. + emit->property(etarget, NULL);
  2516. + emit->cell(etarget, vallen + 1);
  2517. + emit->cell(etarget, nameoff);
  2518. +
  2519. + if ((vi->flags & FTF_VARALIGN) && vallen >= 8)
  2520. + emit->align(etarget, 8);
  2521. +
  2522. + emit->string(etarget, name, vallen);
  2523. + emit->align(etarget, sizeof(cell_t));
  2524. +
  2525. + free(name);
  2526. + }
  2527. +
  2528. + emit->endnode(etarget, tree->labels);
  2529. +}
  2530. +
  2531. static void flatten_tree(struct node *tree, struct emitter *emit,
  2532. void *etarget, struct data *strbuf,
  2533. struct version_info *vi)
  2534. @@ -310,6 +508,10 @@ static void flatten_tree(struct node *tr
  2535. flatten_tree(child, emit, etarget, strbuf, vi);
  2536. }
  2537. + emit_symbols_node(tree, emit, etarget, strbuf, vi);
  2538. + emit_local_fixups_node(tree, emit, etarget, strbuf, vi);
  2539. + emit_fixups_node(tree, emit, etarget, strbuf, vi);
  2540. +
  2541. emit->endnode(etarget, tree->labels);
  2542. }
  2543. --- a/scripts/dtc/version_gen.h
  2544. +++ b/scripts/dtc/version_gen.h
  2545. @@ -1 +1 @@
  2546. -#define DTC_VERSION "DTC 1.4.1-g9d3649bd"
  2547. +#define DTC_VERSION "DTC 1.4.1-g25efc119"