Re: [PATCH] An implementation of pipe to make I/O communication between gdb and shell. [MinGW question]

Abhijit Halder
2011-08-16T17:25:38Z

[-- Attachment #1: Type: text/plain, Size: 1518 bytes --]

On Tue, Aug 16, 2011 at 7:39 PM, Abhijit Halder
<abhijit.k.halder@gmail.com> wrote:
> On Tue, Aug 16, 2011 at 7:08 PM, Eli Zaretskii <eliz@gnu.org> wrote:
>>> Date: Tue, 16 Aug 2011 18:15:19 +0530
>>> From: Abhijit Halder <abhijit.k.halder@gmail.com>
>>> Cc: Eli Zaretskii <eliz@gnu.org>, sergiodj@redhat.com, tromey@redhat.com,
>>>       pedro@codesourcery.com, gdb-patches@sourceware.org
>>>
>>> --- src/gdb/NEWS      2011-08-14 07:27:51.582233000 +0530
>>> +++ dst/gdb/NEWS      2011-08-14 07:50:38.562234498 +0530
>>> @@ -64,6 +64,9 @@
>>>
>>>  * New commands "info macros", and "info definitions" have been added.
>>>
>>> +* New command "pipe" has been added to make GDB command output available to the
>>> +  shell for processing.
>>> +
>>>  * Changed commands
>>
>> This part is okay.
>>
>>> +void
>>> +_initialize_pipe (void)
>>> +{
>>> +  add_cmd ("pipe", no_class, pipe_command, _("\
>>> +Create pipe to pass gdb-command output to the shell for processing.\n\
>>> +Arguments are a delimiter, followed by a gdb-command, then the same delimiter \
>>> +again and finally a shell-command."),
>>
>> This doc string should say something about what can be the delimiter.
>>
>> What about the manual?  (Apologies if I already reviewed that part:
>> this has been a very long thread.)
> I have not yet got a chance to work on document part. I am currently
> working on it.
>>
>> Thanks.
>>
>
Added test-case for this new command. Please review this.

Thanks,
Abhijit Halder

[-- Attachment #2: gdb-pipe-command-testsuite.patch --]
[-- Type: text/x-patch, Size: 2775 bytes --]

diff -rup src/gdb/testsuite/gdb.base/pipe.c dst/gdb/testsuite/gdb.base/pipe.c
--- src/gdb/testsuite/gdb.base/pipe.c 2011-08-16 22:37:37.785351001 +0530
+++ dst/gdb/testsuite/gdb.base/pipe.c 2011-08-16 22:32:40.213350709 +0530
@@ -0,0 +1,27 @@
+/* This testcase is part of GDB, the GNU debugger.
+
+ Copyright 2011 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 <stdio.h>
+
+int main ()
+{
+#ifdef usestubs
+ set_debug_traps ();
+ breakpoint ();
+#endif
+ return 0; /* end main */
+}
diff -rup src/gdb/testsuite/gdb.base/pipe.exp dst/gdb/testsuite/gdb.base/pipe.exp
--- src/gdb/testsuite/gdb.base/pipe.exp 2011-08-16 22:37:45.969351119 +0530
+++ dst/gdb/testsuite/gdb.base/pipe.exp 2011-08-16 22:35:34.117356781 +0530
@@ -0,0 +1,49 @@
+# Copyright 2011 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 gdb pipe commands
+#
+
+if $tracelevel then {
+ strace $tracelevel
+}
+
+set testfile "pipe"
+set srcfile ${testfile}.c
+set binfile ${objdir}/${subdir}/${testfile}
+if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable {debug}] != "" } {
+ untested pipe.exp
+ return -1
+}
+
+if [get_compiler_info ${binfile}] {
+ return -1
+}
+
+gdb_exit
+gdb_start
+gdb_reinitialize_dir ${srcdir}/${subdir}
+gdb_load ${binfile}
+
+set end_main [gdb_get_line_number " end main " $srcfile]
+
+if ![runto_main] then {
+ fail "Can't run to main"
+ return 0
+}
+
+gdb_test "pipe | bt | grep \"main\"" "\#0.*main.*().*at.*${srcfile}:${end_main}"
+

[-- Attachment #3: ChangeLog --]
[-- Type: application/octet-stream, Size: 150 bytes --]

2011-07-29 Abhijit Halder <abhijit.k.halder@gmail.com>

Testsuite for `pipe' command.

* gdb.base/pipe.c: New file.
* gdb.base/pipe.exp: New file.