[PATCH 10/18] -Wwrite-strings: gdbserver's 'port' parsing

Pedro Alves
2017-04-04T17:31:44Z

-Wwrite-strings flags this assignment as requiring a cast:

port = STDIO_CONNECTION_NAME;

because 'port' is a "char *", and STDIO_CONNECTION_NAME is a string
literal.

gdb/gdbserver/ChangeLog:
yyyy-mm-dd Pedro Alves <palves@redhat.com>

* remote-utils.c (remote_prepare, remote_open): Constify.
* remote-utils.h (remote_prepare, remote_open): Constify.
* server.c (captured_main): Constify 'port' handling.
---
gdb/gdbserver/remote-utils.c | 8 ++++----
gdb/gdbserver/remote-utils.h | 4 ++--
gdb/gdbserver/server.c | 13 +++++++++----
3 files changed, 15 insertions(+), 10 deletions(-)

diff --git a/gdb/gdbserver/remote-utils.c b/gdb/gdbserver/remote-utils.c
index 6a2cc04..37a6402 100644
--- a/gdb/gdbserver/remote-utils.c
+++ b/gdb/gdbserver/remote-utils.c
@@ -217,9 +217,9 @@ handle_accept_event (int err, gdb_client_data client_data)
NAME is the filename used for communication. */

void
-remote_prepare (char *name)
+remote_prepare (const char *name)
{
- char *port_str;
+ const char *port_str;
#ifdef USE_WIN32API
static int winsock_initialized;
#endif
@@ -284,9 +284,9 @@ remote_prepare (char *name)
NAME is the filename used for communication. */

void
-remote_open (char *name)
+remote_open (const char *name)
{
- char *port_str;
+ const char *port_str;

port_str = strchr (name, ':');
#ifdef USE_WIN32API
diff --git a/gdb/gdbserver/remote-utils.h b/gdb/gdbserver/remote-utils.h
index 9db46be..b3eab3b 100644
--- a/gdb/gdbserver/remote-utils.h
+++ b/gdb/gdbserver/remote-utils.h
@@ -35,8 +35,8 @@ int putpkt (char *buf);
int putpkt_binary (char *buf, int len);
int putpkt_notif (char *buf);
int getpkt (char *buf);
-void remote_prepare (char *name);
-void remote_open (char *name);
+void remote_prepare (const char *name);
+void remote_open (const char *name);
void remote_close (void);
void write_ok (char *buf);
void write_enn (char *buf);
diff --git a/gdb/gdbserver/server.c b/gdb/gdbserver/server.c
index 4bc7f71..51f6a28 100644
--- a/gdb/gdbserver/server.c
+++ b/gdb/gdbserver/server.c
@@ -3511,7 +3511,8 @@ captured_main (int argc, char *argv[])
{
int bad_attach;
int pid;
- char *arg_end, *port;
+ char *arg_end;
+ const char *port = NULL;
char **next_arg = &argv[1];
volatile int multi_mode = 0;
volatile int attach = 0;
@@ -3608,7 +3609,8 @@ captured_main (int argc, char *argv[])
{
/* "-" specifies a stdio connection and is a form of port
specification. */
- *next_arg = STDIO_CONNECTION_NAME;
+ port = STDIO_CONNECTION_NAME;
+ next_arg++;
break;
}
else if (strcmp (*next_arg, "--disable-randomization") == 0)
@@ -3627,8 +3629,11 @@ captured_main (int argc, char *argv[])
continue;
}

- port = *next_arg;
- next_arg++;
+ if (port == NULL)
+ {
+ port = *next_arg;
+ next_arg++;
+ }
if (port == NULL || (!attach && !multi_mode && *next_arg == NULL))
{
gdbserver_usage (stderr);
--
2.5.5