gdb/0001-Make-c-exp.y-work-with-Bison-3.8.patch
Chenxi Mao 34577600bc gdb: fix build error via cherry-pick upstream patch.
There is build error if build env upgrade from 2109 to 2203.
../../gdb/c-exp.y:3320:1: error: 'void c_print_token(FILE*, int, YYSTYPE)' defined but not used [-Werror=unused-function]

The root cause is bison version changed from 3.7.4 to 3.8.2
Meanwhile, bison 3.8.x removed removed YYPRINT support, so there
will be trigger this function is unused.

Solution:
Backport upstream patch to check bison version which means
function only work bison < 3.8

After this change, both aarch64 and x86 build successfully.

Change-Id: Ib80d828fcca8e1eb8e085f36fc5a9a197259e35f
Signed-off-by: Chenxi Mao <chenxi.mao@suse.com>
2021-12-22 10:56:08 +08:00

45 lines
1.4 KiB
Diff

From cb9f257adb210ad1f1e9abea1b8e8675a96077df Mon Sep 17 00:00:00 2001
From: Christian Biesinger <cbiesinger@google.com>
Date: Fri, 8 Oct 2021 16:09:46 -0400
Subject: [PATCH 1/1] Make c-exp.y work with Bison 3.8+
When using Bison 3.8, we get this error:
../../gdb/c-exp.y:3455:1: error: 'void c_print_token(FILE*, int, YYSTYPE)' defined but not used [-Werror=unused-function]
That's because bison 3.8 removed YYPRINT support:
https://savannah.gnu.org/forum/forum.php?forum_id=10047
Accordingly, this patch only defines that function for Bison < 3.8.
Change-Id: I3cbf2f317630bb72810b00f2d9b2c4b99fa812ad
---
gdb/c-exp.y | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/gdb/c-exp.y b/gdb/c-exp.y
index 3403a85..d17f104 100644
--- a/gdb/c-exp.y
+++ b/gdb/c-exp.y
@@ -166,7 +166,7 @@ static void check_parameter_typelist (std::vector<struct type *> *);
static void write_destructor_name (struct parser_state *par_state,
struct stoken);
-#ifdef YYBISON
+#if defined(YYBISON) && YYBISON < 30800
static void c_print_token (FILE *file, int type, YYSTYPE value);
#define YYPRINT(FILE, TYPE, VALUE) c_print_token (FILE, TYPE, VALUE)
#endif
@@ -3311,7 +3311,7 @@ c_parse (struct parser_state *par_state)
return yyparse ();
}
-#ifdef YYBISON
+#if defined(YYBISON) && YYBISON < 30800
/* This is called via the YYPRINT macro when parser debugging is
enabled. It prints a token's value. */
--
2.32.0