From bad5c02618a27f8f1c5c0858c323dba060aed905 Mon Sep 17 00:00:00 2001 From: Christian Biesinger Date: Mon, 7 Oct 2019 13:23:34 -0500 Subject: Move declaration of vtbl_ptr_name to the header. There are conflicting comments about whether this was introduced in GCC 2.4.5 or GCC 2.6 and I don't know which one is correct... gdb/ChangeLog: 2019-10-07 Christian Biesinger * c-lang.h (vtbl_ptr_name): Declare. * cp-valprint.c (vtbl_ptr_name): Remove "extern" now that we get it from the header. * stabsread.c (define_symbol): Remove declaration of vtbl_ptr_name. --- gdb/ChangeLog | 7 +++++++ gdb/c-lang.h | 6 ++++++ gdb/cp-valprint.c | 2 +- gdb/stabsread.c | 6 +----- 4 files changed, 15 insertions(+), 6 deletions(-) (limited to 'gdb') diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 0f79f2d..3912429 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,5 +1,12 @@ 2019-10-07 Christian Biesinger + * c-lang.h (vtbl_ptr_name): Declare. + * cp-valprint.c (vtbl_ptr_name): Remove "extern" now that we get + it from the header. + * stabsread.c (define_symbol): Remove declaration of vtbl_ptr_name. + +2019-10-07 Christian Biesinger + * charset.c (your_gdb_wchar_t_is_bogus): Replace with a gdb_static_assert. diff --git a/gdb/c-lang.h b/gdb/c-lang.h index d95df54..de291fa 100644 --- a/gdb/c-lang.h +++ b/gdb/c-lang.h @@ -144,6 +144,12 @@ extern void cp_print_value_fields_rtti (struct type *, const struct value_print_options *, struct type **, int); +/* gcc-2.6 or later (when using -fvtable-thunks) + emits a unique named type for a vtable entry. + Some gdb code depends on that specific name. */ + +extern const char vtbl_ptr_name[]; + extern int cp_is_vtbl_ptr_type (struct type *); extern int cp_is_vtbl_member (struct type *); diff --git a/gdb/cp-valprint.c b/gdb/cp-valprint.c index e73b0e2..04be4dc 100644 --- a/gdb/cp-valprint.c +++ b/gdb/cp-valprint.c @@ -56,7 +56,7 @@ static void cp_print_value (struct type *, struct type *, /* GCC versions after 2.4.5 use this. */ -extern const char vtbl_ptr_name[] = "__vtbl_ptr_type"; +const char vtbl_ptr_name[] = "__vtbl_ptr_type"; /* Return truth value for assertion that TYPE is of the type "pointer to virtual function". */ diff --git a/gdb/stabsread.c b/gdb/stabsread.c index da455da..fa2521f 100644 --- a/gdb/stabsread.c +++ b/gdb/stabsread.c @@ -42,6 +42,7 @@ #include "gdb-demangle.h" #include "language.h" #include "target-float.h" +#include "c-lang.h" #include "cp-abi.h" #include "cp-support.h" #include @@ -1259,11 +1260,6 @@ define_symbol (CORE_ADDR valu, const char *string, int desc, int type, if (TYPE_NAME (SYMBOL_TYPE (sym)) == NULL) { - /* gcc-2.6 or later (when using -fvtable-thunks) - emits a unique named type for a vtable entry. - Some gdb code depends on that specific name. */ - extern const char vtbl_ptr_name[]; - if ((TYPE_CODE (SYMBOL_TYPE (sym)) == TYPE_CODE_PTR && strcmp (SYMBOL_LINKAGE_NAME (sym), vtbl_ptr_name)) || TYPE_CODE (SYMBOL_TYPE (sym)) == TYPE_CODE_FUNC) -- cgit v1.1