From 025ac41482555f6273dee37988734a9f88633dbc Mon Sep 17 00:00:00 2001 From: Pierre Muller Date: Thu, 8 Jan 2015 08:53:26 +0100 Subject: [PATCH] Set language for C++ special symbols. The special handling of C++ special symbol generates symbols that have no language. Those symbols cannot be displayed correctly in the backtrace stack. See https://sourceware.org/bugzilla/show_bug.cgi?id=17811 for details and examples in C++ and pascal language. The patch below fixes this issue, by setting language of new symbol before special handling of special C++ symbols. 2015-01-07 Pierre Muller PR symtab/17811 * stabsread.c (define_symbol): Set language for C++ special symbols. --- gdb/ChangeLog | 5 +++++ gdb/stabsread.c | 5 +++-- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/gdb/ChangeLog b/gdb/ChangeLog index b1889883e4..2fa7422d5a 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,8 @@ +2015-01-07 Pierre Muller + + PR symtab/17811 + * stabsread.c (define_symbol): Set language for C++ special symbols. + 2015-01-07 Patrick Palka * inflow.c (initial_gdb_ttystate): Tweak comment. diff --git a/gdb/stabsread.c b/gdb/stabsread.c index 212c7fac51..6862c52522 100644 --- a/gdb/stabsread.c +++ b/gdb/stabsread.c @@ -675,6 +675,9 @@ define_symbol (CORE_ADDR valu, char *string, int desc, int type, SYMBOL_LINE (sym) = 0; /* unknown */ } + SYMBOL_SET_LANGUAGE (sym, current_subfile->language, + &objfile->objfile_obstack); + if (is_cplus_marker (string[0])) { /* Special GNU C++ names. */ @@ -710,8 +713,6 @@ define_symbol (CORE_ADDR valu, char *string, int desc, int type, else { normal: - SYMBOL_SET_LANGUAGE (sym, current_subfile->language, - &objfile->objfile_obstack); if (SYMBOL_LANGUAGE (sym) == language_cplus) { char *name = alloca (p - string + 1);