This is the mail archive of the
gdb-patches@sourceware.org
mailing list for the GDB project.
gdbserver with reversed arguments goes into an infinite loop
- From: Denis PILAT <denis dot pilat at st dot com>
- To: gdb-patches <gdb-patches at sourceware dot org>
- Date: Wed, 13 Dec 2006 10:58:14 +0100
- Subject: gdbserver with reversed arguments goes into an infinite loop
I've found that if you revert the argument of gdbserver, means writing
the program's name before the COMM argument, it goes into an infinite
loop, and as the CTRL+C does not work, you have to kill the process from
an other shell.
In gdbserver/server.c, the loop in question does the remote_open on the
wrong passed argument (argv[1]) which unfortunately is the binary file
you'd expect to open so remote_open does not exit on error.
I think either we could check that we pass correct argument before using
start_inferior(), this is executing before the loop. The bellow patch is
in that sense.
Or we find a way to exit the loop by adding a test in it. May be by
adding something in remote_open to let it fail.
I'd like your opinion about that
Thanks
--
Denis Pilat / STMicroelectronics
Index: server.c
===================================================================
--- server.c (revision 544)
+++ server.c (working copy)
@@ -408,6 +408,13 @@ main (int argc, char *argv[])
if (pid == 0)
{
+ if (access (argv[2], F_OK) != 0)
+ {
+ fprintf (stderr, "File %s does not exist.\n",argv[2]);
+ gdbserver_usage ();
+ exit (0);
+ }
+
/* Wait till we are at first instruction in program. */
signal = start_inferior (&argv[2], &status);