From: Tom Tromey Date: Sun, 10 Dec 2023 22:37:34 +0000 (-0700) Subject: Use TARGET_SYSROOT_PREFIX in more places X-Git-Tag: binutils-2_42~634 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=9394690cb87b5ddc575b333bd0595b07a7a72c60;p=thirdparty%2Fbinutils-gdb.git Use TARGET_SYSROOT_PREFIX in more places 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. Approved-By: Andrew Burgess --- 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 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 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> debugdir_vec = dirnames_to_char_ptr_vec (debug_file_directory.c_str ()); gdb::unique_xmalloc_ptr canon_sysroot @@ -1443,7 +1444,7 @@ find_separate_debug_file (const char *dir, for (const gdb::unique_xmalloc_ptr &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; }