cscope can't parse kernel/trace/trace_events.c (and some other files)
in the linux kernel tree because this file has
#define do_for_each_event_file(tr, file) \
list_for_each_entry(tr, &ftrace_trace_arrays, list) { \
list_for_each_entry(file, &tr->events, list)
#define do_for_each_event_file_safe(tr, file) \
list_for_each_entry(tr, &ftrace_trace_arrays, list) { \
struct trace_event_file *___n; \
list_for_each_entry_safe(file, ___n, &tr->events, list)
#define while_for_each_event_file() \
}
at the top and thus the 2nd '{' in do_for_each_event_file_safe() above
is not balanced.
Signed-off-by: Oleg Nesterov <ol...@re...>
---
src/fscanner.l | 70 ++++++++++++++++++++++++++------------------------
1 file changed, 37 insertions(+), 33 deletions(-)
diff --git a/src/fscanner.l b/src/fscanner.l
index 43880bf..46734ea 100644
--- a/src/fscanner.l
+++ b/src/fscanner.l
@@ -178,19 +178,21 @@ wsnl [ \t\r\v\f\n]|{comment}
}
\{ { /* count unmatched left braces for fcn def detection */
- ++braces;
-
- /* mark an untagged enum/struct/union so its beginning
- can be found */
- if (tagdef) {
- if (braces == 1) {
- esudef = YES;
+ if (ppdefine == NO) {
+ ++braces;
+
+ /* mark an untagged enum/struct/union so its beginning
+ can be found */
+ if (tagdef) {
+ if (braces == 1) {
+ esudef = YES;
+ }
+ token = tagdef;
+ tagdef = '\0';
+ last = first;
+ my_yymore();
+ return(token);
}
- token = tagdef;
- tagdef = '\0';
- last = first;
- my_yymore();
- return(token);
}
goto more;
/* NOTREACHED */
@@ -326,28 +328,30 @@ wsnl [ \t\r\v\f\n]|{comment}
}
\} {
- /* could be the last enum member initializer */
- if (braces == initializerbraces) {
- initializerbraces = -1;
- initializer = NO;
- }
- if (--braces <= 0) {
- endstate:
- braces = 0;
- classdef = NO;
- }
- if (braces == 0 || (braces == 1 && classdef == YES)) {
-
- /* if the end of an enum/struct/union definition */
- if (esudef == YES) {
- esudef = NO;
+ if (ppdefine == NO) {
+ /* could be the last enum member initializer */
+ if (braces == initializerbraces) {
+ initializerbraces = -1;
+ initializer = NO;
}
- /* if the end of the function */
- else if (fcndef == YES) {
- fcndef = NO;
- last = first;
- my_yymore();
- return(FCNEND);
+ if (--braces <= 0) {
+ endstate:
+ braces = 0;
+ classdef = NO;
+ }
+ if (braces == 0 || (braces == 1 && classdef == YES)) {
+
+ /* if the end of an enum/struct/union definition */
+ if (esudef == YES) {
+ esudef = NO;
+ }
+ /* if the end of the function */
+ else if (fcndef == YES) {
+ fcndef = NO;
+ last = first;
+ my_yymore();
+ return(FCNEND);
+ }
}
}
goto more;
--
2.25.1.362.g51ebf55
|