[gdb/build] Fix struct token odr violation
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.
Approved-By: Tom Tromey <tom@tromey.com>
PR build/22395
Bug: https://sourceware.org/bugzilla/show_bug.cgi?id=22395
This commit is contained in:
+4
-4
@@ -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},
|
||||
|
||||
+4
-4
@@ -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},
|
||||
|
||||
+4
-4
@@ -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 },
|
||||
|
||||
+4
-4
@@ -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},
|
||||
|
||||
+3
-3
@@ -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},
|
||||
|
||||
Reference in New Issue
Block a user