[2/3] Move some dwarf2_cu methods to new file

Message ID 20210327195604.3371214-3-tom@tromey.com
State New
Headers show
Series
  • Move dwarf2_cu to its own file
Related show

Commit Message

Tom Tromey March 27, 2021, 7:56 p.m.
This moves some of the dwarf2_cu methods to a new file, dwarf2/cu.c.

gdb/ChangeLog
2021-03-27  Tom Tromey  <tom@tromey.com>

	* dwarf2/read.c (dwarf2_cu::addr_sized_int_type)
	(dwarf2_cu::start_symtab, dwarf2_cu::addr_type)
	(dwarf2_cu::dwarf2_cu): Move to cu.c.
	* dwarf2/cu.c: New file.
	* Makefile.in (COMMON_SFILES): Add dwarf2/cu.c.
---
 gdb/ChangeLog     |  8 +++++
 gdb/Makefile.in   |  1 +
 gdb/dwarf2/cu.c   | 89 +++++++++++++++++++++++++++++++++++++++++++++++
 gdb/dwarf2/read.c | 67 -----------------------------------
 4 files changed, 98 insertions(+), 67 deletions(-)
 create mode 100644 gdb/dwarf2/cu.c

-- 
2.26.2

Patch

diff --git a/gdb/Makefile.in b/gdb/Makefile.in
index 359fd11a4de..6c1165eaf92 100644
--- a/gdb/Makefile.in
+++ b/gdb/Makefile.in
@@ -1027,6 +1027,7 @@  COMMON_SFILES = \
 	dwarf2/abbrev.c \
 	dwarf2/attribute.c \
 	dwarf2/comp-unit.c \
+	dwarf2/cu.c \
 	dwarf2/dwz.c \
 	dwarf2/expr.c \
 	dwarf2/frame-tailcall.c \
diff --git a/gdb/dwarf2/cu.c b/gdb/dwarf2/cu.c
new file mode 100644
index 00000000000..4f13f4f9677
--- /dev/null
+++ b/gdb/dwarf2/cu.c
@@ -0,0 +1,89 @@ 
+/* DWARF CU data structure
+
+   Copyright (C) 2021 Free Software Foundation, Inc.
+
+   This file is part of GDB.
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3 of the License, or
+   (at your option) any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
+
+#include "defs.h"
+#include "dwarf2/cu.h"
+#include "dwarf2/read.h"
+
+/* Initialize dwarf2_cu to read PER_CU, in the context of PER_OBJFILE.  */
+
+dwarf2_cu::dwarf2_cu (dwarf2_per_cu_data *per_cu,
+		      dwarf2_per_objfile *per_objfile)
+  : per_cu (per_cu),
+    per_objfile (per_objfile),
+    mark (false),
+    has_loclist (false),
+    checked_producer (false),
+    producer_is_gxx_lt_4_6 (false),
+    producer_is_gcc_lt_4_3 (false),
+    producer_is_icc (false),
+    producer_is_icc_lt_14 (false),
+    producer_is_codewarrior (false),
+    processing_has_namespace_info (false)
+{
+}
+
+/* See cu.h.  */
+
+struct type *
+dwarf2_cu::addr_sized_int_type (bool unsigned_p) const
+{
+  int addr_size = this->per_cu->addr_size ();
+  return this->per_objfile->int_type (addr_size, unsigned_p);
+}
+
+/* Start a symtab for DWARF.  NAME, COMP_DIR, LOW_PC are passed to the
+   buildsym_compunit constructor.  */
+
+struct compunit_symtab *
+dwarf2_cu::start_symtab (const char *name, const char *comp_dir,
+			 CORE_ADDR low_pc)
+{
+  gdb_assert (m_builder == nullptr);
+
+  m_builder.reset (new struct buildsym_compunit
+		   (this->per_objfile->objfile,
+		    name, comp_dir, language, low_pc));
+
+  list_in_scope = get_builder ()->get_file_symbols ();
+
+  get_builder ()->record_debugformat ("DWARF 2");
+  get_builder ()->record_producer (producer);
+
+  processing_has_namespace_info = false;
+
+  return get_builder ()->get_compunit_symtab ();
+}
+
+/* See read.h.  */
+
+struct type *
+dwarf2_cu::addr_type () const
+{
+  struct objfile *objfile = this->per_objfile->objfile;
+  struct type *void_type = objfile_type (objfile)->builtin_void;
+  struct type *addr_type = lookup_pointer_type (void_type);
+  int addr_size = this->per_cu->addr_size ();
+
+  if (TYPE_LENGTH (addr_type) == addr_size)
+    return addr_type;
+
+  addr_type = addr_sized_int_type (addr_type->is_unsigned ());
+  return addr_type;
+}
diff --git a/gdb/dwarf2/read.c b/gdb/dwarf2/read.c
index b11fd0580f7..adb5442c9ab 100644
--- a/gdb/dwarf2/read.c
+++ b/gdb/dwarf2/read.c
@@ -18727,15 +18727,6 @@  dwarf2_per_objfile::int_type (int size_in_bytes, bool unsigned_p) const
   gdb_assert_not_reached ("unable to find suitable integer type");
 }
 
-/* See read.h.  */
-
-struct type *
-dwarf2_cu::addr_sized_int_type (bool unsigned_p) const
-{
-  int addr_size = this->per_cu->addr_size ();
-  return this->per_objfile->int_type (addr_size, unsigned_p);
-}
-
 /* Read the DW_AT_type attribute for a sub-range.  If this attribute is not
    present (which is valid) then compute the default type based on the
    compilation units address size.  */
@@ -21832,29 +21823,6 @@  dwarf2_start_subfile (struct dwarf2_cu *cu, const char *filename,
   cu->get_builder ()->start_subfile (filename);
 }
 
-/* Start a symtab for DWARF.  NAME, COMP_DIR, LOW_PC are passed to the
-   buildsym_compunit constructor.  */
-
-struct compunit_symtab *
-dwarf2_cu::start_symtab (const char *name, const char *comp_dir,
-			 CORE_ADDR low_pc)
-{
-  gdb_assert (m_builder == nullptr);
-
-  m_builder.reset (new struct buildsym_compunit
-		   (this->per_objfile->objfile,
-		    name, comp_dir, language, low_pc));
-
-  list_in_scope = get_builder ()->get_file_symbols ();
-
-  get_builder ()->record_debugformat ("DWARF 2");
-  get_builder ()->record_producer (producer);
-
-  processing_has_namespace_info = false;
-
-  return get_builder ()->get_compunit_symtab ();
-}
-
 static void
 var_decode_location (struct attribute *attr, struct symbol *sym,
 		     struct dwarf2_cu *cu)
@@ -24707,23 +24675,6 @@  dwarf2_per_cu_data::ref_addr_size () const
     return header->offset_size;
 }
 
-/* See read.h.  */
-
-struct type *
-dwarf2_cu::addr_type () const
-{
-  struct objfile *objfile = this->per_objfile->objfile;
-  struct type *void_type = objfile_type (objfile)->builtin_void;
-  struct type *addr_type = lookup_pointer_type (void_type);
-  int addr_size = this->per_cu->addr_size ();
-
-  if (TYPE_LENGTH (addr_type) == addr_size)
-    return addr_type;
-
-  addr_type = addr_sized_int_type (addr_type->is_unsigned ());
-  return addr_type;
-}
-
 /* A helper function for dwarf2_find_containing_comp_unit that returns
    the index of the result, and that searches a vector.  It will
    return a result even if the offset in question does not actually
@@ -24842,24 +24793,6 @@  run_test ()
 
 #endif /* GDB_SELF_TEST */
 
-/* Initialize dwarf2_cu to read PER_CU, in the context of PER_OBJFILE.  */
-
-dwarf2_cu::dwarf2_cu (dwarf2_per_cu_data *per_cu,
-		      dwarf2_per_objfile *per_objfile)
-  : per_cu (per_cu),
-    per_objfile (per_objfile),
-    mark (false),
-    has_loclist (false),
-    checked_producer (false),
-    producer_is_gxx_lt_4_6 (false),
-    producer_is_gcc_lt_4_3 (false),
-    producer_is_icc (false),
-    producer_is_icc_lt_14 (false),
-    producer_is_codewarrior (false),
-    processing_has_namespace_info (false)
-{
-}
-
 /* Initialize basic fields of dwarf_cu CU according to DIE COMP_UNIT_DIE.  */
 
 static void