From: Andrew Burgess <andrew.burgess@embecosm.com>
To: gdb-patches@sourceware.org
Subject: [PATCH 3/4] gdb: add new -group-by-binary flag to info sources command
Date: Mon, 26 Apr 2021 18:07:02 +0100 [thread overview]
Message-ID: <760d52a0ea6ab8c2195d71feea794f0bec70a163.1619456691.git.andrew.burgess@embecosm.com> (raw)
In-Reply-To: <cover.1619456691.git.andrew.burgess@embecosm.com>
Currently the 'info sources' command lists all of the known source
files together, regardless of their source, e.g. here is a session
debugging a test application that makes use of a shared library:
(gdb) info sources
Source files for which symbols have been read in:
/tmp/info-sources/test.c, /usr/include/stdc-predef.h,
/tmp/info-sources/header.h, /tmp/info-sources/helper.c
Source files for which symbols will be read in on demand:
(gdb)
In this commit I add a new flag to the 'info sources' command,
'-group-by-binary'. When this flag is provided the results are
grouped by the binary file that uses that source file. Here's the
same session using the new flag:
(gdb) info sources -group-by-binary
/tmp/info-sources/test.x:
/tmp/info-sources/test.c, /usr/include/stdc-predef.h,
/tmp/info-sources/header.h
/lib64/ld-linux-x86-64.so.2:
(Full debug information has not yet been read for this file.)
system-supplied DSO at 0x7ffff7fcf000:
(Full debug information has not yet been read for this file.)
/tmp/info-sources/libhelper.so:
/tmp/info-sources/helper.c, /usr/include/stdc-predef.h,
/tmp/info-sources/header.h
/lib64/libc.so.6:
(Full debug information has not yet been read for this file.)
(gdb)
Notice that in the new output some source files are repeated,
e.g. /tmp/info-sources/header.h, as multiple binaries use this source
file.
All of the existing regular expression based filtering that exists for
'info sources' still works with the new option.
gdb/ChangeLog:
* NEWS: Mention new 'info sources' option.
* symtab.c (struct filename_grouping_opts): New struct.
(struct output_source_filename_data) <printed_filename_p>: New
member function.
(isrc_flag_option_def): Rename to...
(isrc_match_flag_option_def): ...this.
(info_sources_option_defs): Rename to...
(info_sources_match_option_defs): ...this. Update to take account
of isrc_flag_option_def being renamed.
(isrc_grouping_flag_option_def): New typedef.
(info_sources_grouping_option_defs): New static global.
(make_info_sources_options_def_group): Update to take two
parameters, and return an array.
(info_sources_command_completer): Update for changes to
make_info_sources_options_def_group.
(info_sources_command): Update to display results grouped by
objfile name if the user supplies the required flag.
(_initialize_symtab): Update for changes to
make_info_sources_options_def_group.
gdb/doc/ChangeLog:
* gdb.textinfo (Symbols): Merge two descriptions of 'info
sources', and add description of new '-group-by-binary' flag.
gdb/testsuite/ChangeLog:
* gdb.base/info_sources.exp: Add additional test.
* gdb.base/info_sources_2-header.h: New file.
* gdb.base/info_sources_2-lib.c: New file.
* gdb.base/info_sources_2-test.c: New file.
* gdb.base/info_sources_2.exp: New file.
---
gdb/ChangeLog | 22 +++
gdb/NEWS | 7 +
gdb/doc/ChangeLog | 5 +
gdb/doc/gdb.texinfo | 37 ++--
gdb/symtab.c | 92 ++++++++--
gdb/testsuite/ChangeLog | 8 +
gdb/testsuite/gdb.base/info_sources.exp | 5 +
| 28 +++
gdb/testsuite/gdb.base/info_sources_2-lib.c | 25 +++
gdb/testsuite/gdb.base/info_sources_2-test.c | 26 +++
gdb/testsuite/gdb.base/info_sources_2.exp | 169 ++++++++++++++++++
11 files changed, 393 insertions(+), 31 deletions(-)
create mode 100644 gdb/testsuite/gdb.base/info_sources_2-header.h
create mode 100644 gdb/testsuite/gdb.base/info_sources_2-lib.c
create mode 100644 gdb/testsuite/gdb.base/info_sources_2-test.c
create mode 100644 gdb/testsuite/gdb.base/info_sources_2.exp
diff --git a/gdb/NEWS b/gdb/NEWS
index 1cdf19c09a0..f84ea0427a7 100644
--- a/gdb/NEWS
+++ b/gdb/NEWS
@@ -157,6 +157,13 @@ ptype[/FLAGS] TYPE | EXPRESSION
offsets of struct members. Default behavior is given by 'show print
type hex'.
+info sources [-group-by-binary] [-dirname] [-basename] [REGEXP]
+ The 'info sources' command now supports a new flag
+ '-group-by-binary'. When this flag is supplied the results are
+ formatted as a list of loaded binaries followed by the source files
+ for each binary. A single source file can appear multiple times in
+ the output if it is part of multiple binaries.
+
* Removed targets and native configurations
ARM Symbian arm*-*-symbianelf*
diff --git a/gdb/doc/gdb.texinfo b/gdb/doc/gdb.texinfo
index a068de6c95b..03bf603ad42 100644
--- a/gdb/doc/gdb.texinfo
+++ b/gdb/doc/gdb.texinfo
@@ -19335,20 +19335,29 @@
@kindex info sources
-@item info sources
-Print the names of all source files in your program for which there is
-debugging information, organized into two lists: files whose symbols
-have already been read, and files whose symbols will be read when needed.
-
-@item info sources [-dirname | -basename] [--] [@var{regexp}]
-Like @samp{info sources}, but only print the names of the files
-matching the provided @var{regexp}.
-By default, the @var{regexp} is used to match anywhere in the filename.
-If @code{-dirname}, only files having a dirname matching @var{regexp} are shown.
-If @code{-basename}, only files having a basename matching @var{regexp}
-are shown.
-The matching is case-sensitive, except on operating systems that
-have case-insensitive filesystem (e.g., MS-Windows).
+@item info sources @r{[}-group-by-binary@r{]} @r{[}-dirname | -basename@r{]} @r{[}--@r{]} @r{[}@var{regexp}@r{]}
+With no options @samp{info sources} prints the names of all source
+files in your program for which there is debugging information,
+organized into two lists: files whose symbols have already been read,
+and files whose symbols will be read when needed.
+
+When the optional @code{-group-by-binary} flag is given then the
+output is organized as a list of the binaries currently loaded into
+@value{GDBN}, for each binary, all of the source files associated with
+that binary are given. A single source file can be repeated in this
+output format, if it is part of multiple binaries.
+
+If the optional @var{regexp} is provided, then only source files that
+match the regular expression will be printed. The matching is
+case-sensitive, except on operating systems that have case-insensitive
+filesystem (e.g., MS-Windows). @samp{--} can be used before
+@var{regexp} to prevent @value{GDBN} interpreting @var{regexp} as a
+command option (e.g. if @var{regexp} starts with @samp{-}).
+
+By default, the @var{regexp} is used to match anywhere in the
+filename. If @code{-dirname}, only files having a dirname matching
+@var{regexp} are shown. If @code{-basename}, only files having a
+basename matching @var{regexp} are shown.
@kindex info functions
@item info functions [-q] [-n]
diff --git a/gdb/symtab.c b/gdb/symtab.c
index 5650d225752..d8d0667dfdb 100644
--- a/gdb/symtab.c
+++ b/gdb/symtab.c
@@ -4212,6 +4212,14 @@ struct filename_partial_match_opts
bool basename = false;
};
+/* For the 'info sources' command, should the results be grouped by objfile
+ name? */
+struct filename_grouping_opts
+{
+ /* Group source files by the containing binary. */
+ bool group_by_binary = false;
+};
+
/* Data structure to maintain the state used for printing the results of
the 'info sources' command. */
@@ -4255,6 +4263,14 @@ struct output_source_filename_data
output (fullname != nullptr ? fullname : filename);
}
+ /* Return true if at least one filename has been printed (after a call to
+ output) since either this object was created, or the last call to
+ reset_output. */
+ bool printed_filename_p () const
+ {
+ return !m_first;
+ }
+
private:
/* Set the current regular expression, used for matching against files,
@@ -4358,18 +4374,18 @@ output_source_filename_data::print_header (const char *symbol_msg)
puts_filtered ("\n");
}
-using isrc_flag_option_def
+using isrc_match_flag_option_def
= gdb::option::flag_option_def<filename_partial_match_opts>;
-static const gdb::option::option_def info_sources_option_defs[] = {
+static const gdb::option::option_def info_sources_match_option_defs[] = {
- isrc_flag_option_def {
+ isrc_match_flag_option_def {
"dirname",
[] (filename_partial_match_opts *opts) { return &opts->dirname; },
N_("Show only the files having a dirname matching REGEXP."),
},
- isrc_flag_option_def {
+ isrc_match_flag_option_def {
"basename",
[] (filename_partial_match_opts *opts) { return &opts->basename; },
N_("Show only the files having a basename matching REGEXP."),
@@ -4377,13 +4393,31 @@ static const gdb::option::option_def info_sources_option_defs[] = {
};
+using isrc_grouping_flag_option_def
+ = gdb::option::flag_option_def<filename_grouping_opts>;
+
+static const gdb::option::option_def info_sources_grouping_option_defs[] = {
+
+ isrc_grouping_flag_option_def {
+ "group-by-binary",
+ [] (filename_grouping_opts *opts) { return &opts->group_by_binary; },
+ N_("Group source files by the binary they are from."),
+ },
+
+};
+
/* Create an option_def_group for the "info sources" options, with
ISRC_OPTS as context. */
-static inline gdb::option::option_def_group
-make_info_sources_options_def_group (filename_partial_match_opts *isrc_opts)
+static inline std::array<gdb::option::option_def_group, 2>
+make_info_sources_options_def_group
+ (filename_partial_match_opts *isrc_match_opts,
+ filename_grouping_opts *isrc_grp_opts)
{
- return {{info_sources_option_defs}, isrc_opts};
+ return {{
+ {{info_sources_match_option_defs}, isrc_match_opts},
+ {{info_sources_grouping_option_defs}, isrc_grp_opts},
+ }};
}
/* Completer for "info sources". */
@@ -4393,7 +4427,7 @@ info_sources_command_completer (cmd_list_element *ignore,
completion_tracker &tracker,
const char *text, const char *word)
{
- const auto group = make_info_sources_options_def_group (nullptr);
+ const auto group = make_info_sources_options_def_group (nullptr, nullptr);
if (gdb::option::complete_options
(tracker, &text, gdb::option::PROCESS_OPTIONS_UNKNOWN_IS_OPERAND, group))
return;
@@ -4407,14 +4441,17 @@ info_sources_command (const char *args, int from_tty)
if (!have_full_symbols () && !have_partial_symbols ())
error (_("No symbol table is loaded. Use the \"file\" command."));
+ struct filename_grouping_opts grp_opts;
struct filename_partial_match_opts match_opts;
- auto group = make_info_sources_options_def_group (&match_opts);
+ auto group = make_info_sources_options_def_group (&match_opts, &grp_opts);
gdb::option::process_options
(&args, gdb::option::PROCESS_OPTIONS_UNKNOWN_IS_ERROR, group);
if (match_opts.dirname && match_opts.basename)
error (_("You cannot give both -basename and -dirname to 'info sources'."));
+ bool group_by_binary = grp_opts.group_by_binary;
+
const char *regex = nullptr;
if (args != nullptr && *args != '\000')
regex = args;
@@ -4425,27 +4462,47 @@ info_sources_command (const char *args, int from_tty)
struct output_source_filename_data data (regex, match_opts.dirname,
match_opts.basename);
- data.print_header (_("Source files for which symbols have been read in:\n"));
+ if (!group_by_binary)
+ data.print_header (_("Source files for which symbols have been read in:\n"));
for (objfile *objfile : current_program_space->objfiles ())
{
+ if (group_by_binary)
+ {
+ printf_filtered ("%s:\n", objfile_name (objfile));
+ bool debug_fully_readin = !objfile->has_unexpanded_symbols ();
+ if (!debug_fully_readin)
+ printf_filtered ("(Full debug information has not yet been read for this file.)\n");
+ printf_filtered ("\n");
+ }
+
for (compunit_symtab *cu : objfile->compunits ())
{
for (symtab *s : compunit_filetabs (cu))
{
const char *fullname = symtab_to_fullname (s);
-
data.output (fullname);
}
}
+
+ if (group_by_binary)
+ {
+ objfile->map_symbol_filenames (data, true /* need_fullname */);
+ if (data.printed_filename_p ())
+ printf_filtered ("\n\n");
+ data.reset_output ();
+ }
}
- printf_filtered ("\n\n");
- data.print_header (_("Source files for which symbols will be read in on demand:\n"));
+ if (!group_by_binary)
+ {
+ printf_filtered ("\n\n");
+ data.print_header (_("Source files for which symbols will be read in on demand:\n"));
- data.reset_output ();
- map_symbol_filenames (data, true /*need_fullname*/);
- printf_filtered ("\n");
+ data.reset_output ();
+ map_symbol_filenames (data, true /*need_fullname*/);
+ printf_filtered ("\n");
+ }
}
/* Compare FILE against all the entries of FILENAMES. If BASENAMES is
@@ -6805,7 +6862,8 @@ Print information about all types matching REGEXP, or all types if no\n\
REGEXP is given. The optional flag -q disables printing of headers."));
set_cmd_completer_handle_brkchars (c, info_types_command_completer);
- const auto info_sources_opts = make_info_sources_options_def_group (nullptr);
+ const auto info_sources_opts
+ = make_info_sources_options_def_group (nullptr, nullptr);
static std::string info_sources_help
= gdb::option::build_help (_("\
diff --git a/gdb/testsuite/gdb.base/info_sources.exp b/gdb/testsuite/gdb.base/info_sources.exp
index a4f7d1966e6..659a1a4368c 100644
--- a/gdb/testsuite/gdb.base/info_sources.exp
+++ b/gdb/testsuite/gdb.base/info_sources.exp
@@ -103,3 +103,8 @@ if { ! [is_remote host] } {
# Test non matching regexp, with option terminator:
test_info_sources "-b -- -d" 0 0
test_info_sources "-d -- -d" 0 0
+
+# Test with the -group-by-binary option.
+test_info_sources "-group-by-binary" 1 1
+test_info_sources "-group-by-binary -basename info_sources" 1 1
+test_info_sources "-group-by-binary -basename base" 0 1
--git a/gdb/testsuite/gdb.base/info_sources_2-header.h b/gdb/testsuite/gdb.base/info_sources_2-header.h
new file mode 100644
index 00000000000..b3379babc0a
--- /dev/null
+++ b/gdb/testsuite/gdb.base/info_sources_2-header.h
@@ -0,0 +1,28 @@
+/* This testcase is part of GDB, the GNU debugger.
+
+ Copyright 2021 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#ifndef INFO_SOURCES_2_HEADER
+#define INFO_SOURCES_2_HEADER
+
+extern int foo (void);
+
+inline static int compare_values (int a, int b)
+{
+ return a == b;
+}
+
+#endif /* INFO_SOURCES_2_HEADER */
diff --git a/gdb/testsuite/gdb.base/info_sources_2-lib.c b/gdb/testsuite/gdb.base/info_sources_2-lib.c
new file mode 100644
index 00000000000..7df1a8114ad
--- /dev/null
+++ b/gdb/testsuite/gdb.base/info_sources_2-lib.c
@@ -0,0 +1,25 @@
+/* This testcase is part of GDB, the GNU debugger.
+
+ Copyright 2021 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+
+#include "info_sources_2-header.h"
+
+int
+foo ()
+{
+ return compare_values (0, 1);
+}
diff --git a/gdb/testsuite/gdb.base/info_sources_2-test.c b/gdb/testsuite/gdb.base/info_sources_2-test.c
new file mode 100644
index 00000000000..87a030ae87d
--- /dev/null
+++ b/gdb/testsuite/gdb.base/info_sources_2-test.c
@@ -0,0 +1,26 @@
+/* This testcase is part of GDB, the GNU debugger.
+
+ Copyright 2021 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+
+#include "info_sources_2-header.h"
+
+int
+main ()
+{
+ int res = foo ();
+ return compare_values (res, 1);
+}
diff --git a/gdb/testsuite/gdb.base/info_sources_2.exp b/gdb/testsuite/gdb.base/info_sources_2.exp
new file mode 100644
index 00000000000..dd4f4f08263
--- /dev/null
+++ b/gdb/testsuite/gdb.base/info_sources_2.exp
@@ -0,0 +1,169 @@
+# Copyright 2021 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+# Test 'info sources -group-by-binary' when the test file makes use of
+# a shared library.
+
+if { [skip_shlib_tests] } {
+ return 0
+}
+
+standard_testfile -test.c -lib.c
+set solib_name [standard_output_file ${testfile}-lib.so]
+
+if { [gdb_compile_shlib ${srcdir}/${subdir}/${srcfile2} ${solib_name} \
+ {debug}] != "" } {
+ untested "failed to compile shared library"
+ return -1
+}
+
+if {[gdb_compile ${srcdir}/${subdir}/${srcfile} ${binfile} executable \
+ [list debug shlib=${solib_name} ]] != ""} {
+ untested "failed to compile executable"
+ return -1
+}
+
+clean_restart ${binfile}
+
+if ![runto foo] {
+ untested "failed to run to function foo"
+ return -1
+}
+
+# Invoke 'info sources -group-by-binary EXTRA_ARGS' and extract the results.
+# The results are then compared to the list ARGS.
+#
+# The list ARGS should consist of pairs of values, the first item being the
+# path to an object file, and the second item being the name of a source file.
+# This proc checks that source file was listed as being a source file for the
+# given object file.
+#
+# If the name of the source file starts with the character "!" (exclamation
+# character, without the quotes) then the check is inverted, that the source
+# file is NOT listed for the given object file.
+proc run_info_sources { extra_args args } {
+ global gdb_prompt srcdir subdir
+
+ with_test_prefix "args: ${extra_args}" {
+
+ # The results of running info sources will be placed into this local.
+ array set info_sources {}
+
+ # The command we are going to run.
+ set cmd "info sources -group-by-binary ${extra_args}"
+ set command_regex [string_to_regexp $cmd]
+
+ # Run the command and extract the results into INFO_SOURCES.
+ set objfile_name ""
+ set source_files {}
+ gdb_test_multiple $cmd "" {
+ -re "${command_regex}\r\n" {
+ exp_continue
+ }
+
+ -re "^(\[^\r\n\]+):\r\n" {
+ set objfile_name $expect_out(1,string)
+ exp_continue
+ }
+
+ -re "^\\(Full debug information has not yet been read for this file\\.\\)\r\n" {
+ exp_continue
+ }
+
+ -re "^\r\n" {
+ exp_continue
+ }
+
+ -re "^$gdb_prompt $" {
+ pass $gdb_test_name
+ }
+
+ -re "^(\[^\r\n\]+)\r\n" {
+ if { $objfile_name == "" } {
+ fail "${gdb_test_name} (no objfile name)"
+ return
+ }
+
+ set files {}
+ foreach f [split $expect_out(1,string) ,] {
+ lappend files [string trim $f]
+ }
+ set info_sources($objfile_name) $files
+ set $objfile_name ""
+ exp_continue
+ }
+ }
+
+ # Now check ARGS agaisnt the values held in INFO_SOURCES map.
+ foreach {objfile sourcefile} $args {
+ # First, figure out if we're expecting SOURCEFILE to be present,
+ # or not.
+ set present True
+ set match_type "is"
+ if {[string index $sourcefile 0] == "!"} {
+ set present False
+ set match_type "is not"
+ set sourcefile [string range $sourcefile 1 end]
+ }
+
+ # Figure out the path for SOURCEFILE that we're looking for.
+ set sourcepath [file normalize ${srcdir}/${subdir}/${sourcefile}]
+
+ # Make sure we handle the case where there are no source files
+ # associated with a particular objfile.
+ set source_list {}
+ if [info exists info_sources($objfile)] {
+ set source_list $info_sources($objfile)
+ }
+
+ # Now perform the search, and check the results.
+ set idx [lsearch -exact $source_list $sourcepath]
+ gdb_assert {($present && $idx >= 0) || (!$present && $idx == -1)} \
+ "source file '$sourcefile' ${match_type} present for '[file tail $objfile]'"
+ }
+ }
+}
+
+# The actual tests.
+
+run_info_sources "" \
+ ${binfile} ${srcfile} \
+ ${binfile} ${testfile}-header.h \
+ ${solib_name} ${srcfile2} \
+ ${solib_name} ${testfile}-header.h
+
+run_info_sources "-basename info_sources_2" \
+ ${binfile} ${srcfile} \
+ ${binfile} ${testfile}-header.h \
+ ${solib_name} ${srcfile2} \
+ ${solib_name} ${testfile}-header.h
+
+run_info_sources "-basename \\.c" \
+ ${binfile} ${srcfile} \
+ ${binfile} !${testfile}-header.h \
+ ${solib_name} ${srcfile2} \
+ ${solib_name} !${testfile}-header.h
+
+run_info_sources "-basename -- -test\\.c" \
+ ${binfile} ${srcfile} \
+ ${binfile} !${testfile}-header.h \
+ ${solib_name} !${srcfile2} \
+ ${solib_name} !${testfile}-header.h
+
+run_info_sources "-basename -- -lib\\.c" \
+ ${binfile} !${srcfile} \
+ ${binfile} !${testfile}-header.h \
+ ${solib_name} ${srcfile2} \
+ ${solib_name} !${testfile}-header.h
--
2.25.4
next prev parent reply other threads:[~2021-04-26 17:07 UTC|newest]
Thread overview: 38+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-04-26 17:06 [PATCH 0/4] New option for 'info sources', also better MI support Andrew Burgess
2021-04-26 17:07 ` [PATCH 1/4] gdb: add new function quick_symbol_functions::has_unexpanded_symbols Andrew Burgess
2021-05-13 14:38 ` Simon Marchi via Gdb-patches
2021-05-13 17:29 ` Tom Tromey
2021-05-13 14:46 ` Simon Marchi via Gdb-patches
2021-04-26 17:07 ` [PATCH 2/4] gdb: make struct output_source_filename_data more C++ like Andrew Burgess
2021-05-13 14:58 ` Simon Marchi via Gdb-patches
2021-04-26 17:07 ` Andrew Burgess [this message]
2021-04-26 17:34 ` [PATCH 3/4] gdb: add new -group-by-binary flag to info sources command Eli Zaretskii via Gdb-patches
2021-05-13 15:05 ` Simon Marchi via Gdb-patches
2021-05-15 8:45 ` Andrew Burgess
2021-05-15 13:19 ` Simon Marchi via Gdb-patches
2021-04-26 17:07 ` [PATCH 4/4] gdb/mi: extend -file-list-exec-source-files command Andrew Burgess
2021-04-26 17:39 ` Eli Zaretskii via Gdb-patches
2021-05-13 15:47 ` Simon Marchi via Gdb-patches
2021-05-13 10:34 ` [PATCH 0/4] New option for 'info sources', also better MI support Andrew Burgess
2021-05-19 11:12 ` [PATCHv2 0/5] "info sources" - group by objfile Andrew Burgess
2021-05-19 11:12 ` [PATCHv2 1/5] gdb: add new function quick_symbol_functions::has_unexpanded_symbols Andrew Burgess
2021-05-19 11:12 ` [PATCHv2 2/5] gdb: make struct output_source_filename_data more C++ like Andrew Burgess
2021-05-19 11:12 ` [PATCHv2 3/5] gdb/mi: add regexp filtering to -file-list-exec-source-files Andrew Burgess
2021-05-19 11:51 ` Eli Zaretskii via Gdb-patches
2021-05-19 11:12 ` [PATCHv2 4/5] gdb/mi: add new --group-by-objfile flag for -file-list-exec-source-files Andrew Burgess
2021-05-19 11:44 ` Eli Zaretskii via Gdb-patches
2021-05-19 11:12 ` [PATCHv2 5/5] gdb: change info sources to group results by objfile Andrew Burgess
2021-05-19 11:53 ` Eli Zaretskii via Gdb-patches
2021-06-03 13:08 ` Simon Marchi via Gdb-patches
2021-06-03 9:27 ` [PATCHv2 0/5] "info sources" - group " Andrew Burgess
2021-06-03 13:15 ` Simon Marchi via Gdb-patches
2021-06-07 18:32 ` [PATCHv3 " Andrew Burgess
2021-06-07 18:32 ` [PATCHv3 1/5] gdb: add new function quick_symbol_functions::has_unexpanded_symbols Andrew Burgess
2021-06-07 18:32 ` [PATCHv3 2/5] gdb: make struct output_source_filename_data more C++ like Andrew Burgess
2021-07-05 12:31 ` Tom de Vries
2021-07-26 13:21 ` Andrew Burgess
2021-06-07 18:32 ` [PATCHv3 3/5] gdb/mi: add regexp filtering to -file-list-exec-source-files Andrew Burgess
2021-06-07 18:32 ` [PATCHv3 4/5] gdb/mi: add new --group-by-objfile flag for -file-list-exec-source-files Andrew Burgess
2021-06-07 18:32 ` [PATCHv3 5/5] gdb: change info sources to group results by objfile Andrew Burgess
2021-06-21 12:02 ` PING! Re: [PATCHv3 0/5] "info sources" - group " Andrew Burgess
2021-06-25 20:08 ` Andrew Burgess
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=760d52a0ea6ab8c2195d71feea794f0bec70a163.1619456691.git.andrew.burgess@embecosm.com \
--to=andrew.burgess@embecosm.com \
--cc=gdb-patches@sourceware.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox