From: Christian Biesinger Date: Mon, 7 Oct 2019 18:23:34 +0000 (-0500) Subject: Move declaration of vtbl_ptr_name to the header. X-Git-Url: http://git.efficios.com/?p=deliverable%2Fbinutils-gdb.git;a=commitdiff_plain;h=bad5c02618a27f8f1c5c0858c323dba060aed905 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. --- diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 0f79f2d62b..3912429dcf 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,10 @@ +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 diff --git a/gdb/c-lang.h b/gdb/c-lang.h index d95df54c83..de291fa8f1 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 e73b0e27fa..04be4dc83b 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 da455da365..fa2521f1ca 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)