aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gdb/ChangeLog6
-rw-r--r--gdb/NEWS3
-rw-r--r--gdb/doc/ChangeLog5
-rw-r--r--gdb/doc/gdb.texinfo23
-rw-r--r--gdb/symtab.c5
-rw-r--r--gdb/testsuite/ChangeLog11
-rw-r--r--gdb/testsuite/gdb.ada/info_types.exp2
-rw-r--r--gdb/testsuite/gdb.base/completion.exp2
-rw-r--r--gdb/testsuite/gdb.base/included.exp2
-rw-r--r--gdb/testsuite/gdb.cp/cp-relocate.exp4
-rw-r--r--gdb/testsuite/gdb.cp/cplusfuncs.exp2
-rw-r--r--gdb/testsuite/gdb.cp/namespace.exp4
-rw-r--r--gdb/testsuite/gdb.dwarf2/dw2-case-insensitive.exp2
13 files changed, 53 insertions, 18 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index b86bb7f..82b803d 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,9 @@
+2018-04-13 Andreas Arnez <arnez@linux.vnet.ibm.com>
+
+ * symtab.c (print_symbol_info): Precede the symbol definition by
+ the line number when available.
+ * NEWS: Advertise this enhancement.
+
2018-04-13 Markus Metzger <markus.t.metzger@intel.com>
* NEWS (New options): announce set/show record btrace cpu.
diff --git a/gdb/NEWS b/gdb/NEWS
index ec0dd23..1ab1145 100644
--- a/gdb/NEWS
+++ b/gdb/NEWS
@@ -3,6 +3,9 @@
*** Changes since GDB 8.1
+* The commands 'info variables/functions/types' now show the source line
+ numbers of symbol definitions when available.
+
* 'info proc' now works on running processes on FreeBSD systems and core
files created on FreeBSD systems.
diff --git a/gdb/doc/ChangeLog b/gdb/doc/ChangeLog
index d21288b..83d4878 100644
--- a/gdb/doc/ChangeLog
+++ b/gdb/doc/ChangeLog
@@ -1,3 +1,8 @@
+2018-04-13 Andreas Arnez <arnez@linux.vnet.ibm.com>
+
+ * gdb.texinfo (Symbols): Mention the fact that "info
+ variables/functions/types" show source files and line numbers.
+
2018-04-13 Markus Metzger <markus.t.metzger@intel.com>
* gdb.texinfo: Document set/show record btrace cpu.
diff --git a/gdb/doc/gdb.texinfo b/gdb/doc/gdb.texinfo
index 5a83619..28f083f 100644
--- a/gdb/doc/gdb.texinfo
+++ b/gdb/doc/gdb.texinfo
@@ -17585,7 +17585,7 @@ name is @code{value}.
This command differs from @code{ptype} in two ways: first, like
@code{whatis}, it does not print a detailed description; second, it
-lists all source files where a type is defined.
+lists all source files and line numbers where a type is defined.
@kindex info type-printers
@item info type-printers
@@ -17663,24 +17663,29 @@ have already been read, and files whose symbols will be read when needed.
@kindex info functions
@item info functions
Print the names and data types of all defined functions.
+Similarly to @samp{info types}, this command groups its output by source
+files and annotates each function definition with its source line
+number.
@item info functions @var{regexp}
-Print the names and data types of all defined functions
-whose names contain a match for regular expression @var{regexp}.
-Thus, @samp{info fun step} finds all functions whose names
-include @code{step}; @samp{info fun ^step} finds those whose names
-start with @code{step}. If a function name contains characters
-that conflict with the regular expression language (e.g.@:
+Like @samp{info functions}, but only print the names and data types of
+functions whose names contain a match for regular expression
+@var{regexp}. Thus, @samp{info fun step} finds all functions whose
+names include @code{step}; @samp{info fun ^step} finds those whose names
+start with @code{step}. If a function name contains characters that
+conflict with the regular expression language (e.g.@:
@samp{operator*()}), they may be quoted with a backslash.
@kindex info variables
@item info variables
Print the names and data types of all variables that are defined
outside of functions (i.e.@: excluding local variables).
+The printed variables are grouped by source files and annotated with
+their respective source line numbers.
@item info variables @var{regexp}
-Print the names and data types of all variables (except for local
-variables) whose names contain a match for regular expression
+Like @kbd{info variables}, but only print the names and data types of
+non-local variables whose names contain a match for regular expression
@var{regexp}.
@kindex info classes
diff --git a/gdb/symtab.c b/gdb/symtab.c
index 2b1f955..f66b6f0 100644
--- a/gdb/symtab.c
+++ b/gdb/symtab.c
@@ -4517,6 +4517,11 @@ print_symbol_info (enum search_domain kind,
fputs_filtered (":\n", gdb_stdout);
}
+ if (SYMBOL_LINE (sym) != 0)
+ printf_filtered ("%d:\t", SYMBOL_LINE (sym));
+ else
+ puts_filtered ("\t");
+
if (kind != TYPES_DOMAIN && block == STATIC_BLOCK)
printf_filtered ("static ");
diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog
index 47fa4cf..ed464a1 100644
--- a/gdb/testsuite/ChangeLog
+++ b/gdb/testsuite/ChangeLog
@@ -1,3 +1,14 @@
+2018-04-13 Andreas Arnez <arnez@linux.vnet.ibm.com>
+
+ * gdb.ada/info_types.exp: Adjust expected output to the line
+ numbers now printed by "info var/func/type".
+ * gdb.base/completion.exp: Likewise.
+ * gdb.base/included.exp: Likewise.
+ * gdb.cp/cp-relocate.exp: Likewise.
+ * gdb.cp/cplusfuncs.exp: Likewise.
+ * gdb.cp/namespace.exp: Likewise.
+ * gdb.dwarf2/dw2-case-insensitive.exp: Likewise.
+
2018-04-13 Markus Metzger <markus.t.metzger@intel.com>
* gdb.btrace/cpu.exp: New.
diff --git a/gdb/testsuite/gdb.ada/info_types.exp b/gdb/testsuite/gdb.ada/info_types.exp
index 7bc74fd..326c25c 100644
--- a/gdb/testsuite/gdb.ada/info_types.exp
+++ b/gdb/testsuite/gdb.ada/info_types.exp
@@ -27,5 +27,5 @@ gdb_test "set lang ada" ""
set eol "\[\r\n\]+"
gdb_test "info types new_integer_type" \
- "All types matching regular expression \"new_integer_type\":${eol}File .*info_types.c:${eol}int"
+ "All types matching regular expression \"new_integer_type\":${eol}File .*info_types.c:${eol}.*\tint"
diff --git a/gdb/testsuite/gdb.base/completion.exp b/gdb/testsuite/gdb.base/completion.exp
index b0d11d2..cb88918 100644
--- a/gdb/testsuite/gdb.base/completion.exp
+++ b/gdb/testsuite/gdb.base/completion.exp
@@ -749,7 +749,7 @@ gdb_test_multiple "" "$test" {
-re "marker1.*$gdb_prompt " {
send_gdb "\n"
gdb_test_multiple "" "$test" {
- -re "All functions matching regular expression \"marker\":.*File.*break1.c:\r\nint marker1\\((void|)\\);\r\nint marker2\\(int\\).*marker3\\(char.*char.*\\).*marker4\\(long( int)?\\);.*$gdb_prompt $" {
+ -re "All functions matching regular expression \"marker\":.*File.*break1.c:.*\tint marker1\\((void|)\\);\r\n.*:\tint marker2\\(int\\).*marker3\\(char.*char.*\\).*marker4\\(long( int)?\\);.*$gdb_prompt $" {
pass "$test"
}
}
diff --git a/gdb/testsuite/gdb.base/included.exp b/gdb/testsuite/gdb.base/included.exp
index b79e7de..65e694d 100644
--- a/gdb/testsuite/gdb.base/included.exp
+++ b/gdb/testsuite/gdb.base/included.exp
@@ -33,4 +33,4 @@ gdb_test "ptype integer" "type = int"
# We should report that integer comes from the header file.
if { $non_dwarf } { setup_xfail *-*-* }
-gdb_test "info variables integer" "\r\nFile \[^\r\n\]*/${subdir}/${testfile}.h:\r\nint integer;"
+gdb_test "info variables integer" "\r\nFile \[^\r\n\]*/${subdir}/${testfile}.h:\r\n.*\tint integer;"
diff --git a/gdb/testsuite/gdb.cp/cp-relocate.exp b/gdb/testsuite/gdb.cp/cp-relocate.exp
index e48eb8c..63d2ad4 100644
--- a/gdb/testsuite/gdb.cp/cp-relocate.exp
+++ b/gdb/testsuite/gdb.cp/cp-relocate.exp
@@ -56,11 +56,11 @@ gdb_file_cmd ${binfile}
set func1_name ""
set func2_name ""
gdb_test_multiple "info functions func<.>" "info functions" {
- -re "\r\nint (\[^\r\]*func<1>\[^\r]*);" {
+ -re "\tint (\[^\r\]*func<1>\[^\r]*);" {
set func1_name $expect_out(1,string)
exp_continue
}
- -re "\r\nint (\[^\r\]*func<2>\[^\r]*);" {
+ -re "\tint (\[^\r\]*func<2>\[^\r]*);" {
set func2_name $expect_out(1,string)
exp_continue
}
diff --git a/gdb/testsuite/gdb.cp/cplusfuncs.exp b/gdb/testsuite/gdb.cp/cplusfuncs.exp
index 6f6b425..f80790c 100644
--- a/gdb/testsuite/gdb.cp/cplusfuncs.exp
+++ b/gdb/testsuite/gdb.cp/cplusfuncs.exp
@@ -292,7 +292,7 @@ proc info_func_regexp { name demangled } {
regsub {\\\(void\\\)} $demangled {\(\)} demangled
gdb_test "info function $name" \
- "File .*:\r\n(class|)${demangled}.*" \
+ "File .*:\t(class|)${demangled}.*" \
"info function for \"$name\""
}
diff --git a/gdb/testsuite/gdb.cp/namespace.exp b/gdb/testsuite/gdb.cp/namespace.exp
index 958ee0e..b0511b1 100644
--- a/gdb/testsuite/gdb.cp/namespace.exp
+++ b/gdb/testsuite/gdb.cp/namespace.exp
@@ -95,10 +95,10 @@ gdb_test_multiple "ptype ina" "ptype ina" {
setup_xfail hppa*-*-*11* CLLbs14869
gdb_test_multiple "info func xyzq" "info func xyzq" {
- -re "All functions.*File.*namespace.cc:\r\nint AAA::A_xyzq\\(int\\);\r\nint BBB::B_xyzq\\(int\\);\r\nchar AAA::xyzq\\(char\\);\r\nchar BBB::xyzq\\(char\\);\r\nchar BBB::CCC::xyzq\\(char\\);\r\nchar BBB::Class::xyzq\\(char\\);\r\n$gdb_prompt $" {
+ -re "All functions.*File.*namespace.cc:\r\n.*\tint AAA::A_xyzq\\(int\\);\r\n.*\tint BBB::B_xyzq\\(int\\);\r\n.*\tchar AAA::xyzq\\(char\\);\r\n.*\tchar BBB::xyzq\\(char\\);\r\n.*\tchar BBB::CCC::xyzq\\(char\\);\r\n.*\tchar BBB::Class::xyzq\\(char\\);\r\n$gdb_prompt $" {
pass "info func xyzq"
}
- -re "All functions.*File.*namespace.cc:\r\nint AAA::A_xyzq\\(int\\);\r\nchar AAA::xyzq\\(char\\);\r\nint BBB::B_xyzq\\(int\\);\r\nchar BBB::CCC::xyzq\\(char\\);\r\nchar BBB::Class::xyzq\\(char\\);\r\nchar BBB::xyzq\\(char\\);\r\n$gdb_prompt $" {
+ -re "All functions.*File.*namespace.cc:\r\n.*\tint AAA::A_xyzq\\(int\\);\r\n.*\tchar AAA::xyzq\\(char\\);\r\n.*\tint BBB::B_xyzq\\(int\\);\r\n.*\tchar BBB::CCC::xyzq\\(char\\);\r\n.*\tchar BBB::Class::xyzq\\(char\\);\r\n.*\tchar BBB::xyzq\\(char\\);\r\n$gdb_prompt $" {
pass "info func xyzq"
}
}
diff --git a/gdb/testsuite/gdb.dwarf2/dw2-case-insensitive.exp b/gdb/testsuite/gdb.dwarf2/dw2-case-insensitive.exp
index f93a80b..b15dcaf 100644
--- a/gdb/testsuite/gdb.dwarf2/dw2-case-insensitive.exp
+++ b/gdb/testsuite/gdb.dwarf2/dw2-case-insensitive.exp
@@ -43,7 +43,7 @@ gdb_test "set case-sensitive off" {warning: the current case sensitivity setting
# The dot-leading symbol is for ppc64 function descriptors.
gdb_test "info functions fUnC_lang" \
- "All functions matching regular expression \"fUnC_lang\":\[\r\n\]+File file1.txt:\r\nfoo 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\\(void\\);(\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>}