Convert read_indirect_line_string to a method
authorTom Tromey <tom@tromey.com>
Thu, 26 Mar 2020 15:28:08 +0000 (09:28 -0600)
committerTom Tromey <tom@tromey.com>
Thu, 26 Mar 2020 15:28:19 +0000 (09:28 -0600)
This changes read_indirect_line_string to be a method on
dwarf2_per_objfile.  This makes it a bit simpler to share between
files.

gdb/ChangeLog
2020-03-26  Tom Tromey  <tom@tromey.com>

* dwarf2/read.h (struct dwarf2_per_objfile) <read_line_string>:
Declare method.
* dwarf2/read.c (read_attribute_value): Update.
(dwarf2_per_objfile::read_line_string): Rename from
read_indirect_line_string.
(read_formatted_entries): Update.

gdb/ChangeLog
gdb/dwarf2/read.c
gdb/dwarf2/read.h

index 1472f6679c02dccab70c399d2154af82d230ad59..5e25a9befb56bd0e74622f4fb530c1ab789e28d1 100644 (file)
@@ -1,3 +1,12 @@
+2020-03-26  Tom Tromey  <tom@tromey.com>
+
+       * dwarf2/read.h (struct dwarf2_per_objfile) <read_line_string>:
+       Declare method.
+       * dwarf2/read.c (read_attribute_value): Update.
+       (dwarf2_per_objfile::read_line_string): Rename from
+       read_indirect_line_string.
+       (read_formatted_entries): Update.
+
 2020-03-26  Tom Tromey  <tom@tromey.com>
 
        * dwarf2/macro.c (dwarf_decode_macro_bytes): Use objfile local
index e00151e8b16d8945a360a1f23ad3cd292cdf52c0..dbd5b6a48022c4db062e0961ddb924fb7b8c4368 100644 (file)
@@ -1251,10 +1251,6 @@ static const char *read_indirect_string
   (struct dwarf2_per_objfile *dwarf2_per_objfile, bfd *, const gdb_byte *,
    const struct comp_unit_head *, unsigned int *);
 
-static const char *read_indirect_line_string
-  (struct dwarf2_per_objfile *dwarf2_per_objfile, bfd *, const gdb_byte *,
-   const struct comp_unit_head *, unsigned int *);
-
 static const char *read_indirect_string_at_offset
   (struct dwarf2_per_objfile *dwarf2_per_objfile, LONGEST str_offset);
 
@@ -18550,9 +18546,9 @@ read_attribute_value (const struct die_reader_specs *reader,
     case DW_FORM_line_strp:
       if (!cu->per_cu->is_dwz)
        {
-         DW_STRING (attr) = read_indirect_line_string (dwarf2_per_objfile,
-                                                       abfd, info_ptr,
-                                                       cu_header, &bytes_read);
+         DW_STRING (attr)
+           = dwarf2_per_objfile->read_line_string (info_ptr, cu_header,
+                                                   &bytes_read);
          DW_STRING_IS_CANONICAL (attr) = 0;
          info_ptr += bytes_read;
          break;
@@ -18786,21 +18782,17 @@ read_indirect_string (struct dwarf2_per_objfile *dwarf2_per_objfile, bfd *abfd,
   return read_indirect_string_at_offset (dwarf2_per_objfile, str_offset);
 }
 
-/* Return pointer to string at .debug_line_str offset as read from BUF.
-   BUF is assumed to be in a compilation unit described by CU_HEADER.
-   Return *BYTES_READ_PTR count of bytes read from BUF.  */
+/* See read.h.  */
 
-static const char *
-read_indirect_line_string (struct dwarf2_per_objfile *dwarf2_per_objfile,
-                          bfd *abfd, const gdb_byte *buf,
+const char *
+dwarf2_per_objfile::read_line_string (const gdb_byte *buf,
                           const struct comp_unit_head *cu_header,
                           unsigned int *bytes_read_ptr)
 {
+  bfd *abfd = objfile->obfd;
   LONGEST str_offset = cu_header->read_offset (abfd, buf, bytes_read_ptr);
 
-  return dwarf2_per_objfile->line_str.read_string (dwarf2_per_objfile->objfile,
-                                                  str_offset,
-                                                  "DW_FORM_line_strp");
+  return line_str.read_string (objfile, str_offset, "DW_FORM_line_strp");
 }
 
 /* Given index ADDR_INDEX in .debug_addr, fetch the value.
@@ -19284,10 +19276,10 @@ read_formatted_entries (struct dwarf2_per_objfile *dwarf2_per_objfile,
              break;
 
            case DW_FORM_line_strp:
-             string.emplace (read_indirect_line_string (dwarf2_per_objfile,
-                                                        abfd, buf,
-                                                        cu_header,
-                                                        &bytes_read));
+             string.emplace
+               (dwarf2_per_objfile->read_line_string (buf,
+                                                      cu_header,
+                                                      &bytes_read));
              buf += bytes_read;
              break;
 
index c5a8ecf8a6ae6ed43e360584a97d25d052294875..039113f87e992c3bb412d2ff3afba66ccdf15997 100644 (file)
@@ -110,6 +110,14 @@ struct dwarf2_per_objfile
 
   /* Free all cached compilation units.  */
   void free_cached_comp_units ();
+
+  /* Return pointer to string at .debug_line_str offset as read from BUF.
+     BUF is assumed to be in a compilation unit described by CU_HEADER.
+     Return *BYTES_READ_PTR count of bytes read from BUF.  */
+  const char *read_line_string (const gdb_byte *buf,
+                               const struct comp_unit_head *cu_header,
+                               unsigned int *bytes_read_ptr);
+
 private:
   /* This function is mapped across the sections and remembers the
      offset and size of each of the debugging sections we are