diff options
-rw-r--r-- | gdb/ChangeLog | 7 | ||||
-rw-r--r-- | gdb/symfile.c | 8 | ||||
-rw-r--r-- | gdb/symtab.c | 23 | ||||
-rw-r--r-- | gdb/symtab.h | 2 | ||||
-rw-r--r-- | gdb/testsuite/ChangeLog | 4 | ||||
-rw-r--r-- | gdb/testsuite/gdb.base/maint.exp | 7 |
6 files changed, 19 insertions, 32 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 1097608..42e60aa 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,5 +1,12 @@ 2013-08-07 Tom Tromey <tromey@redhat.com> + * 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 <tromey@redhat.com> + * dwarf2read.c (recursively_compute_inclusions): Add "immediate_parent" argument. Set symtab's "user" field if not set. diff --git a/gdb/symfile.c b/gdb/symfile.c index 3328648..3dd5509 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 8076fe5..3bcec23 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 6d81507..ccf4a4f 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 160a27a..fb21761 100644 --- a/gdb/testsuite/ChangeLog +++ b/gdb/testsuite/ChangeLog @@ -1,5 +1,9 @@ 2013-08-07 Tom Tromey <tromey@redhat.com> + * gdb.base/maint.exp: Allow zero symtabs to be expanded. + +2013-08-07 Tom Tromey <tromey@redhat.com> + * gdb.dwarf2/dwz.exp: New file. 2013-08-02 Tom Tromey <tromey@redhat.com> diff --git a/gdb/testsuite/gdb.base/maint.exp b/gdb/testsuite/gdb.base/maint.exp index 7057ac7..3093aae 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" |