From 632c5372771a6f167f3be554b2f84582169ffc07 Mon Sep 17 00:00:00 2001 From: Andrew Burgess Date: Wed, 19 Jun 2024 11:13:14 +0100 Subject: [PATCH] gdb: add overloads of gdb_tilde_expand Like the previous commit, add two overloads of gdb_tilde_expand, one takes std::string and other takes gdb::unique_xmalloc_ptr. Make use of these overloads throughout GDB and gdbserver. There should be no user visible changes after this commit. Approved-By: Tom Tromey --- gdb/completer.c | 2 +- gdb/nat/fork-inferior.c | 2 +- gdbserver/win32-low.cc | 2 +- gdbsupport/gdb_tilde_expand.h | 18 ++++++++++++++++-- 4 files changed, 19 insertions(+), 5 deletions(-) diff --git a/gdb/completer.c b/gdb/completer.c index bd5118f53c5..1008ec23ba5 100644 --- a/gdb/completer.c +++ b/gdb/completer.c @@ -236,7 +236,7 @@ filename_completer (struct cmd_list_element *ignore, trailing '/' ourselves now. */ if (!tracker.from_readline ()) { - std::string expanded = gdb_tilde_expand (p_rl.get ()); + std::string expanded = gdb_tilde_expand (p_rl); struct stat finfo; const bool isdir = (stat (expanded.c_str (), &finfo) == 0 && S_ISDIR (finfo.st_mode)); diff --git a/gdb/nat/fork-inferior.c b/gdb/nat/fork-inferior.c index 2fd9cba52ee..41765b102bc 100644 --- a/gdb/nat/fork-inferior.c +++ b/gdb/nat/fork-inferior.c @@ -321,7 +321,7 @@ fork_inferior (const char *exec_file, const std::string &allargs, char **env, { /* Expand before forking because between fork and exec, the child process may only execute async-signal-safe operations. */ - inferior_cwd = gdb_tilde_expand (inferior_cwd.c_str ()); + inferior_cwd = gdb_tilde_expand (inferior_cwd); } /* If there's any initialization of the target layers that must diff --git a/gdbserver/win32-low.cc b/gdbserver/win32-low.cc index f672e542d1b..41eed201c10 100644 --- a/gdbserver/win32-low.cc +++ b/gdbserver/win32-low.cc @@ -501,7 +501,7 @@ create_process (const char *program, char *args, /* current directory */ (inferior_cwd.empty () ? NULL - : gdb_tilde_expand (inferior_cwd.c_str ()).c_str()), + : gdb_tilde_expand (inferior_cwd).c_str()), get_client_state ().disable_randomization, &si, /* start info */ pi); /* proc info */ diff --git a/gdbsupport/gdb_tilde_expand.h b/gdbsupport/gdb_tilde_expand.h index fbd410dd133..f16f3a405ee 100644 --- a/gdbsupport/gdb_tilde_expand.h +++ b/gdbsupport/gdb_tilde_expand.h @@ -20,7 +20,21 @@ #ifndef COMMON_GDB_TILDE_EXPAND_H #define COMMON_GDB_TILDE_EXPAND_H -/* Perform tilde expansion on DIR, and return the full path. */ -extern std::string gdb_tilde_expand (const char *dir); +/* Perform tilde expansion on PATH, and return the full path. */ +extern std::string gdb_tilde_expand (const char *path); + +/* Overload of gdb_tilde_expand that takes std::string. */ +static inline std::string +gdb_tilde_expand (const std::string &path) +{ + return gdb_tilde_expand (path.c_str ()); +} + +/* Overload of gdb_tilde_expand that takes gdb::unique_xmalloc_ptr. */ +static inline std::string +gdb_tilde_expand (const gdb::unique_xmalloc_ptr &path) +{ + return gdb_tilde_expand (path.get ()); +} #endif /* COMMON_GDB_TILDE_EXPAND_H */