Re: [PATCH] gdb/gdbsupport: Use LOCALAPPDATA for index cache on windows

Simon Marchi via Gdb-patches
2020-12-08T15:10:20Z

[-- Attachment #1: Type: text/plain, Size: 407 bytes --]

On 2020-12-08 9:51 a.m., Alexander Fedotov wrote:
> Well, I don't know if other GDB parts depend on the final name. I just
> followed common convention. If there are no such dependencies so I
> don't mind using your suggestion:)

GDB doesn't depend on a particular directory, I think it's better to
follow the standards of the platform as much as possible. Does the
attached patch look ok to you?

Simon

[-- Attachment #2: 0001-gdbsupport-Use-LOCALAPPDATA-to-determine-cache-dir.patch --]
[-- Type: text/x-patch, Size: 1684 bytes --]

From 60a7223fdd196d540f87504833166f558c95c035 Mon Sep 17 00:00:00 2001
From: Alexander Fedotov <alfedotov@gmail.com>
Date: Tue, 8 Dec 2020 13:07:23 +0300
Subject: [PATCH] gdbsupport: Use LOCALAPPDATA to determine cache dir

Use the LOCALAPPDATA environment variable to determine the cache dir
when running on Windows with native command line, otherwise nasty
warning "Couldn't determine a path for index cached directory" appears.

Change-Id: I77903f9f0cb4743555866b8aea892cef55132589
---
gdbsupport/ChangeLog | 5 +++++
gdbsupport/pathstuff.cc | 10 ++++++++++
2 files changed, 15 insertions(+)

diff --git a/gdbsupport/ChangeLog b/gdbsupport/ChangeLog
index 88a0413e8b9f..417e44aff31d 100644
--- a/gdbsupport/ChangeLog
+++ b/gdbsupport/ChangeLog
@@ -1,3 +1,8 @@
+2020-12-08 Alexander Fedotov <alfedotov@gmail.com>
+
+ * pathstuff.cc (get_standard_cache_dir): Use LOCALAPPDATA environment
+ variable when running on Windows.
+
2020-12-01 Andrew Burgess <andrew.burgess@embecosm.com>

* tdesc.cc (print_xml_feature::visit): Print enum fields using
diff --git a/gdbsupport/pathstuff.cc b/gdbsupport/pathstuff.cc
index 311456720e4a..b23e6ed064cf 100644
--- a/gdbsupport/pathstuff.cc
+++ b/gdbsupport/pathstuff.cc
@@ -238,6 +238,16 @@ get_standard_cache_dir ()
return string_printf ("%s/" HOME_CACHE_DIR "/gdb", abs.get ());
}

+#ifdef WIN32
+ const char *win_home = getenv ("LOCALAPPDATA");
+ if (win_home != NULL)
+ {
+ /* Make sure the path is absolute and tilde-expanded. */
+ gdb::unique_xmalloc_ptr<char> abs (gdb_abspath (win_home));
+ return string_printf ("%s/gdb", abs.get ());
+ }
+#endif
+
return {};
}

--
2.29.2