[binutils-gdb] Use scoped_switch_to_sym_language_if_auto in symtab.c to switch language.

Philippe Waroquiers philippe@sourceware.org
Tue Nov 20 21:58:00 GMT 2018


https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=43d397ca8f097e8f0ab0c245afeaa22b8da7ac52

commit 43d397ca8f097e8f0ab0c245afeaa22b8da7ac52
Author: Philippe Waroquiers <philippe.waroquiers@skynet.be>
Date:   Sun Oct 28 13:57:51 2018 +0100

    Use scoped_switch_to_sym_language_if_auto in symtab.c to switch language.
    
    Use scoped_switch_to_sym_language_if_auto in treg_matches_sym_type_name to
    replace the local logic that was doing the same as the new class
    scoped_switch_to_sym_language_if_auto.
    
    Use scoped_switch_to_sym_language_if_auto inside print_symbol_info, so
    that symbol information is printed in the symbol language when
    language mode is auto.
    This modifies the behaviour of the test dw2-case-insensitive.exp,
    as the function FUNC_lang is now printed with the Fortran syntax
    (as declared in the .S file).
    
    gdb/ChangeLog
    2018-11-20  Philippe Waroquiers  <philippe.waroquiers@skynet.be>
    
    	* symtab.c (treg_matches_sym_type_name): Use
    	scoped_switch_to_sym_language_if_auto instead of local logic.
    	(print_symbol_info): Use scoped_switch_to_sym_language_if_auto
    	to switch to SYM language when language mode is auto.
    
    gdb/testsuite/ChangeLog
    2018-11-20  Philippe Waroquiers  <philippe.waroquiers@skynet.be>
    
    	* gdb.dwarf2/dw2-case-insensitive.exp: Update due to auto switch to
    	FUNC_lang language syntax.

Diff:
---
 gdb/ChangeLog                                     |  7 +++++++
 gdb/symtab.c                                      | 12 +++++-------
 gdb/testsuite/ChangeLog                           |  5 +++++
 gdb/testsuite/gdb.dwarf2/dw2-case-insensitive.exp |  4 +++-
 4 files changed, 20 insertions(+), 8 deletions(-)

diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 413c612..e82799a 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,5 +1,12 @@
 2018-11-20  Philippe Waroquiers  <philippe.waroquiers@skynet.be>
 
+	* symtab.c (treg_matches_sym_type_name): Use
+	scoped_switch_to_sym_language_if_auto instead of local logic.
+	(print_symbol_info): Use scoped_switch_to_sym_language_if_auto
+	to switch to SYM language when language mode is auto.
+
+2018-11-20  Philippe Waroquiers  <philippe.waroquiers@skynet.be>
+
 	* language.h (scoped_switch_to_sym_language_if_auto): New class.
 
 2018-11-20  Philippe Waroquiers  <philippe.waroquiers@skynet.be>
diff --git a/gdb/symtab.c b/gdb/symtab.c
index 7a77bcf..f8c755f 100644
--- a/gdb/symtab.c
+++ b/gdb/symtab.c
@@ -4288,15 +4288,12 @@ treg_matches_sym_type_name (const compiled_regex &treg,
   if (sym_type == NULL)
     return false;
 
-  if (language_mode == language_mode_auto)
-    {
-      scoped_restore_current_language l;
+  {
+    scoped_switch_to_sym_language_if_auto l (sym);
 
-      set_language (SYMBOL_LANGUAGE (sym));
-      printed_sym_type_name = type_to_string (sym_type);
-    }
-  else
     printed_sym_type_name = type_to_string (sym_type);
+  }
+
 
   if (symbol_lookup_debug > 1)
     {
@@ -4600,6 +4597,7 @@ print_symbol_info (enum search_domain kind,
 		   struct symbol *sym,
 		   int block, const char *last)
 {
+  scoped_switch_to_sym_language_if_auto l (sym);
   struct symtab *s = symbol_symtab (sym);
 
   if (last != NULL)
diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog
index 5b21725..b532ed2 100644
--- a/gdb/testsuite/ChangeLog
+++ b/gdb/testsuite/ChangeLog
@@ -1,5 +1,10 @@
 2018-11-20  Philippe Waroquiers  <philippe.waroquiers@skynet.be>
 
+	* gdb.dwarf2/dw2-case-insensitive.exp: Update due to auto switch to
+	FUNC_lang language syntax.
+
+2018-11-20  Philippe Waroquiers  <philippe.waroquiers@skynet.be>
+
 	* gdb.base/info_minsym.c: New file.
 	* gdb.base/info_minsym.exp: New file.
 
diff --git a/gdb/testsuite/gdb.dwarf2/dw2-case-insensitive.exp b/gdb/testsuite/gdb.dwarf2/dw2-case-insensitive.exp
index b15dcaf..328facd 100644
--- a/gdb/testsuite/gdb.dwarf2/dw2-case-insensitive.exp
+++ b/gdb/testsuite/gdb.dwarf2/dw2-case-insensitive.exp
@@ -42,8 +42,10 @@ gdb_test "info functions fUnC_lang" \
 gdb_test "set case-sensitive off" {warning: the current case sensitivity setting does not match the language\.}
 
 # The dot-leading symbol is for ppc64 function descriptors.
+# Note that info functions gives the FUNC_lang result using the fortran syntax
+# as specified in dw-case-insensitive-debug.S DW_AT_language.
 gdb_test "info functions fUnC_lang" \
-	 "All functions matching regular expression \"fUnC_lang\":\[\r\n\]+File file1.txt:\r\n\tfoo FUNC_lang\\(void\\);(\r\n\r\nNon-debugging symbols:\r\n0x\[0-9a-f\]+ +\\.FUNC_lang)?" \
+	 "All functions matching regular expression \"fUnC_lang\":\[\r\n\]+File file1.txt:\r\n\tfoo FUNC_lang\\(\\);(\r\n\r\nNon-debugging symbols:\r\n0x\[0-9a-f\]+ +\\.FUNC_lang)?" \
 	 "regexp case-sensitive off"
 
 gdb_test "p fuNC_lang" { = {foo \(void\)} 0x[0-9a-f]+ <FUNC_lang>}



More information about the Gdb-cvs mailing list