On Tue, Mar 31, 2020 at 10:58:36AM +0200, Greg Kroah-Hartman wrote:
From: Dirk Mueller dmueller@suse.com
commit e33a814e772cdc36436c8c188d8c42d019fda639 upstream.
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", however that leads to:
dtc-lexer.l:26:16: error: redundant redeclaration of 'yylloc' [-Werror=redundant-decls] 26 | extern YYLTYPE yylloc; | ^~~~~~ In file included from dtc-lexer.l:24: dtc-parser.tab.h:127:16: note: previous declaration of 'yylloc' was here 127 | extern YYLTYPE yylloc; | ^~~~~~ cc1: all warnings being treated as errors
which means the declaration is completely redundant and can just be dropped.
Signed-off-by: Dirk Mueller dmueller@suse.com Signed-off-by: David Gibson david@gibson.dropbear.id.au [robh: cherry-pick from upstream] Cc: stable@vger.kernel.org Signed-off-by: Rob Herring robh@kernel.org Signed-off-by: Greg Kroah-Hartman gregkh@linuxfoundation.org
scripts/dtc/dtc-lexer.l | 1 - 1 file changed, 1 deletion(-)
--- a/scripts/dtc/dtc-lexer.l +++ b/scripts/dtc/dtc-lexer.l @@ -23,7 +23,6 @@ LINECOMMENT "//".*\n #include "srcpos.h" #include "dtc-parser.tab.h" -YYLTYPE yylloc; extern bool treesource_error; /* CAUTION: this will stop working if we ever use yyless() or yyunput() */
Hi Greg,
Replying here simply because I am not subscribed to the stable-commits mailing list and there does not appear to be an easy way to reply to one of those emails through the existing archives because they are not as nice as lore.kernel.org.
This patch is fine for the current releases in review but 4.4, 4.9, and 4.14 need to have the patch applied to scripts/dtc/dtc-lexer.lex.c_shipped because prior to commit e039139be8c2 ("scripts/dtc: generate lexer and parser during build instead of shipping"), that was the file that was being built. Running the command below in the stable-queue repo works for me and I have tested all of the patches to make sure they still apply (albeit with some fuzz).
$ sed -i 's;scripts/dtc/dtc-lexer.l;scripts/dtc/dtc-lexer.lex.c_shipped;g' \ queue-{4.4,4.9,4.14}/scripts-dtc-remove-redundant-yyloc-global-declaration.patch
If you would prefer a set of patches, let me know.
Cheers, Nathan