diff -drupN a/scripts/dtc/dtc-lexer.l b/scripts/dtc/dtc-lexer.l --- a/scripts/dtc/dtc-lexer.l 2018-08-06 17:23:04.000000000 +0300 +++ b/scripts/dtc/dtc-lexer.l 2022-06-12 05:28:14.000000000 +0300 @@ -121,6 +121,11 @@ static void lexical_error(const char *fm return DT_V1; } +<*>"/plugin/" { + DPRINT("Keyword: /plugin/\n"); + return DT_PLUGIN; + } + <*>"/memreserve/" { DPRINT("Keyword: /memreserve/\n"); BEGIN_DEFAULT(); @@ -184,16 +189,16 @@ static void lexical_error(const char *fm if (d.len == 1) { lexical_error("Empty character literal"); yylval.integer = 0; - return DT_CHAR_LITERAL; - } - - yylval.integer = (unsigned char)d.val[0]; + } else { + yylval.integer = (unsigned char)d.val[0]; - if (d.len > 2) - lexical_error("Character literal has %d" - " characters instead of 1", - d.len - 1); + if (d.len > 2) + lexical_error("Character literal has %d" + " characters instead of 1", + d.len - 1); + } + data_free(d); return DT_CHAR_LITERAL; }