summaryrefslogtreecommitdiff
path: root/gdbserver
diff options
context:
space:
mode:
authorSimon Marchi <simon.marchi@polymtl.ca>2021-06-25 18:07:54 -0400
committerSimon Marchi <simon.marchi@polymtl.ca>2021-07-23 15:38:54 -0400
commit11bd012ed256688f43d71dcc531c2f105a9c55dd (patch)
treeeeff398be94163b59fc0f261615449bd9dbeaeb1 /gdbserver
parentfd2dec2a45a73154d9824071ebb8664a39a69174 (diff)
gdb: make inferior::m_cwd an std::string
Same idea as the previous patch, but for m_cwd. To keep things consistent across the board, change get_inferior_cwd as well, which is shared with GDBserver. So update the related GDBserver code too. Change-Id: Ia2c047fda738d45f3d18bc999eb67ceb8400ce4e
Diffstat (limited to 'gdbserver')
-rw-r--r--gdbserver/inferiors.cc16
-rw-r--r--gdbserver/inferiors.h4
-rw-r--r--gdbserver/server.cc6
3 files changed, 12 insertions, 14 deletions
diff --git a/gdbserver/inferiors.cc b/gdbserver/inferiors.cc
index 0a09de7907..32f847812e 100644
--- a/gdbserver/inferiors.cc
+++ b/gdbserver/inferiors.cc
@@ -28,8 +28,10 @@ std::list<thread_info *> all_threads;
struct thread_info *current_thread;
-/* The current working directory used to start the inferior. */
-static const char *current_inferior_cwd = NULL;
+/* The current working directory used to start the inferior.
+
+ Empty if not specified. */
+static std::string current_inferior_cwd;
struct thread_info *
add_thread (ptid_t thread_id, void *target_data)
@@ -235,7 +237,7 @@ switch_to_process (process_info *proc)
/* See gdbsupport/common-inferior.h. */
-const char *
+const std::string &
get_inferior_cwd ()
{
return current_inferior_cwd;
@@ -244,11 +246,7 @@ get_inferior_cwd ()
/* See inferiors.h. */
void
-set_inferior_cwd (const char *cwd)
+set_inferior_cwd (std::string cwd)
{
- xfree ((void *) current_inferior_cwd);
- if (cwd != NULL)
- current_inferior_cwd = xstrdup (cwd);
- else
- current_inferior_cwd = NULL;
+ current_inferior_cwd = std::move (cwd);
}
diff --git a/gdbserver/inferiors.h b/gdbserver/inferiors.h
index 3b8959a28c..1e0fe67033 100644
--- a/gdbserver/inferiors.h
+++ b/gdbserver/inferiors.h
@@ -154,8 +154,8 @@ void *thread_target_data (struct thread_info *);
struct regcache *thread_regcache_data (struct thread_info *);
void set_thread_regcache_data (struct thread_info *, struct regcache *);
-/* Set the inferior current working directory. If CWD is NULL, unset
+/* Set the inferior current working directory. If CWD is empty, unset
the directory. */
-void set_inferior_cwd (const char *cwd);
+void set_inferior_cwd (std::string cwd);
#endif /* GDBSERVER_INFERIORS_H */
diff --git a/gdbserver/server.cc b/gdbserver/server.cc
index 32dcc05924..193c3d9d7d 100644
--- a/gdbserver/server.cc
+++ b/gdbserver/server.cc
@@ -949,17 +949,17 @@ handle_general_set (char *own_buf)
{
std::string path = hex2str (p);
- set_inferior_cwd (path.c_str ());
-
if (remote_debug)
debug_printf (_("[Set the inferior's current directory to %s]\n"),
path.c_str ());
+
+ set_inferior_cwd (std::move (path));
}
else
{
/* An empty argument means that we should clear out any
previously set cwd for the inferior. */
- set_inferior_cwd (NULL);
+ set_inferior_cwd ("");
if (remote_debug)
debug_printf (_("\