From c2f134ac418eafca850e7095d789a01ec1142fc4 Mon Sep 17 00:00:00 2001 From: Pedro Alves Date: Sat, 10 Jun 2017 16:51:14 +0100 Subject: [PATCH] Code cleanup: dwarf2read.c: Add data_buf::append_uint This avoids having to specify the integer size twice in the same line. gdb/ChangeLog: 2017-06-12 Pedro Alves * dwarf2read.c (data_buf::append_space): Rename to... (data_buf::grow): ... this, and make private. Adjust all callers. (data_buf::append_uint): New method. (add_address_entry, write_one_signatured_type) (write_psymtabs_to_index): Use it. --- gdb/ChangeLog | 8 +++++++ gdb/dwarf2read.c | 58 ++++++++++++++++++++++++------------------------ 2 files changed, 37 insertions(+), 29 deletions(-) diff --git a/gdb/ChangeLog b/gdb/ChangeLog index e3e980dfa90..4c8657cdc39 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,11 @@ +2017-06-12 Pedro Alves + + * dwarf2read.c (data_buf::append_space): Rename to... + (data_buf::grow): ... this, and make private. Adjust all callers. + (data_buf::append_uint): New method. + (add_address_entry, write_one_signatured_type) + (write_psymtabs_to_index): Use it. + 2017-06-12 Pedro Alves * dwarf2read.c (file_write(FILE *, const void *, size_t)): Delete. diff --git a/gdb/dwarf2read.c b/gdb/dwarf2read.c index 55b30334811..63a591e5ebd 100644 --- a/gdb/dwarf2read.c +++ b/gdb/dwarf2read.c @@ -23199,29 +23199,28 @@ dwarf2_per_objfile_free (struct objfile *objfile, void *d) class data_buf { public: - /* Add SIZE bytes at the end of the buffer. Returns a pointer to - the start of the new block. */ - gdb_byte *append_space (size_t size) - { - m_vec.resize (m_vec.size () + size); - return &*m_vec.end () - size; - } - /* Copy DATA to the end of the buffer. */ template void append_data (const T &data) { std::copy (reinterpret_cast (&data), reinterpret_cast (&data + 1), - append_space (sizeof (data))); + grow (sizeof (data))); } - /* Copy CSTR (a null-terminated string) to the end of the buffer. - The terminating null is appended too. */ + /* Copy CSTR (a zero-terminated string) to the end of buffer. The + terminating zero is appended too. */ void append_cstr0 (const char *cstr) { const size_t size = strlen (cstr) + 1; - std::copy (cstr, cstr + size, append_space (size)); + std::copy (cstr, cstr + size, grow (size)); + } + + /* Accept a host-format integer in VAL and append it to the buffer + as a target-format integer which is LEN bytes long. */ + void append_uint (size_t len, bfd_endian byte_order, ULONGEST val) + { + ::store_unsigned_integer (grow (len), len, byte_order, val); } /* Return the size of the buffer. */ @@ -23238,6 +23237,14 @@ public: } private: + /* Grow SIZE bytes at the end of the buffer. Returns a pointer to + the start of the new block. */ + gdb_byte *grow (size_t size) + { + m_vec.resize (m_vec.size () + size); + return &*m_vec.end () - size; + } + std::vector m_vec; }; @@ -23494,10 +23501,8 @@ add_address_entry (struct objfile *objfile, data_buf &addr_vec, baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile)); - store_unsigned_integer (addr_vec.append_space (8), 8, BFD_ENDIAN_LITTLE, - start - baseaddr); - store_unsigned_integer (addr_vec.append_space (8), 8, BFD_ENDIAN_LITTLE, - end - baseaddr); + addr_vec.append_uint (8, BFD_ENDIAN_LITTLE, start - baseaddr); + addr_vec.append_uint (8, BFD_ENDIAN_LITTLE, end - baseaddr); addr_vec.append_data (MAYBE_SWAP (cu_index)); } @@ -23664,14 +23669,11 @@ write_one_signatured_type (void **slot, void *d) psymtab->n_static_syms, info->cu_index, 1); - store_unsigned_integer (info->types_list.append_space (8), 8, - BFD_ENDIAN_LITTLE, - to_underlying (entry->per_cu.sect_off)); - store_unsigned_integer (info->types_list.append_space (8), 8, - BFD_ENDIAN_LITTLE, - to_underlying (entry->type_offset_in_tu)); - store_unsigned_integer (info->types_list.append_space (8), 8, - BFD_ENDIAN_LITTLE, entry->signature); + info->types_list.append_uint (8, BFD_ENDIAN_LITTLE, + to_underlying (entry->per_cu.sect_off)); + info->types_list.append_uint (8, BFD_ENDIAN_LITTLE, + to_underlying (entry->type_offset_in_tu)); + info->types_list.append_uint (8, BFD_ENDIAN_LITTLE, entry->signature); ++info->cu_index; @@ -23782,11 +23784,9 @@ write_psymtabs_to_index (struct objfile *objfile, const char *dir) const auto insertpair = cu_index_htab.emplace (psymtab, i); gdb_assert (insertpair.second); - store_unsigned_integer (cu_list.append_space (8), 8, - BFD_ENDIAN_LITTLE, - to_underlying (per_cu->sect_off)); - store_unsigned_integer (cu_list.append_space (8), 8, - BFD_ENDIAN_LITTLE, per_cu->length); + cu_list.append_uint (8, BFD_ENDIAN_LITTLE, + to_underlying (per_cu->sect_off)); + cu_list.append_uint (8, BFD_ENDIAN_LITTLE, per_cu->length); } /* Dump the address map. */ -- 2.30.2