[gdb/build] Fix struct token odr violation
authorTom de Vries <tdevries@suse.de>
Mon, 14 Aug 2023 16:32:29 +0000 (18:32 +0200)
committerTom de Vries <tdevries@suse.de>
Mon, 14 Aug 2023 16:32:29 +0000 (18:32 +0200)
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

gdb/c-exp.y
gdb/d-exp.y
gdb/f-exp.y
gdb/go-exp.y
gdb/p-exp.y

index 032ba25274eefb6c27271caa52dc59b7ff9a7f54..a27dbfa608f3cfa6037ba16b68e1066aa45692be 100644 (file)
@@ -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},
index 8620a67e04a8aee0df74e68e363159b32371f601..6c5569a1c8d67c587e78998329eb038017e98e50 100644 (file)
@@ -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},
index 19e4c702c149c42dae086c0975fa611d9b8e013f..18566afd67f59f837cd94a3c521f814a560dfd05 100644 (file)
@@ -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 },
index 92abd95a159bc015069395e9983fac53d2b88538..28bf3f0ab3307d9a2304e1e4179de5b3b67bf29a 100644 (file)
@@ -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},
index b086bf73a0ed540cc3428b0917783dd99dd203e8..2360a500476cfc9999dd90a71583f1dfba71d464 100644 (file)
@@ -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},