From 4d78ce772370fa48b9a749f81205076f26eba846 Mon Sep 17 00:00:00 2001 From: Tom Tromey Date: Fri, 15 Jul 2022 19:05:29 -0600 Subject: [PATCH] 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 --- gdb/dwarf2/comp-unit-head.h | 24 ++++++++++++------------ gdb/dwarf2/cu.h | 2 +- gdb/dwarf2/read.c | 2 -- gdb/dwarf2/read.h | 2 +- 4 files changed, 14 insertions(+), 16 deletions(-) diff --git a/gdb/dwarf2/comp-unit-head.h b/gdb/dwarf2/comp-unit-head.h index a7ee3e64546..7579fe7fa29 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 52975095871..b126acab7b2 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 base_address; diff --git a/gdb/dwarf2/read.c b/gdb/dwarf2/read.c index 7bd12c107e2..28fadb886aa 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 dd718266883..0dc4e2e885c 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 -- 2.30.2