Fix initial language detection with -readnow.
	* dwarf2read.c (dw2_find_symbol_file): Handle OBJF_READNOW case.
	* symfile.h (struct quick_symbol_functions): State find_symbol_file
	searches only for global symbols.

gdb/testsuite/
	Fix initial language detection with -readnow.
	* gdb.cp/readnow-language.cc: New file.
	* gdb.cp/readnow-language.exp: New file.
This commit is contained in:
Jan Kratochvil 2011-10-09 18:37:27 +00:00
parent a73d2258a7
commit 741f5e3c63
6 changed files with 78 additions and 2 deletions

View File

@ -1,3 +1,10 @@
2011-10-09 Jan Kratochvil <jan.kratochvil@redhat.com>
Fix initial language detection with -readnow.
* dwarf2read.c (dw2_find_symbol_file): Handle OBJF_READNOW case.
* symfile.h (struct quick_symbol_functions): State find_symbol_file
searches only for global symbols.
2011-10-09 Jan Kratochvil <jan.kratochvil@redhat.com>
Fix printed anonymous struct name.

View File

@ -2650,7 +2650,21 @@ dw2_find_symbol_file (struct objfile *objfile, const char *name)
/* index_table is NULL if OBJF_READNOW. */
if (!dwarf2_per_objfile->index_table)
return NULL;
{
struct symtab *s;
ALL_OBJFILE_SYMTABS (objfile, s)
if (s->primary)
{
struct blockvector *bv = BLOCKVECTOR (s);
const struct block *block = BLOCKVECTOR_BLOCK (bv, GLOBAL_BLOCK);
struct symbol *sym = lookup_block_symbol (block, name, VAR_DOMAIN);
if (sym)
return sym->symtab->filename;
}
return NULL;
}
if (!find_slot_in_mapped_hash (dwarf2_per_objfile->index_table,
name, &vec))

View File

@ -222,7 +222,7 @@ struct quick_symbol_functions
void (*expand_symtabs_with_filename) (struct objfile *objfile,
const char *filename);
/* Return the file name of the file holding the symbol in OBJFILE
/* Return the file name of the file holding the global symbol in OBJFILE
named NAME. If no such symbol exists in OBJFILE, return NULL. */
const char *(*find_symbol_file) (struct objfile *objfile, const char *name);

View File

@ -1,3 +1,9 @@
2011-10-09 Jan Kratochvil <jan.kratochvil@redhat.com>
Fix initial language detection with -readnow.
* gdb.cp/readnow-language.cc: New file.
* gdb.cp/readnow-language.exp: New file.
2011-10-09 Jan Kratochvil <jan.kratochvil@redhat.com>
Fix printed anonymous struct name.

View File

@ -0,0 +1,21 @@
/* This testcase is part of GDB, the GNU debugger.
Copyright 2011 Free Software Foundation, Inc.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. */
int
main ()
{
}

View File

@ -0,0 +1,28 @@
# Copyright 2011 Free Software Foundation, Inc.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
set testfile readnow-language
set srcfile ${testfile}.cc
set executable ${testfile}
if {[build_executable ${testfile}.exp $executable ${testfile}.cc {c++ debug}] == -1} {
return -1
}
set old_gdbflags $GDBFLAGS
set GDBFLAGS "$GDBFLAGS -readnow"
clean_restart $executable
set GDBFLAGS $old_gdbflags
gdb_test "show language" {The current source language is "auto; currently c\+\+"\.}