[gdb/build] Fix enum param_types 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:
...
gdb/guile/scm-param.c:121:6: warning: type 'param_types' violates the C++ \
  One Definition Rule [-Wodr]
 enum param_types
      ^
gdb/python/py-param.c:33:6: note: an enum with different value name is \
  defined in another translation unit
 enum param_types
      ^
...

Fix this by renaming to enum scm_param_types and py_param_types.

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/guile/scm-param.c
gdb/python/py-param.c

index d49cc3cebcb5dc94ba9d19444ee84f44b71f71dd..3a9e1c3dc187fdae59e16402123feb821ee5941e 100644 (file)
@@ -118,7 +118,7 @@ struct param_smob
 
 /* Guile parameter types as in PARAMETER_TYPES later on.  */
 
-enum param_types
+enum scm_param_types
 {
   param_boolean,
   param_auto_boolean,
@@ -134,7 +134,7 @@ enum param_types
 };
 
 /* Translation from Guile parameters to GDB variable types.  Keep in the
-   same order as PARAM_TYPES due to C++'s lack of designated initializers.  */
+   same order as SCM_PARAM_TYPES due to C++'s lack of designated initializers.  */
 
 static const struct
 {
@@ -202,7 +202,7 @@ static SCM initial_value_keyword;
 static SCM auto_keyword;
 
 static int pascm_is_valid (param_smob *);
-static const char *pascm_param_type_name (enum param_types type);
+static const char *pascm_param_type_name (enum scm_param_types type);
 static SCM pascm_param_value (const setting &var, int arg_pos,
                              const char *func_name);
 \f
@@ -612,7 +612,7 @@ pascm_valid_parameter_type_p (int param_type)
 /* Return PARAM_TYPE as a string.  */
 
 static const char *
-pascm_param_type_name (enum param_types param_type)
+pascm_param_type_name (enum scm_param_types param_type)
 {
   int i;
 
@@ -1038,7 +1038,7 @@ gdbscm_make_parameter (SCM name_scm, SCM rest)
   p_smob->name = name;
   p_smob->cmd_class = (enum command_class) cmd_class;
   p_smob->pname
-    = pascm_param_type_name (static_cast<enum param_types> (param_type));
+    = pascm_param_type_name (static_cast<enum scm_param_types> (param_type));
   p_smob->type = param_to_var[param_type].type;
   p_smob->extra_literals = param_to_var[param_type].extra_literals;
   p_smob->doc = doc;
index 4ef13f8b24cd88d3881165baceaeb7883f846a5e..b9828de11626fc9e99d4a623b5a09eaa484fc42f 100644 (file)
@@ -30,7 +30,7 @@
 
 /* Python parameter types as in PARM_CONSTANTS below.  */
 
-enum param_types
+enum py_param_types
 {
   param_boolean,
   param_auto_boolean,