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  <muller@sourceware.org>

	PR symtab/17811
	* stabsread.c (define_symbol): Set language for C++ special symbols.
This commit is contained in:
Pierre Muller 2015-01-08 08:53:26 +01:00
parent acc018ac03
commit 025ac41482
2 changed files with 8 additions and 2 deletions

View File

@ -1,3 +1,8 @@
2015-01-07 Pierre Muller <muller@sourceware.org>
PR symtab/17811
* stabsread.c (define_symbol): Set language for C++ special symbols.
2015-01-07 Patrick Palka <patrick@parcs.ath.cx>
* inflow.c (initial_gdb_ttystate): Tweak comment.

View File

@ -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);