aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTom Tromey <tom@tromey.com>2022-07-15 19:05:29 -0600
committerTom Tromey <tom@tromey.com>2022-12-26 11:01:10 -0700
commit4d78ce772370fa48b9a749f81205076f26eba846 (patch)
treea26f1109b9cf24c35a21beaa4a02baee61bb04e1
parent639601f90d1fda494e1d9c17b7f71d31e3b0a5e3 (diff)
downloadfsf-binutils-gdb-4d78ce772370fa48b9a749f81205076f26eba846.zip
fsf-binutils-gdb-4d78ce772370fa48b9a749f81205076f26eba846.tar.gz
fsf-binutils-gdb-4d78ce772370fa48b9a749f81205076f26eba846.tar.bz2
Add initializers to comp_unit_head
PR symtab/29343 points out that it would be beneficial if comp_unit_head had a constructor and used initializers. This patch implements this. I'm unsure if this is sufficient to close the bug, but at least it's a step. Bug: https://sourceware.org/bugzilla/show_bug.cgi?id=29343
-rw-r--r--gdb/dwarf2/comp-unit-head.h24
-rw-r--r--gdb/dwarf2/cu.h2
-rw-r--r--gdb/dwarf2/read.c2
-rw-r--r--gdb/dwarf2/read.h2
4 files changed, 14 insertions, 16 deletions
diff --git a/gdb/dwarf2/comp-unit-head.h b/gdb/dwarf2/comp-unit-head.h
index a7ee3e6..7579fe7 100644
--- a/gdb/dwarf2/comp-unit-head.h
+++ b/gdb/dwarf2/comp-unit-head.h
@@ -34,36 +34,36 @@
translation, looks like this. */
struct comp_unit_head
{
- unsigned int length;
- unsigned char version;
- unsigned char addr_size;
- unsigned char signed_addr_p;
- sect_offset abbrev_sect_off;
+ unsigned int length = 0;
+ unsigned char version = 0;
+ unsigned char addr_size = 0;
+ unsigned char signed_addr_p = 0;
+ sect_offset abbrev_sect_off {};
/* Size of file offsets; either 4 or 8. */
- unsigned int offset_size;
+ unsigned int offset_size = 0;
/* Size of the length field; either 4 or 12. */
- unsigned int initial_length_size;
+ unsigned int initial_length_size = 0;
- enum dwarf_unit_type unit_type;
+ enum dwarf_unit_type unit_type {};
/* Offset to first die in this cu from the start of the cu.
This will be the first byte following the compilation unit header. */
- cu_offset first_die_cu_offset;
+ cu_offset first_die_cu_offset {};
/* Offset to the first byte of this compilation unit header in the
.debug_info section, for resolving relative reference dies. */
- sect_offset sect_off;
+ sect_offset sect_off {};
/* For types, offset in the type's DIE of the type defined by this TU. */
- cu_offset type_cu_offset_in_tu;
+ cu_offset type_cu_offset_in_tu {};
/* 64-bit signature of this unit. For type units, it denotes the signature of
the type (DW_UT_type in DWARF 4, additionally DW_UT_split_type in DWARF 5).
Also used in DWARF 5, to denote the dwo id when the unit type is
DW_UT_skeleton or DW_UT_split_compile. */
- ULONGEST signature;
+ ULONGEST signature = 0;
/* Return the total length of the CU described by this header. */
unsigned int get_length () const
diff --git a/gdb/dwarf2/cu.h b/gdb/dwarf2/cu.h
index 5297509..b126aca 100644
--- a/gdb/dwarf2/cu.h
+++ b/gdb/dwarf2/cu.h
@@ -98,7 +98,7 @@ struct dwarf2_cu
void add_dependence (struct dwarf2_per_cu_data *ref_per_cu);
/* The header of the compilation unit. */
- struct comp_unit_head header {};
+ struct comp_unit_head header;
/* Base address of this compilation unit. */
gdb::optional<CORE_ADDR> base_address;
diff --git a/gdb/dwarf2/read.c b/gdb/dwarf2/read.c
index 7bd12c1..28fadb8 100644
--- a/gdb/dwarf2/read.c
+++ b/gdb/dwarf2/read.c
@@ -23580,8 +23580,6 @@ dwarf2_per_cu_data::get_header () const
const gdb_byte *info_ptr
= this->section->buffer + to_underlying (this->sect_off);
- memset (&m_header, 0, sizeof (m_header));
-
read_comp_unit_head (&m_header, info_ptr, this->section,
rcuh_kind::COMPILE);
diff --git a/gdb/dwarf2/read.h b/gdb/dwarf2/read.h
index dd71826..0dc4e2e 100644
--- a/gdb/dwarf2/read.h
+++ b/gdb/dwarf2/read.h
@@ -206,7 +206,7 @@ public:
Don't access this field directly, use the get_header method instead. It
should be private, but we can't make it private at the moment. */
- mutable comp_unit_head m_header {};
+ mutable comp_unit_head m_header;
/* The file and directory for this CU. This is cached so that we
don't need to re-examine the DWO in some situations. This may be