From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 122871 invoked by alias); 30 Apr 2017 00:35:03 -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 122858 invoked by uid 89); 30 Apr 2017 00:35:02 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-24.6 required=5.0 tests=AWL,BAYES_00,GIT_PATCH_0,GIT_PATCH_1,GIT_PATCH_2,GIT_PATCH_3,RCVD_IN_DNSWL_NONE,SPF_SOFTFAIL autolearn=ham version=3.3.2 spammy=H*RU:sk:barracu, Hx-spam-relays-external:sk:barracu, H*r:sk:barracu, HX-HELO:sk:barracu X-HELO: barracuda.ebox.ca Received: from barracuda.ebox.ca (HELO barracuda.ebox.ca) (96.127.255.19) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Sun, 30 Apr 2017 00:35:00 +0000 X-ASG-Debug-ID: 1493512500-0c856e65d51ea4da0001-fS2M51 Received: from smtp.electronicbox.net (smtp.electronicbox.net [96.127.255.82]) by barracuda.ebox.ca with ESMTP id 9d3T89pOZ91eEPZb (version=TLSv1 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Sat, 29 Apr 2017 20:35:00 -0400 (EDT) X-Barracuda-Envelope-From: simon.marchi@polymtl.ca X-Barracuda-RBL-Trusted-Forwarder: 96.127.255.82 Received: from localhost.localdomain (173-246-11-162.qc.cable.ebox.net [173.246.11.162]) by smtp.electronicbox.net (Postfix) with ESMTP id 39427441B21; Sat, 29 Apr 2017 20:35:00 -0400 (EDT) From: Simon Marchi X-Barracuda-Effective-Source-IP: 173-246-11-162.qc.cable.ebox.net[173.246.11.162] X-Barracuda-Apparent-Source-IP: 173.246.11.162 X-Barracuda-RBL-IP: 173.246.11.162 To: gdb-patches@sourceware.org Cc: Simon Marchi Subject: [PATCH v3] Use std::vector in lm_info_target Date: Sun, 30 Apr 2017 00:35:00 -0000 X-ASG-Orig-Subj: [PATCH v3] Use std::vector in lm_info_target Message-Id: <20170430003455.13878-1-simon.marchi@polymtl.ca> In-Reply-To: <614e9e92-fa8b-35f3-c15c-9dde043962e8@redhat.com> References: <614e9e92-fa8b-35f3-c15c-9dde043962e8@redhat.com> X-Barracuda-Connect: smtp.electronicbox.net[96.127.255.82] X-Barracuda-Start-Time: 1493512500 X-Barracuda-Encrypted: DHE-RSA-AES256-SHA X-Barracuda-URL: https://96.127.255.19:443/cgi-mod/mark.cgi X-Barracuda-Scan-Msg-Size: 5218 X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using global scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=8.0 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.3.38465 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-IsSubscribed: yes X-SW-Source: 2017-04/txt/msg00820.txt.bz2 v3 simply updates the patch to the changes made to lm_info_target (previously lm_info). Replace the two VEC fields with std::vector. gdb/ChangeLog: * solib-target.c (struct lm_info): Add default constructor, delete copy constructor and operator=. : Change type to std::vector. (library_list_start_segment, library_list_start_section, library_list_start_library, library_list_end_library, solib_target_free_library_list, solib_target_free_so, solib_target_relocate_section_addresses): Adjust. --- gdb/solib-target.c | 41 +++++++++++++++-------------------------- 1 file changed, 15 insertions(+), 26 deletions(-) diff --git a/gdb/solib-target.c b/gdb/solib-target.c index e25f6ab252..373b5abe7f 100644 --- a/gdb/solib-target.c +++ b/gdb/solib-target.c @@ -25,16 +25,11 @@ #include "target.h" #include "vec.h" #include "solib-target.h" +#include /* Private data for each loaded library. */ struct lm_info_target : public lm_info_base { - ~lm_info_target () - { - VEC_free (CORE_ADDR, this->segment_bases); - VEC_free (CORE_ADDR, this->section_bases); - } - /* The library's name. The name is normally kept in the struct so_list; it is only here during XML parsing. */ std::string name; @@ -44,11 +39,11 @@ struct lm_info_target : public lm_info_base /* The base addresses for each independently relocatable segment of this shared library. */ - VEC(CORE_ADDR) *segment_bases = NULL; + std::vector segment_bases; /* The base addresses for each independently allocatable, relocatable section of this shared library. */ - VEC(CORE_ADDR) *section_bases = NULL; + std::vector section_bases; /* The cached offsets for each section of this shared library, determined from SEGMENT_BASES, or SECTION_BASES. */ @@ -92,11 +87,11 @@ library_list_start_segment (struct gdb_xml_parser *parser, = (ULONGEST *) xml_find_attribute (attributes, "address")->value; CORE_ADDR address = (CORE_ADDR) *address_p; - if (last->section_bases != NULL) + if (!last->section_bases.empty ()) gdb_xml_error (parser, _("Library list with both segments and sections")); - VEC_safe_push (CORE_ADDR, last->segment_bases, address); + last->segment_bases.push_back (address); } static void @@ -110,11 +105,11 @@ library_list_start_section (struct gdb_xml_parser *parser, = (ULONGEST *) xml_find_attribute (attributes, "address")->value; CORE_ADDR address = (CORE_ADDR) *address_p; - if (last->segment_bases != NULL) + if (!last->segment_bases.empty ()) gdb_xml_error (parser, _("Library list with both segments and sections")); - VEC_safe_push (CORE_ADDR, last->section_bases, address); + last->section_bases.push_back (address); } /* Handle the start of a element. */ @@ -141,10 +136,8 @@ library_list_end_library (struct gdb_xml_parser *parser, VEC(lm_info_target_p) **list = (VEC(lm_info_target_p) **) user_data; lm_info_target *lm_info = VEC_last (lm_info_target_p, *list); - if (lm_info->segment_bases == NULL - && lm_info->section_bases == NULL) - gdb_xml_error (parser, - _("No segment or section bases defined")); + if (lm_info->segment_bases.empty () && lm_info->section_bases.empty ()) + gdb_xml_error (parser, _("No segment or section bases defined")); } @@ -350,12 +343,11 @@ solib_target_relocate_section_addresses (struct so_list *so, = ((struct section_offsets *) xzalloc (SIZEOF_N_SECTION_OFFSETS (num_sections))); - if (li->section_bases) + if (!li->section_bases.empty ()) { int i; asection *sect; - int num_section_bases - = VEC_length (CORE_ADDR, li->section_bases); + int num_section_bases = li->section_bases.size (); int num_alloc_sections = 0; for (i = 0, sect = so->abfd->sections; @@ -372,10 +364,7 @@ Could not relocate shared library \"%s\": wrong number of ALLOC sections"), { int bases_index = 0; int found_range = 0; - CORE_ADDR *section_bases; - - section_bases = VEC_address (CORE_ADDR, - li->section_bases); + CORE_ADDR *section_bases = li->section_bases.data (); so->addr_low = ~(CORE_ADDR) 0; so->addr_high = 0; @@ -408,7 +397,7 @@ Could not relocate shared library \"%s\": wrong number of ALLOC sections"), gdb_assert (so->addr_low <= so->addr_high); } } - else if (li->segment_bases) + else if (!li->segment_bases.empty ()) { struct symfile_segment_data *data; @@ -423,8 +412,8 @@ Could not relocate shared library \"%s\": no segments"), so->so_name); int num_bases; CORE_ADDR *segment_bases; - num_bases = VEC_length (CORE_ADDR, li->segment_bases); - segment_bases = VEC_address (CORE_ADDR, li->segment_bases); + num_bases = li->segment_bases.size (); + segment_bases = li->segment_bases.data (); if (!symfile_map_offsets_to_segments (so->abfd, data, li->offsets, num_bases, segment_bases)) -- 2.12.2