summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gdb/ChangeLog7
-rw-r--r--gdb/symtab.c12
-rw-r--r--gdb/testsuite/ChangeLog5
-rw-r--r--gdb/testsuite/gdb.dwarf2/dw2-case-insensitive.exp4
4 files changed, 20 insertions, 8 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 413c61243c4..e82799a7d29 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 7a77bcfb183..f8c755fdab2 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 5b2172543a8..b532ed27eb9 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 b15dcafa005..328facd64ea 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>}