49d91586ad
[ci:skip-build] already built successfully in CI
52 lines
1.9 KiB
Diff
52 lines
1.9 KiB
Diff
Based on https://lkml.org/lkml/2020/4/1/1206. In original patch, YYLOC declaration was removed.
|
|
However, using original patch, which removes yylloc declaration on 3.18.14 kernel version results in 'yylloc not declared' error.
|
|
See part of the original description below:
|
|
|
|
gcc 10 will default to -fno-common, which causes this error at link
|
|
time:
|
|
|
|
(.text+0x0): multiple definition of `yylloc'; dtc-lexer.lex.o (symbol from plugin):(.text+0x0): first defined here
|
|
|
|
This is because both dtc-lexer as well as dtc-parser define the same
|
|
global symbol yyloc. Before with -fcommon those were merged into one
|
|
defintion. The proper solution would be to to mark this as "extern",
|
|
|
|
diff --git a/scripts/dtc/dtc-lexer.l b/scripts/dtc/dtc-lexer.l
|
|
index 3b41bfca636c..9b9c29e6f311 100644
|
|
--- a/scripts/dtc/dtc-lexer.l
|
|
+++ b/scripts/dtc/dtc-lexer.l
|
|
@@ -39,7 +39,7 @@ LINECOMMENT "//".*\n
|
|
#include "srcpos.h"
|
|
#include "dtc-parser.tab.h"
|
|
|
|
-YYLTYPE yylloc;
|
|
+extern YYLTYPE yylloc;
|
|
|
|
/* CAUTION: this will stop working if we ever use yyless() or yyunput() */
|
|
#define YY_USER_ACTION \
|
|
diff --git a/scripts/dtc/dtc-lexer.lex.c_shipped b/scripts/dtc/dtc-lexer.lex.c_shipped
|
|
index 2d30f41778b7..d0eb405cb811 100644
|
|
--- a/scripts/dtc/dtc-lexer.lex.c_shipped
|
|
+++ b/scripts/dtc/dtc-lexer.lex.c_shipped
|
|
@@ -637,7 +637,7 @@ char *yytext;
|
|
#include "srcpos.h"
|
|
#include "dtc-parser.tab.h"
|
|
|
|
-YYLTYPE yylloc;
|
|
+extern YYLTYPE yylloc;
|
|
|
|
/* CAUTION: this will stop working if we ever use yyless() or yyunput() */
|
|
#define YY_USER_ACTION \
|
|
diff --git a/scripts/dtc/dtc-parser.tab.c_shipped b/scripts/dtc/dtc-parser.tab.c_shipped
|
|
index c8c8ca8b744f..ee1d8c3042fb 100644
|
|
--- a/scripts/dtc/dtc-parser.tab.c_shipped
|
|
+++ b/scripts/dtc/dtc-parser.tab.c_shipped
|
|
@@ -73,7 +73,7 @@
|
|
#include "dtc.h"
|
|
#include "srcpos.h"
|
|
|
|
-extern YYLTYPE yylloc;
|
|
+YYLTYPE yylloc;
|
|
|
|
extern int yylex(void);
|
|
extern void print_error(char const *fmt, ...);
|