[1/3] Pass current directory to gdb_abspath
Checks
Context |
Check |
Description |
linaro-tcwg-bot/tcwg_gdb_build--master-arm |
success
|
Build passed
|
linaro-tcwg-bot/tcwg_gdb_check--master-arm |
success
|
Test passed
|
linaro-tcwg-bot/tcwg_gdb_build--master-aarch64 |
success
|
Build passed
|
linaro-tcwg-bot/tcwg_gdb_check--master-aarch64 |
success
|
Test passed
|
Commit Message
Currently, gdb_abspath uses the current_directory global. However,
background threads need to capture this global to avoid races with the
user using "cd".
This patch changes this function to accept a cwd parameter, in
prepration for this.
Bug: https://sourceware.org/bugzilla/show_bug.cgi?id=31716
---
gdbsupport/pathstuff.cc | 6 +++---
gdbsupport/pathstuff.h | 18 +++++++++---------
2 files changed, 12 insertions(+), 12 deletions(-)
@@ -124,17 +124,17 @@ gdb_realpath_keepfile (const char *filename)
/* See gdbsupport/pathstuff.h. */
std::string
-gdb_abspath (const char *path)
+gdb_abspath (const char *path, const char *cwd)
{
gdb_assert (path != NULL && path[0] != '\0');
if (path[0] == '~')
return gdb_tilde_expand (path);
- if (IS_ABSOLUTE_PATH (path) || current_directory == NULL)
+ if (IS_ABSOLUTE_PATH (path) || cwd == NULL)
return path;
- return path_join (current_directory, path);
+ return path_join (cwd, path);
}
/* See gdbsupport/pathstuff.h. */
@@ -30,6 +30,9 @@
/* Path utilities. */
+/* String containing the current directory (what getwd would return). */
+extern char *current_directory;
+
/* Return the real path of FILENAME, expanding all the symbolic links.
Contrary to "gdb_abspath", this function does not use
@@ -47,14 +50,14 @@ extern std::string gdb_realpath_keepfile (const char *filename);
PATH cannot be NULL or the empty string.
This does not resolve symlinks however, use gdb_realpath for that.
- Contrary to "gdb_realpath", this function uses CURRENT_DIRECTORY
- for the path expansion. This may lead to scenarios the current
- working directory (CWD) is different than CURRENT_DIRECTORY.
+ Contrary to "gdb_realpath", this function uses CWD for the path
+ expansion. This may lead to scenarios the current working
+ directory is different than CWD.
- If CURRENT_DIRECTORY is NULL, this function returns a copy of
- PATH. */
+ If CWD is NULL, this function returns a copy of PATH. */
-extern std::string gdb_abspath (const char *path);
+extern std::string gdb_abspath (const char *path,
+ const char *cwd = current_directory);
/* Overload of gdb_abspath which takes std::string. */
@@ -177,7 +180,4 @@ extern const char *get_shell ();
extern gdb::char_vector make_temp_filename (const std::string &f);
-/* String containing the current directory (what getwd would return). */
-extern char *current_directory;
-
#endif /* COMMON_PATHSTUFF_H */