From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 89068 invoked by alias); 12 Jun 2017 16:14:13 -0000 Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org Received: (qmail 87777 invoked by uid 89); 12 Jun 2017 16:14:12 -0000 Authentication-Results: sourceware.org; auth=none X-Spam-SWARE-Status: No, score=-26.9 required=5.0 tests=BAYES_00,GIT_PATCH_0,GIT_PATCH_1,GIT_PATCH_2,GIT_PATCH_3,SPF_HELO_PASS,T_RP_MATCHES_RCVD autolearn=ham version=3.3.2 spammy=*grow X-HELO: mx1.redhat.com Received: from mx1.redhat.com (HELO mx1.redhat.com) (209.132.183.28) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Mon, 12 Jun 2017 16:14:10 +0000 Received: from smtp.corp.redhat.com (int-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.11]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 2882F15567 for ; Mon, 12 Jun 2017 16:14:14 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mx1.redhat.com 2882F15567 Authentication-Results: ext-mx05.extmail.prod.ext.phx2.redhat.com; dmarc=none (p=none dis=none) header.from=redhat.com Authentication-Results: ext-mx05.extmail.prod.ext.phx2.redhat.com; spf=pass smtp.mailfrom=palves@redhat.com DKIM-Filter: OpenDKIM Filter v2.11.0 mx1.redhat.com 2882F15567 Received: from cascais.lan (ovpn04.gateway.prod.ext.ams2.redhat.com [10.39.146.4]) by smtp.corp.redhat.com (Postfix) with ESMTP id 8F7D58386E for ; Mon, 12 Jun 2017 16:14:13 +0000 (UTC) From: Pedro Alves To: gdb-patches@sourceware.org Subject: [PATCH 3/6] Code cleanup: dwarf2read.c: Add data_buf::append_uint Date: Mon, 12 Jun 2017 16:14:00 -0000 Message-Id: <1497284051-13795-3-git-send-email-palves@redhat.com> In-Reply-To: <1497284051-13795-1-git-send-email-palves@redhat.com> References: <1497284051-13795-1-git-send-email-palves@redhat.com> In-Reply-To: <8efc0742-1014-4fe0-6948-f40a9c5c4975@redhat.com> References: <8efc0742-1014-4fe0-6948-f40a9c5c4975@redhat.com> X-SW-Source: 2017-06/txt/msg00326.txt.bz2 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 e3e980d..4c8657c 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,5 +1,13 @@ 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. (file_write (FILE *, const std::vector&)): Delete. (data_buf::file_write): Call ::fwrite directly. diff --git a/gdb/dwarf2read.c b/gdb/dwarf2read.c index 55b3033..63a591e 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.5.5