From: Tom de Vries <tdevries@suse.de>
To: gdb-patches@sourceware.org
Subject: [PATCH 4/4] [gdb/build] Fix struct token odr violation
Date: Mon, 14 Aug 2023 13:17:21 +0200 [thread overview]
Message-ID: <20230814111721.31402-4-tdevries@suse.de> (raw)
In-Reply-To: <20230814111721.31402-1-tdevries@suse.de>
When building gdb with -O2 -flto I run into:
...
/data/vries/gdb/src/gdb/c-exp.y:2450:8: warning: type 'struct token' \
violates the C++ One Definition Rule [-Wodr]
struct token
^
/data/vries/gdb/src/gdb/d-exp.y:939:8: note: a different type is defined in \
another translation unit
struct token
^
...
Fix this by renaming to c_token and d_token.
Likewise in:
- fortran-exp.y, renaming to f_token,
- go-exp.y, renaming to go_token, and
- p-exp.y, renaming to p_token.
Tested on x86_64-linux.
---
gdb/c-exp.y | 8 ++++----
gdb/d-exp.y | 8 ++++----
gdb/f-exp.y | 8 ++++----
gdb/go-exp.y | 8 ++++----
gdb/p-exp.y | 6 +++---
5 files changed, 19 insertions(+), 19 deletions(-)
diff --git a/gdb/c-exp.y b/gdb/c-exp.y
index 032ba25274e..a27dbfa608f 100644
--- a/gdb/c-exp.y
+++ b/gdb/c-exp.y
@@ -2447,7 +2447,7 @@ enum token_flag
};
DEF_ENUM_FLAGS_TYPE (enum token_flag, token_flags);
-struct token
+struct c_token
{
const char *oper;
int token;
@@ -2455,7 +2455,7 @@ struct token
token_flags flags;
};
-static const struct token tokentab3[] =
+static const struct c_token tokentab3[] =
{
{">>=", ASSIGN_MODIFY, BINOP_RSH, 0},
{"<<=", ASSIGN_MODIFY, BINOP_LSH, 0},
@@ -2463,7 +2463,7 @@ static const struct token tokentab3[] =
{"...", DOTDOTDOT, OP_NULL, 0}
};
-static const struct token tokentab2[] =
+static const struct c_token tokentab2[] =
{
{"+=", ASSIGN_MODIFY, BINOP_ADD, 0},
{"-=", ASSIGN_MODIFY, BINOP_SUB, 0},
@@ -2494,7 +2494,7 @@ static const struct token tokentab2[] =
multi-word type names (for example 'double' can appear in 'long
double') need to be listed here. type-specifiers that are only ever
single word (like 'char') are handled by the classify_name function. */
-static const struct token ident_tokens[] =
+static const struct c_token ident_tokens[] =
{
{"unsigned", UNSIGNED, OP_NULL, 0},
{"template", TEMPLATE, OP_NULL, FLAG_CXX},
diff --git a/gdb/d-exp.y b/gdb/d-exp.y
index 8620a67e04a..6c5569a1c8d 100644
--- a/gdb/d-exp.y
+++ b/gdb/d-exp.y
@@ -936,21 +936,21 @@ parse_string_or_char (const char *tokptr, const char **outptr,
return quote == '\'' ? CHARACTER_LITERAL : STRING_LITERAL;
}
-struct token
+struct d_token
{
const char *oper;
int token;
enum exp_opcode opcode;
};
-static const struct token tokentab3[] =
+static const struct d_token tokentab3[] =
{
{"^^=", ASSIGN_MODIFY, BINOP_EXP},
{"<<=", ASSIGN_MODIFY, BINOP_LSH},
{">>=", ASSIGN_MODIFY, BINOP_RSH},
};
-static const struct token tokentab2[] =
+static const struct d_token tokentab2[] =
{
{"+=", ASSIGN_MODIFY, BINOP_ADD},
{"-=", ASSIGN_MODIFY, BINOP_SUB},
@@ -975,7 +975,7 @@ static const struct token tokentab2[] =
};
/* Identifier-like tokens. */
-static const struct token ident_tokens[] =
+static const struct d_token ident_tokens[] =
{
{"is", IDENTITY, OP_NULL},
{"!is", NOTIDENTITY, OP_NULL},
diff --git a/gdb/f-exp.y b/gdb/f-exp.y
index 19e4c702c14..18566afd67f 100644
--- a/gdb/f-exp.y
+++ b/gdb/f-exp.y
@@ -1219,7 +1219,7 @@ convert_to_kind_type (struct type *basetype, int kind)
return nullptr;
}
-struct token
+struct f_token
{
/* The string to match against. */
const char *oper;
@@ -1237,7 +1237,7 @@ struct token
/* List of Fortran operators. */
-static const struct token fortran_operators[] =
+static const struct f_token fortran_operators[] =
{
{ ".and.", BOOL_AND, OP_NULL, false },
{ ".or.", BOOL_OR, OP_NULL, false },
@@ -1278,7 +1278,7 @@ static const struct f77_boolean_val boolean_values[] =
{ ".false.", 0 }
};
-static const struct token f_intrinsics[] =
+static const struct f_token f_intrinsics[] =
{
/* The following correspond to actual functions in Fortran and are case
insensitive. */
@@ -1300,7 +1300,7 @@ static const struct token f_intrinsics[] =
{ "sizeof", SIZEOF, OP_NULL, false },
};
-static const token f_keywords[] =
+static const f_token f_keywords[] =
{
/* Historically these have always been lowercase only in GDB. */
{ "character", CHARACTER, OP_NULL, true },
diff --git a/gdb/go-exp.y b/gdb/go-exp.y
index 92abd95a159..28bf3f0ab33 100644
--- a/gdb/go-exp.y
+++ b/gdb/go-exp.y
@@ -898,14 +898,14 @@ parse_string_or_char (const char *tokptr, const char **outptr,
return quote == '\'' ? CHAR : STRING;
}
-struct token
+struct go_token
{
const char *oper;
int token;
enum exp_opcode opcode;
};
-static const struct token tokentab3[] =
+static const struct go_token tokentab3[] =
{
{">>=", ASSIGN_MODIFY, BINOP_RSH},
{"<<=", ASSIGN_MODIFY, BINOP_LSH},
@@ -913,7 +913,7 @@ static const struct token tokentab3[] =
{"...", DOTDOTDOT, OP_NULL},
};
-static const struct token tokentab2[] =
+static const struct go_token tokentab2[] =
{
{"+=", ASSIGN_MODIFY, BINOP_ADD},
{"-=", ASSIGN_MODIFY, BINOP_SUB},
@@ -939,7 +939,7 @@ static const struct token tokentab2[] =
};
/* Identifier-like tokens. */
-static const struct token ident_tokens[] =
+static const struct go_token ident_tokens[] =
{
{"true", TRUE_KEYWORD, OP_NULL},
{"false", FALSE_KEYWORD, OP_NULL},
diff --git a/gdb/p-exp.y b/gdb/p-exp.y
index b086bf73a0e..2360a500476 100644
--- a/gdb/p-exp.y
+++ b/gdb/p-exp.y
@@ -994,14 +994,14 @@ pop_current_type (void)
}
}
-struct token
+struct p_token
{
const char *oper;
int token;
enum exp_opcode opcode;
};
-static const struct token tokentab3[] =
+static const struct p_token tokentab3[] =
{
{"shr", RSH, OP_NULL},
{"shl", LSH, OP_NULL},
@@ -1014,7 +1014,7 @@ static const struct token tokentab3[] =
{"xor", XOR, OP_NULL}
};
-static const struct token tokentab2[] =
+static const struct p_token tokentab2[] =
{
{"or", OR, OP_NULL},
{"<>", NOTEQUAL, OP_NULL},
--
2.35.3
next prev parent reply other threads:[~2023-08-14 11:17 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-08-14 11:17 [PATCH 1/4] [gdb/build] Remove superfluous variable param_types in gdb/python/py-param.c Tom de Vries
2023-08-14 11:17 ` [PATCH 2/4] [gdb/build] Fix enum param_types odr violation Tom de Vries
2023-08-14 16:07 ` Tom Tromey
2023-08-14 11:17 ` [PATCH 3/4] [gdb/build] Fix struct token_and_value " Tom de Vries
2023-08-14 16:07 ` Tom Tromey
2023-08-14 11:17 ` Tom de Vries [this message]
2023-08-14 16:08 ` [PATCH 4/4] [gdb/build] Fix struct token " Tom Tromey
2023-08-14 16:06 ` [PATCH 1/4] [gdb/build] Remove superfluous variable param_types in gdb/python/py-param.c Tom Tromey
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20230814111721.31402-4-tdevries@suse.de \
--to=tdevries@suse.de \
--cc=gdb-patches@sourceware.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).