gdb: change file_file_name to return an std::string
authorSimon Marchi <simon.marchi@polymtl.ca>
Thu, 7 Apr 2022 20:43:05 +0000 (16:43 -0400)
committerSimon Marchi <simon.marchi@polymtl.ca>
Fri, 8 Apr 2022 00:31:31 +0000 (20:31 -0400)
Straightforward change, return an std::string instead of a
gdb::unique_xmalloc_ptr<char>.  No behavior change expected.

Change-Id: Ia5e94c94221c35f978bb1b7bdffbff7209e0520e

gdb/dwarf2/line-header.c
gdb/dwarf2/line-header.h
gdb/dwarf2/macro.c

index 4807fcaa58394a36cfd7dc9747a11a315fd35dfd..77e7e553b21ec1d2600b186268efb227f43de80f 100644 (file)
@@ -60,7 +60,7 @@ line_header::add_file_name (const char *name,
   m_file_names.emplace_back (name, d_index, mod_time, length);
 }
 
-gdb::unique_xmalloc_ptr<char>
+std::string
 line_header::file_file_name (int file) const
 {
   /* Is the file number a valid index into the line header's file name
@@ -73,26 +73,20 @@ line_header::file_file_name (int file) const
        {
          const char *dir = fe->include_dir (this);
          if (dir != NULL)
-           return gdb::unique_xmalloc_ptr<char> (concat (dir, SLASH_STRING,
-                                                         fe->name,
-                                                         (char *) NULL));
+           return string_printf ("%s/%s", dir, fe->name);
        }
-      return make_unique_xstrdup (fe->name);
+
+      return fe->name;
     }
   else
     {
       /* The compiler produced a bogus file number.  We can at least
         record the macro definitions made in the file, even if we
         won't be able to find the file by name.  */
-      char fake_name[80];
-
-      xsnprintf (fake_name, sizeof (fake_name),
-                "<bad macro file number %d>", file);
-
       complaint (_("bad file number in macro information (%d)"),
                 file);
 
-      return make_unique_xstrdup (fake_name);
+      return string_printf ("<bad macro file number %d>", file);
     }
 }
 
index 8fb44be56b2e4eb3638ad9a60d2107f19ac74eb5..252dddd846b27f41d2bcb2144a130faea278018b 100644 (file)
@@ -163,10 +163,8 @@ struct line_header
   const gdb_byte *statement_program_start {}, *statement_program_end {};
 
   /* Return file name relative to the compilation directory of file
-     number I in this object's file name table.  The result is
-     allocated using xmalloc; the caller is responsible for freeing
-     it.  */
-  gdb::unique_xmalloc_ptr<char> file_file_name (int file) const;
+     number FILE in this object's file name table.  */
+  std::string file_file_name (int file) const;
 
  private:
   /* The include_directories table.  Note these are observing
index b378d797479292a4ccec1c5452802938e36a6a53..99c3653a2c3a27cf264346cdb35deeb6c4d9dbc9 100644 (file)
@@ -52,7 +52,7 @@ macro_start_file (buildsym_compunit *builder,
                  const struct line_header *lh)
 {
   /* File name relative to the compilation directory of this source file.  */
-  gdb::unique_xmalloc_ptr<char> file_name = lh->file_file_name (file);
+  std::string file_name = lh->file_file_name (file);
 
   if (! current_file)
     {
@@ -62,11 +62,11 @@ macro_start_file (buildsym_compunit *builder,
 
       /* If we have no current file, then this must be the start_file
         directive for the compilation unit's main source file.  */
-      current_file = macro_set_main (macro_table, file_name.get ());
+      current_file = macro_set_main (macro_table, file_name.c_str ());
       macro_define_special (macro_table);
     }
   else
-    current_file = macro_include (current_file, line, file_name.get ());
+    current_file = macro_include (current_file, line, file_name.c_str ());
 
   return current_file;
 }