From: Andrew Burgess <aburgess@redhat.com>
To: Tom Tromey <tom@tromey.com>, gdb-patches@sourceware.org
Cc: Tom Tromey <tom@tromey.com>
Subject: Re: [PATCH] Use TARGET_SYSROOT_PREFIX in more places
Date: Mon, 11 Dec 2023 13:27:57 +0000 [thread overview]
Message-ID: <87msugg97m.fsf@redhat.com> (raw)
In-Reply-To: <20231210231151.4063017-1-tom@tromey.com>
Tom Tromey <tom@tromey.com> writes:
> I found some spots using "target:"; I think it's better to use the
> define everywhere, so this changes these to use TARGET_SYSROOT_PREFIX.
> In some spots, is_target_filename is used rather than an explicit
> check.
Looks good.
Approved-By: Andrew Burgess <aburgess@redhat.com>
Thanks,
Andrew
> ---
> gdb/build-id.c | 2 +-
> gdb/gdb_bfd.h | 8 ++++++++
> gdb/symfile.c | 18 ++++++++++--------
> 3 files changed, 19 insertions(+), 9 deletions(-)
>
> diff --git a/gdb/build-id.c b/gdb/build-id.c
> index f68384f0197..6abf04ffacd 100644
> --- a/gdb/build-id.c
> +++ b/gdb/build-id.c
> @@ -90,7 +90,7 @@ build_id_to_debug_bfd_1 (const std::string &link, size_t build_id_len,
> /* lrealpath() is expensive even for the usually non-existent files. */
> gdb::unique_xmalloc_ptr<char> filename_holder;
> const char *filename = nullptr;
> - if (startswith (link, TARGET_SYSROOT_PREFIX))
> + if (is_target_filename (link))
> filename = link.c_str ();
> else if (access (link.c_str (), F_OK) == 0)
> {
> diff --git a/gdb/gdb_bfd.h b/gdb/gdb_bfd.h
> index 604365b61b1..eeb782edcfc 100644
> --- a/gdb/gdb_bfd.h
> +++ b/gdb/gdb_bfd.h
> @@ -45,6 +45,14 @@ struct registry_accessor<bfd>
>
> int is_target_filename (const char *name);
>
> +/* An overload for strings. */
> +
> +static inline int
> +is_target_filename (const std::string &name)
> +{
> + return is_target_filename (name.c_str ());
> +}
> +
> /* Returns nonzero if the filename associated with ABFD starts with
> TARGET_SYSROOT_PREFIX, zero otherwise. */
>
> diff --git a/gdb/symfile.c b/gdb/symfile.c
> index 09aa70be1d5..2bfe36ee6ef 100644
> --- a/gdb/symfile.c
> +++ b/gdb/symfile.c
> @@ -1413,8 +1413,9 @@ find_separate_debug_file (const char *dir,
> Keep backward compatibility so that DEBUG_FILE_DIRECTORY being "" will
> cause "/..." lookups. */
>
> - bool target_prefix = startswith (dir, "target:");
> - const char *dir_notarget = target_prefix ? dir + strlen ("target:") : dir;
> + bool target_prefix = is_target_filename (dir);
> + const char *dir_notarget
> + = target_prefix ? dir + strlen (TARGET_SYSROOT_PREFIX) : dir;
> std::vector<gdb::unique_xmalloc_ptr<char>> debugdir_vec
> = dirnames_to_char_ptr_vec (debug_file_directory.c_str ());
> gdb::unique_xmalloc_ptr<char> canon_sysroot
> @@ -1443,7 +1444,7 @@ find_separate_debug_file (const char *dir,
>
> for (const gdb::unique_xmalloc_ptr<char> &debugdir : debugdir_vec)
> {
> - debugfile = target_prefix ? "target:" : "";
> + debugfile = target_prefix ? TARGET_SYSROOT_PREFIX : "";
> debugfile += debugdir;
> debugfile += "/";
> debugfile += drive;
> @@ -1465,7 +1466,7 @@ find_separate_debug_file (const char *dir,
> {
> /* If the file is in the sysroot, try using its base path in
> the global debugfile directory. */
> - debugfile = target_prefix ? "target:" : "";
> + debugfile = target_prefix ? TARGET_SYSROOT_PREFIX : "";
> debugfile += debugdir;
> debugfile += "/";
> debugfile += base_path;
> @@ -1481,12 +1482,13 @@ find_separate_debug_file (const char *dir,
> prefix -- but if that would yield the empty string, we
> don't bother at all, because that would just give the
> same result as above. */
> - if (gdb_sysroot != "target:")
> + if (gdb_sysroot != TARGET_SYSROOT_PREFIX)
> {
> - debugfile = target_prefix ? "target:" : "";
> - if (startswith (gdb_sysroot, "target:"))
> + debugfile = target_prefix ? TARGET_SYSROOT_PREFIX : "";
> + if (is_target_filename (gdb_sysroot))
> {
> - std::string root = gdb_sysroot.substr (strlen ("target:"));
> + std::string root
> + = gdb_sysroot.substr (strlen (TARGET_SYSROOT_PREFIX));
> gdb_assert (!root.empty ());
> debugfile += root;
> }
> --
> 2.43.0
prev parent reply other threads:[~2023-12-11 13:28 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-12-10 23:11 Tom Tromey
2023-12-11 13:27 ` Andrew Burgess [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=87msugg97m.fsf@redhat.com \
--to=aburgess@redhat.com \
--cc=gdb-patches@sourceware.org \
--cc=tom@tromey.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).