diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 1097608991..42e60aaed0 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,10 @@ +2013-08-07 Tom Tromey + + * symfile.c (set_initial_language): Look up "main" symbol + and use its language. + * symtab.c (find_main_filename): Remove. + * symtab.h (find_main_filename): Remove. + 2013-08-07 Tom Tromey * dwarf2read.c (recursively_compute_inclusions): Add diff --git a/gdb/symfile.c b/gdb/symfile.c index 3328648755..3dd550927f 100644 --- a/gdb/symfile.c +++ b/gdb/symfile.c @@ -1612,11 +1612,11 @@ set_initial_language (void) lang = language_of_main; else { - const char *filename; + char *name = main_name (); + struct symbol *sym = lookup_symbol (name, NULL, VAR_DOMAIN, NULL); - filename = find_main_filename (); - if (filename != NULL) - lang = deduce_language_from_filename (filename); + if (sym != NULL) + lang = SYMBOL_LANGUAGE (sym); } if (lang == language_unknown) diff --git a/gdb/symtab.c b/gdb/symtab.c index 8076fe5bb3..3bcec238eb 100644 --- a/gdb/symtab.c +++ b/gdb/symtab.c @@ -1949,29 +1949,6 @@ basic_lookup_transparent_type (const char *name) return (struct type *) 0; } -/* Find the name of the file containing main(). */ -/* FIXME: What about languages without main() or specially linked - executables that have no main() ? */ - -const char * -find_main_filename (void) -{ - struct objfile *objfile; - char *name = main_name (); - - ALL_OBJFILES (objfile) - { - const char *result; - - if (!objfile->sf) - continue; - result = objfile->sf->qf->find_symbol_file (objfile, name); - if (result) - return result; - } - return (NULL); -} - /* Search BLOCK for symbol NAME in DOMAIN. Note that if NAME is the demangled form of a C++ symbol, we will fail diff --git a/gdb/symtab.h b/gdb/symtab.h index 6d81507f57..ccf4a4f300 100644 --- a/gdb/symtab.h +++ b/gdb/symtab.h @@ -1252,8 +1252,6 @@ extern VEC (char_ptr) *make_source_files_completion_list (const char *, int matching_obj_sections (struct obj_section *, struct obj_section *); -extern const char *find_main_filename (void); - extern struct symtab *find_line_symtab (struct symtab *, int, int *, int *); extern struct symtab_and_line find_function_start_sal (struct symbol *sym, diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog index 160a27a87c..fb21761fe7 100644 --- a/gdb/testsuite/ChangeLog +++ b/gdb/testsuite/ChangeLog @@ -1,3 +1,7 @@ +2013-08-07 Tom Tromey + + * gdb.base/maint.exp: Allow zero symtabs to be expanded. + 2013-08-07 Tom Tromey * gdb.dwarf2/dwz.exp: New file. diff --git a/gdb/testsuite/gdb.base/maint.exp b/gdb/testsuite/gdb.base/maint.exp index 7057ac7f56..3093aae32c 100644 --- a/gdb/testsuite/gdb.base/maint.exp +++ b/gdb/testsuite/gdb.base/maint.exp @@ -72,9 +72,10 @@ gdb_test "maint print registers" "Name.*Nr.*Rel.*Offset.*Size.*Type.*" gdb_test_no_output "mt set per on" "mt set per on for expand-symtabs" gdb_test_multiple "mt expand-symtabs $subdir/break\[.\]c$" \ "mt expand-symtabs" { - -re "#primary symtabs: (1|2) \\(\[+\](1|2)\\),.*$gdb_prompt $" { - # This should expand one or at most two primary symtabs. - # "Normally" it will expand just the one for break.c, but if the + -re "#primary symtabs: (1|2) \\(\[+\](0|1|2)\\),.*$gdb_prompt $" { + # This should expand at most two primary symtabs. + # "Normally" it will not expand any, because the symtab + # holding "main" will already have been expanded, but if the # file is compiled with -fdebug-types-section then a second primary # symtab for break.c will be created for any types. pass "mt expand-symtabs"