From 6a93ab8af49be41a44af1b4651e9ab2ebc6d2f77 Mon Sep 17 00:00:00 2001 From: Tom de Vries Date: Mon, 14 Aug 2023 18:32:29 +0200 Subject: [PATCH] [gdb/build] Fix enum param_types odr violation 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 PR build/22395 Bug: https://sourceware.org/bugzilla/show_bug.cgi?id=22395 --- gdb/guile/scm-param.c | 10 +++++----- gdb/python/py-param.c | 2 +- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/gdb/guile/scm-param.c b/gdb/guile/scm-param.c index d49cc3cebcb..3a9e1c3dc18 100644 --- a/gdb/guile/scm-param.c +++ b/gdb/guile/scm-param.c @@ -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); @@ -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 (param_type)); + = pascm_param_type_name (static_cast (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; diff --git a/gdb/python/py-param.c b/gdb/python/py-param.c index 4ef13f8b24c..b9828de1162 100644 --- a/gdb/python/py-param.c +++ b/gdb/python/py-param.c @@ -30,7 +30,7 @@ /* Python parameter types as in PARM_CONSTANTS below. */ -enum param_types +enum py_param_types { param_boolean, param_auto_boolean, -- 2.30.2