[PATCH v2] Add the "-info-os" command to MI

Stan Shebs stanshebs@earthlink.net
Wed May 23 14:39:00 GMT 2012


On 5/23/12 4:15 AM, Pedro Alves wrote:
> On 05/23/2012 01:28 AM, Stan Shebs wrote:
>
>> 2012-05-22  Stan Shebs<stan@codesourcery.com>
>>          Kwok Cheung Yeung<kcy@codesourcery.com>
>
>>      * gdb.texinfo (Miscellaneous GDB/MI Commands): Document -info-os.
>
> This appears missing from the patch.
>
Argh!  OK, this one has it in.

Stan

-------------- next part --------------
Index: Makefile.in
===================================================================
RCS file: /cvs/src/src/gdb/Makefile.in,v
retrieving revision 1.1207
diff -u -p -r1.1207 Makefile.in
--- Makefile.in	27 Apr 2012 20:47:50 -0000	1.1207
+++ Makefile.in	23 May 2012 14:37:11 -0000
@@ -202,14 +202,14 @@ SUBDIR_MI_OBS = \
 	mi-out.o mi-console.o \
 	mi-cmds.o mi-cmd-env.o mi-cmd-var.o mi-cmd-break.o mi-cmd-stack.o \
 	mi-cmd-file.o mi-cmd-disas.o mi-symbol-cmds.o mi-cmd-target.o \
-	mi-interp.o \
+	mi-cmd-info.o mi-interp.o \
 	mi-main.o mi-parse.o mi-getopt.o
 SUBDIR_MI_SRCS = \
 	mi/mi-out.c mi/mi-console.c \
 	mi/mi-cmds.c mi/mi-cmd-env.c \
 	mi/mi-cmd-var.c mi/mi-cmd-break.c mi/mi-cmd-stack.c \
 	mi/mi-cmd-file.c mi/mi-cmd-disas.c mi/mi-symbol-cmds.c \
-	mi/mi-cmd-target.c mi/mi-interp.c \
+	mi/mi-cmd-target.c mi/mi-cmd-info.c mi/mi-interp.c \
 	mi/mi-main.c mi/mi-parse.c mi/mi-getopt.c
 SUBDIR_MI_DEPS =
 SUBDIR_MI_LDFLAGS=
@@ -1837,6 +1837,10 @@ mi-cmd-file.o: $(srcdir)/mi/mi-cmd-file.
 	$(COMPILE) $(srcdir)/mi/mi-cmd-file.c
 	$(POSTCOMPILE)
 
+mi-cmd-info.o: $(srcdir)/mi/mi-cmd-info.c
+	$(COMPILE) $(srcdir)/mi/mi-cmd-info.c
+	$(POSTCOMPILE)
+
 mi-cmds.o: $(srcdir)/mi/mi-cmds.c
 	$(COMPILE) $(srcdir)/mi/mi-cmds.c
 	$(POSTCOMPILE)
Index: NEWS
===================================================================
RCS file: /cvs/src/src/gdb/NEWS,v
retrieving revision 1.525
diff -u -p -r1.525 NEWS
--- NEWS	22 May 2012 17:12:07 -0000	1.525
+++ NEWS	23 May 2012 14:37:11 -0000
@@ -117,6 +117,10 @@
 * GDB can now support 'breakpoint always-inserted mode' in 'record'
   target.
 
+* MI changes
+
+  ** New command -info-os is the MI equivalent of "info os".
+
 * New commands
 
   ** "catch load" and "catch unload" can be used to stop when a shared
Index: osdata.c
===================================================================
RCS file: /cvs/src/src/gdb/osdata.c,v
retrieving revision 1.15
diff -u -p -r1.15 osdata.c
--- osdata.c	27 Mar 2012 19:08:36 -0000	1.15
+++ osdata.c	23 May 2012 14:37:11 -0000
@@ -288,7 +288,7 @@ get_osdata_column (struct osdata_item *i
   return NULL;
 }
 
-static void
+void
 info_osdata_command (char *type, int from_tty)
 {
   struct ui_out *uiout = current_uiout;
Index: osdata.h
===================================================================
RCS file: /cvs/src/src/gdb/osdata.h,v
retrieving revision 1.6
diff -u -p -r1.6 osdata.h
--- osdata.h	4 Jan 2012 08:17:09 -0000	1.6
+++ osdata.h	23 May 2012 14:37:11 -0000
@@ -49,5 +49,6 @@ void osdata_free (struct osdata *);
 struct cleanup *make_cleanup_osdata_free (struct osdata *data);
 struct osdata *get_osdata (const char *type);
 const char *get_osdata_column (struct osdata_item *item, const char *name);
+void info_osdata_command (char *type, int from_tty);
 
 #endif /* OSDATA_H */
Index: doc/gdb.texinfo
===================================================================
RCS file: /cvs/src/src/gdb/doc/gdb.texinfo,v
retrieving revision 1.970
diff -u -p -r1.970 gdb.texinfo
--- doc/gdb.texinfo	20 May 2012 20:35:19 -0000	1.970
+++ doc/gdb.texinfo	23 May 2012 14:37:12 -0000
@@ -32611,6 +32611,62 @@ and only if there is a corresponding exe
                         @{id="2",target-id="Thread 0xb7e14b90",cores=[2]@}]@},...]
 @end smallexample
 
+@subheading The @code{-info-os} Command
+@findex -info-os
+
+@subsubheading Synopsis
+
+@smallexample
+-info-os [ @var{type} ]
+@end smallexample
+
+If no argument is supplied, the command returns a table of available
+operating-system-specific information types.  If one of these types is
+supplied as an argument @var{type}, then the command returns a table
+of data of that type.
+
+The types of information available depend on the target operating
+system.
+
+@subsubheading @value{GDBN} Command
+
+The corresponding @value{GDBN} command is @samp{info os}.
+
+@subsubheading Example
+
+When run on a @sc{gnu}/Linux system, the output will look something
+like this:
+
+@smallexample
+@value{GDBP}
+-info-os
+^done,OSDataTable=@{nr_rows="9",nr_cols="2",
+hdr=[@{width="10",alignment="-1",col_name="col0",colhdr="Type"@},
+     @{width="10",alignment="-1",col_name="col1",colhdr="Description"@}],
+body=[item=@{col0="processes",col1="Listing of all processes"@},
+      item=@{col0="procgroups",col1="Listing of all process groups"@},
+      item=@{col0="threads",col1="Listing of all threads"@},
+      item=@{col0="files",col1="Listing of all file descriptors"@},
+      item=@{col0="sockets",col1="Listing of all internet-domain sockets"@},
+      item=@{col0="shm",col1="Listing of all shared-memory regions"@},
+      item=@{col0="semaphores",col1="Listing of all semaphores"@},
+      item=@{col0="msg",col1="Listing of all message queues"@},
+      item=@{col0="modules",col1="Listing of all loaded kernel modules"@}]@}
+@value{GDBP}
+-info-os processes
+^done,OSDataTable=@{nr_rows="190",nr_cols="4",
+hdr=[@{width="10",alignment="-1",col_name="col0",colhdr="pid"@},
+     @{width="10",alignment="-1",col_name="col1",colhdr="user"@},
+     @{width="10",alignment="-1",col_name="col2",colhdr="command"@},
+     @{width="10",alignment="-1",col_name="col3",colhdr="cores"@}],
+body=[item=@{col0="1",col1="root",col2="/sbin/init",col3="0"@},
+      item=@{col0="2",col1="root",col2="[kthreadd]",col3="1"@},
+      item=@{col0="3",col1="root",col2="[ksoftirqd/0]",col3="0"@},
+      ...
+      item=@{col0="26446",col1="stan",col2="bash",col3="0"@},
+      item=@{col0="28152",col1="stan",col2="bash",col3="1"@}]@}
+(gdb)
+@end smallexample
 
 @subheading The @code{-add-inferior} Command
 @findex -add-inferior
Index: mi/mi-cmd-info.c
===================================================================
RCS file: mi/mi-cmd-info.c
diff -N mi/mi-cmd-info.c
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ mi/mi-cmd-info.c	23 May 2012 14:37:12 -0000
@@ -0,0 +1,38 @@
+/* MI Command Set - information commands.
+   Copyright (C) 2011-2012 Free Software Foundation, Inc.
+
+   This file is part of GDB.
+
+   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 "defs.h"
+#include "osdata.h"
+#include "mi-cmds.h"
+
+void
+mi_cmd_info_os (char *command, char **argv, int argc)
+{
+  switch (argc)
+    {
+    case 0:
+      info_osdata_command ("", 0);
+      break;
+    case 1:
+      info_osdata_command (argv[0], 0);
+      break;
+    default:
+      error (_("Usage: -info-os [INFOTYPE]"));
+      break;
+    }
+}
Index: mi/mi-cmds.c
===================================================================
RCS file: /cvs/src/src/gdb/mi/mi-cmds.c,v
retrieving revision 1.59
diff -u -p -r1.59 mi-cmds.c
--- mi/mi-cmds.c	6 Mar 2012 22:48:53 -0000	1.59
+++ mi/mi-cmds.c	23 May 2012 14:37:12 -0000
@@ -89,6 +89,7 @@ struct mi_cmd mi_cmds[] =
   { "gdb-version", { "show version", 0 }, 0 },
   { "inferior-tty-set", { NULL, 0 }, mi_cmd_inferior_tty_set},
   { "inferior-tty-show", { NULL, 0 }, mi_cmd_inferior_tty_show},
+  { "info-os", { NULL, 0 }, mi_cmd_info_os},
   { "interpreter-exec", { NULL, 0 }, mi_cmd_interpreter_exec},
   { "list-features", { NULL, 0 }, mi_cmd_list_features},
   { "list-target-features", { NULL, 0 }, mi_cmd_list_target_features},
Index: mi/mi-cmds.h
===================================================================
RCS file: /cvs/src/src/gdb/mi/mi-cmds.h,v
retrieving revision 1.54
diff -u -p -r1.54 mi-cmds.h
--- mi/mi-cmds.h	6 Mar 2012 22:48:53 -0000	1.54
+++ mi/mi-cmds.h	23 May 2012 14:37:12 -0000
@@ -73,6 +73,7 @@ extern mi_cmd_argv_ftype mi_cmd_file_lis
 extern mi_cmd_argv_ftype mi_cmd_gdb_exit;
 extern mi_cmd_argv_ftype mi_cmd_inferior_tty_set;
 extern mi_cmd_argv_ftype mi_cmd_inferior_tty_show;
+extern mi_cmd_argv_ftype mi_cmd_info_os;
 extern mi_cmd_argv_ftype mi_cmd_interpreter_exec;
 extern mi_cmd_argv_ftype mi_cmd_list_features;
 extern mi_cmd_argv_ftype mi_cmd_list_target_features;
Index: testsuite/gdb.mi/mi-info-os.exp
===================================================================
RCS file: testsuite/gdb.mi/mi-info-os.exp
diff -N testsuite/gdb.mi/mi-info-os.exp
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ testsuite/gdb.mi/mi-info-os.exp	23 May 2012 14:37:12 -0000
@@ -0,0 +1,38 @@
+# Copyright 2012 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/>.
+
+load_lib mi-support.exp
+set MIFLAGS "-i=mi"
+
+# This test is Linux-only.
+if ![istarget *-*-linux*] then {
+    unsupported "mi-info-os.exp"
+    return -1
+}
+
+# Support for XML-output is needed to run this test.
+if [gdb_skip_xml_test] then {
+    unsupported "mi-info-os.exp"
+    return -1
+}
+
+gdb_exit
+if [mi_gdb_start] {
+    continue
+}
+
+# Try the argument-less form that lists all the types in a table.
+
+mi_gdb_test "-info-os" ".*\\^done,OSDataTable=.*" "-info-os"


More information about the Gdb-patches mailing list