Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 4fab9160 authored by Nicholas Piggin's avatar Nicholas Piggin Committed by Michal Marek
Browse files

kbuild: genksyms fix for typeof handling



The tokenizer misses counting an open-parenthesis when parsing a
non-trivial typeof beginning with an open-parenthesis. This function
in include/linux/ceph/libceph.h

static type *lookup_##name(struct rb_root *root,
                           typeof(((type *)0)->keyfld) key)

When instantiated in net/ceph/mon_client.c, causes subsequent symbols
including an EXPORT_SYMBOL in that file to be lost.

Signed-off-by: default avatarNicholas Piggin <npiggin@gmail.com>
Signed-off-by: default avatarMichal Marek <mmarek@suse.com>
parent dee81e98
Loading
Loading
Loading
Loading
+17 −18
Original line number Diff line number Diff line
@@ -289,6 +289,23 @@ repeat:
	}
      break;

    case ST_TYPEOF_1:
      if (token == IDENT)
	{
	  if (is_reserved_word(yytext, yyleng)
	      || find_symbol(yytext, SYM_TYPEDEF, 1))
	    {
	      yyless(0);
	      unput('(');
	      lexstate = ST_NORMAL;
	      token = TYPEOF_KEYW;
	      break;
	    }
	  _APP("(", 1);
	}
	lexstate = ST_TYPEOF;
	/* FALLTHRU */

    case ST_TYPEOF:
      switch (token)
	{
@@ -313,24 +330,6 @@ repeat:
	}
      break;

    case ST_TYPEOF_1:
      if (token == IDENT)
	{
	  if (is_reserved_word(yytext, yyleng)
	      || find_symbol(yytext, SYM_TYPEDEF, 1))
	    {
	      yyless(0);
	      unput('(');
	      lexstate = ST_NORMAL;
	      token = TYPEOF_KEYW;
	      break;
	    }
	  _APP("(", 1);
	}
	APP;
	lexstate = ST_TYPEOF;
	goto repeat;

    case ST_BRACKET:
      APP;
      switch (token)