* symmisc.c (dump_symtab): Switch the current language to
authorEli Zaretskii <eliz@gnu.org>
Sat, 23 May 2009 09:26:06 +0000 (09:26 +0000)
committerEli Zaretskii <eliz@gnu.org>
Sat, 23 May 2009 09:26:06 +0000 (09:26 +0000)
the language of the symtab we are dumping only if the symtab's
language is neither language_auto nor language_unknown.

* coffread.c (coff_symtab_read): Set language_minimal as the
language for the "_globals_" pseudo-file.

gdb/ChangeLog
gdb/coffread.c
gdb/symmisc.c

index c536c732f4d61aa9619982dddfdf8ddd46460122..1cfc3ee6618109463b8f46be851065e7d55d674a 100644 (file)
@@ -1,3 +1,12 @@
+2009-05-23  Eli Zaretskii  <eliz@gnu.org>
+
+       * symmisc.c (dump_symtab): Switch the current language to
+       the language of the symtab we are dumping only if the symtab's
+       language is neither language_auto nor language_unknown.
+
+       * coffread.c (coff_symtab_read): Set language_minimal as the
+       language for the "_globals_" pseudo-file.
+
 2009-05-22  Pedro Alves  <pedro@codesourcery.com>
 
        * target.h (struct section_table): Rename to ...
index 6059d68b4c8b0df5dfadcd442e1af2328c24ce34..c5b5722c7fae1a2dc5460768bd80a8b2ddfcc272 100644 (file)
@@ -758,6 +758,11 @@ coff_symtab_read (long symtab_offset, unsigned int nsyms,
            coff_end_symtab (objfile);
 
          coff_start_symtab ("_globals_");
+         /* coff_start_symtab will set the language of this symtab to
+            language_unknown, since such a ``file name'' is not
+            recognized.  Override that with the minimal language to
+            allow printing values in this symtab.  */
+         current_subfile->language = language_minimal;
          complete_symtab ("_globals_", 0, 0);
          /* done with all files, everything from here on out is globals */
        }
index 2e25c896df3d29ecd6d750a6b426b9d049a1aeb0..96fabc3c04c7001f404deaa021d5f2494e578ee7 100644 (file)
@@ -496,16 +496,23 @@ static void
 dump_symtab (struct objfile *objfile, struct symtab *symtab,
             struct ui_file *outfile)
 {
-  enum language saved_lang;
-
   /* Set the current language to the language of the symtab we're dumping
      because certain routines used during dump_symtab() use the current
-     language to print an image of the symbol.  We'll restore it later.  */
-  saved_lang = set_language (symtab->language);
+     language to print an image of the symbol.  We'll restore it later.
+     But use only real languages, not placeholders.  */
+  if (symtab->language != language_unknown
+      && symtab->language != language_auto)
+    {
+      enum language saved_lang;
+
+      saved_lang = set_language (symtab->language);
 
-  dump_symtab_1 (objfile, symtab, outfile);
+      dump_symtab_1 (objfile, symtab, outfile);
 
-  set_language (saved_lang);
+      set_language (saved_lang);
+    }
+  else
+    dump_symtab_1 (objfile, symtab, outfile);
 }
 
 void