* [PATCH 1/4] [gdb/build] Remove superfluous variable param_types in gdb/python/py-param.c
@ 2023-08-14 11:17 Tom de Vries
2023-08-14 11:17 ` [PATCH 2/4] [gdb/build] Fix enum param_types odr violation Tom de Vries
` (3 more replies)
0 siblings, 4 replies; 8+ messages in thread
From: Tom de Vries @ 2023-08-14 11:17 UTC (permalink / raw)
To: gdb-patches
In gdb/python/py-param.c we have:
...
enum param_types
{
...
}
param_types;
...
which declares both an enum param_types, and an unused variable param_types.
Fix this by removing the variable.
Tested on x86_64-linux.
---
gdb/python/py-param.c | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/gdb/python/py-param.c b/gdb/python/py-param.c
index 3bae2d44ad9..4ef13f8b24c 100644
--- a/gdb/python/py-param.c
+++ b/gdb/python/py-param.c
@@ -44,8 +44,7 @@ enum param_types
param_zuinteger,
param_zuinteger_unlimited,
param_enum,
-}
-param_types;
+};
/* Translation from Python parameters to GDB variable types. Keep in the
same order as PARAM_TYPES due to C++'s lack of designated initializers. */
base-commit: 3b23a5ea693deee60648c9a9e9d666d83549298e
--
2.35.3
^ permalink raw reply [flat|nested] 8+ messages in thread
* [PATCH 2/4] [gdb/build] Fix enum param_types odr violation
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 ` 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
` (2 subsequent siblings)
3 siblings, 1 reply; 8+ messages in thread
From: Tom de Vries @ 2023-08-14 11:17 UTC (permalink / raw)
To: gdb-patches
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.
---
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);
\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;
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.35.3
^ permalink raw reply [flat|nested] 8+ messages in thread
* [PATCH 3/4] [gdb/build] Fix struct token_and_value odr violation
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 11:17 ` Tom de Vries
2023-08-14 16:07 ` Tom Tromey
2023-08-14 11:17 ` [PATCH 4/4] [gdb/build] Fix struct token " Tom de Vries
2023-08-14 16:06 ` [PATCH 1/4] [gdb/build] Remove superfluous variable param_types in gdb/python/py-param.c Tom Tromey
3 siblings, 1 reply; 8+ messages in thread
From: Tom de Vries @ 2023-08-14 11:17 UTC (permalink / raw)
To: gdb-patches
When build gdb with -O2 -flto I run into:
...
gdb/c-exp.y:3003:8: warning: type 'struct token_and_value' violates the C++ \
One Definition Rule [-Wodr]
struct token_and_value
^
gdb/d-exp.y:1310:8: note: a different type is defined in another translation \
unit
struct token_and_value
^
...
Fix this by renaming to c_token_and_value and d_token_and_value.
Likewise in gdb/go-exp.y, renaming to go_token_and_value.
Tested on x86_64-linux.
---
gdb/c-exp.y | 8 ++++----
gdb/d-exp.y | 10 +++++-----
gdb/go-exp.y | 10 +++++-----
3 files changed, 14 insertions(+), 14 deletions(-)
diff --git a/gdb/c-exp.y b/gdb/c-exp.y
index a8c78414253..032ba25274e 100644
--- a/gdb/c-exp.y
+++ b/gdb/c-exp.y
@@ -3000,7 +3000,7 @@ lex_one_token (struct parser_state *par_state, bool *is_quoted_name)
}
/* An object of this type is pushed on a FIFO by the "outer" lexer. */
-struct token_and_value
+struct c_token_and_value
{
int token;
YYSTYPE value;
@@ -3008,7 +3008,7 @@ struct token_and_value
/* A FIFO of tokens that have been read but not yet returned to the
parser. */
-static std::vector<token_and_value> token_fifo;
+static std::vector<c_token_and_value> token_fifo;
/* Non-zero if the lexer should return tokens from the FIFO. */
static int popping;
@@ -3230,7 +3230,7 @@ classify_inner_name (struct parser_state *par_state,
static int
yylex (void)
{
- token_and_value current;
+ c_token_and_value current;
int first_was_coloncolon, last_was_coloncolon;
struct type *context_type = NULL;
int last_to_examine, next_to_examine, checkpoint;
@@ -3306,7 +3306,7 @@ yylex (void)
while (next_to_examine <= last_to_examine)
{
- token_and_value next;
+ c_token_and_value next;
next = token_fifo[next_to_examine];
++next_to_examine;
diff --git a/gdb/d-exp.y b/gdb/d-exp.y
index b0f2c0d1c10..8620a67e04a 100644
--- a/gdb/d-exp.y
+++ b/gdb/d-exp.y
@@ -1307,7 +1307,7 @@ lex_one_token (struct parser_state *par_state)
}
/* An object of this type is pushed on a FIFO by the "outer" lexer. */
-struct token_and_value
+struct d_token_and_value
{
int token;
YYSTYPE value;
@@ -1316,7 +1316,7 @@ struct token_and_value
/* A FIFO of tokens that have been read but not yet returned to the
parser. */
-static std::vector<token_and_value> token_fifo;
+static std::vector<d_token_and_value> token_fifo;
/* Non-zero if the lexer should return tokens from the FIFO. */
static int popping;
@@ -1404,7 +1404,7 @@ classify_inner_name (struct parser_state *par_state,
static int
yylex (void)
{
- token_and_value current;
+ d_token_and_value current;
int last_was_dot;
struct type *context_type = NULL;
int last_to_examine, next_to_examine, checkpoint;
@@ -1467,7 +1467,7 @@ yylex (void)
while (next_to_examine <= last_to_examine)
{
- token_and_value next;
+ d_token_and_value next;
next = token_fifo[next_to_examine];
++next_to_examine;
@@ -1531,7 +1531,7 @@ yylex (void)
while (next_to_examine <= last_to_examine)
{
- token_and_value next;
+ d_token_and_value next;
next = token_fifo[next_to_examine];
++next_to_examine;
diff --git a/gdb/go-exp.y b/gdb/go-exp.y
index 5c213f138f0..92abd95a159 100644
--- a/gdb/go-exp.y
+++ b/gdb/go-exp.y
@@ -1245,7 +1245,7 @@ lex_one_token (struct parser_state *par_state)
}
/* An object of this type is pushed on a FIFO by the "outer" lexer. */
-struct token_and_value
+struct go_token_and_value
{
int token;
YYSTYPE value;
@@ -1253,7 +1253,7 @@ struct token_and_value
/* A FIFO of tokens that have been read but not yet returned to the
parser. */
-static std::vector<token_and_value> token_fifo;
+static std::vector<go_token_and_value> token_fifo;
/* Non-zero if the lexer should return tokens from the FIFO. */
static int popping;
@@ -1445,11 +1445,11 @@ classify_name (struct parser_state *par_state, const struct block *block)
static int
yylex (void)
{
- token_and_value current, next;
+ go_token_and_value current, next;
if (popping && !token_fifo.empty ())
{
- token_and_value tv = token_fifo[0];
+ go_token_and_value tv = token_fifo[0];
token_fifo.erase (token_fifo.begin ());
yylval = tv.value;
/* There's no need to fall through to handle package.name
@@ -1474,7 +1474,7 @@ yylex (void)
if (next.token == '.')
{
- token_and_value name2;
+ go_token_and_value name2;
name2.token = lex_one_token (pstate);
name2.value = yylval;
--
2.35.3
^ permalink raw reply [flat|nested] 8+ messages in thread
* [PATCH 4/4] [gdb/build] Fix struct token odr violation
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 11:17 ` [PATCH 3/4] [gdb/build] Fix struct token_and_value " Tom de Vries
@ 2023-08-14 11:17 ` Tom de Vries
2023-08-14 16:08 ` 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
3 siblings, 1 reply; 8+ messages in thread
From: Tom de Vries @ 2023-08-14 11:17 UTC (permalink / raw)
To: gdb-patches
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
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH 1/4] [gdb/build] Remove superfluous variable param_types in gdb/python/py-param.c
2023-08-14 11:17 [PATCH 1/4] [gdb/build] Remove superfluous variable param_types in gdb/python/py-param.c Tom de Vries
` (2 preceding siblings ...)
2023-08-14 11:17 ` [PATCH 4/4] [gdb/build] Fix struct token " Tom de Vries
@ 2023-08-14 16:06 ` Tom Tromey
3 siblings, 0 replies; 8+ messages in thread
From: Tom Tromey @ 2023-08-14 16:06 UTC (permalink / raw)
To: Tom de Vries via Gdb-patches; +Cc: Tom de Vries
>>>>> "Tom" == Tom de Vries via Gdb-patches <gdb-patches@sourceware.org> writes:
Tom> In gdb/python/py-param.c we have:
Tom> ...
Tom> enum param_types
Tom> {
Tom> ...
Tom> }
Tom> param_types;
Tom> ...
Tom> which declares both an enum param_types, and an unused variable param_types.
Tom> Fix this by removing the variable.
Thank you.
Approved-By: Tom Tromey <tom@tromey.com>
Tom
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH 2/4] [gdb/build] Fix enum param_types odr violation
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
0 siblings, 0 replies; 8+ messages in thread
From: Tom Tromey @ 2023-08-14 16:07 UTC (permalink / raw)
To: Tom de Vries via Gdb-patches; +Cc: Tom de Vries
>>>>> "Tom" == Tom de Vries via Gdb-patches <gdb-patches@sourceware.org> writes:
Tom> When building gdb with -O2 -flto, I run into:
Tom> ...
Tom> gdb/guile/scm-param.c:121:6: warning: type 'param_types' violates the C++ \
Tom> One Definition Rule [-Wodr]
Tom> enum param_types
Tom> ^
Tom> gdb/python/py-param.c:33:6: note: an enum with different value name is \
Tom> defined in another translation unit
Tom> enum param_types
Tom> ^
Tom> ...
Tom> Fix this by renaming to enum scm_param_types and py_param_types.
Looks good, thanks for taking this on.
Perhaps the -Wodr patches should link to the ODR bug.
Approved-By: Tom Tromey <tom@tromey.com>
Tom
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH 3/4] [gdb/build] Fix struct token_and_value odr violation
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
0 siblings, 0 replies; 8+ messages in thread
From: Tom Tromey @ 2023-08-14 16:07 UTC (permalink / raw)
To: Tom de Vries via Gdb-patches; +Cc: Tom de Vries
>>>>> "Tom" == Tom de Vries via Gdb-patches <gdb-patches@sourceware.org> writes:
Tom> When build gdb with -O2 -flto I run into:
Tom> ...
Tom> gdb/c-exp.y:3003:8: warning: type 'struct token_and_value' violates the C++ \
Tom> One Definition Rule [-Wodr]
Tom> struct token_and_value
Tom> ^
Tom> gdb/d-exp.y:1310:8: note: a different type is defined in another translation \
Tom> unit
Tom> struct token_and_value
Tom> ^
Tom> ...
Tom> Fix this by renaming to c_token_and_value and d_token_and_value.
Thanks.
Approved-By: Tom Tromey <tom@tromey.com>
Tom
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH 4/4] [gdb/build] Fix struct token odr violation
2023-08-14 11:17 ` [PATCH 4/4] [gdb/build] Fix struct token " Tom de Vries
@ 2023-08-14 16:08 ` Tom Tromey
0 siblings, 0 replies; 8+ messages in thread
From: Tom Tromey @ 2023-08-14 16:08 UTC (permalink / raw)
To: Tom de Vries via Gdb-patches; +Cc: Tom de Vries
>>>>> "Tom" == Tom de Vries via Gdb-patches <gdb-patches@sourceware.org> writes:
Tom> When building gdb with -O2 -flto I run into:
Tom> ...
Tom> /data/vries/gdb/src/gdb/c-exp.y:2450:8: warning: type 'struct token' \
Tom> violates the C++ One Definition Rule [-Wodr]
Tom> struct token
Tom> ^
Tom> /data/vries/gdb/src/gdb/d-exp.y:939:8: note: a different type is defined in \
Tom> another translation unit
Tom> struct token
Tom> ^
Tom> ...
Tom> Fix this by renaming to c_token and d_token.
Looks good.
Approved-By: Tom Tromey <tom@tromey.com>
Tom
^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2023-08-14 16:08 UTC | newest]
Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
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 ` [PATCH 4/4] [gdb/build] Fix struct token " Tom de Vries
2023-08-14 16:08 ` 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
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).