]> git.ipfire.org Git - thirdparty/binutils-gdb.git/commitdiff
Use TARGET_SYSROOT_PREFIX in more places
authorTom Tromey <tom@tromey.com>
Sun, 10 Dec 2023 22:37:34 +0000 (15:37 -0700)
committerTom Tromey <tom@tromey.com>
Mon, 11 Dec 2023 16:04:42 +0000 (09:04 -0700)
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 <aburgess@redhat.com>
gdb/build-id.c
gdb/gdb_bfd.h
gdb/symfile.c

index f68384f0197e939835fb82df39400cc451a36fec..6abf04ffacd6378191d44d5531293764d4e83f5a 100644 (file)
@@ -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)
     {
index 604365b61b1f99d64390fa52480dbcffe7f62a47..eeb782edcfccbac14f5aba05b6274aa5173163b6 100644 (file)
@@ -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.  */
 
index 09aa70be1d56eb28b7ae3bb91074c6ad816d7b6d..2bfe36ee6ef31e813f1429e8b86c1c403cf79c33 100644 (file)
@@ -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;
                }