From patchwork Tue Oct 10 18:03:12 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Simon Marchi X-Patchwork-Id: 23430 Received: (qmail 99097 invoked by alias); 10 Oct 2017 18:03:40 -0000 Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org Delivered-To: mailing list gdb-patches@sourceware.org Received: (qmail 99026 invoked by uid 89); 10 Oct 2017 18:03:39 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-25.3 required=5.0 tests=AWL, BAYES_00, GIT_PATCH_0, GIT_PATCH_1, GIT_PATCH_2, GIT_PATCH_3, SPF_PASS autolearn=ham version=3.3.2 spammy=destruction X-HELO: sessmg22.ericsson.net Received: from sessmg22.ericsson.net (HELO sessmg22.ericsson.net) (193.180.251.58) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Tue, 10 Oct 2017 18:03:37 +0000 Received: from ESESSHC001.ericsson.se (Unknown_Domain [153.88.183.21]) by sessmg22.ericsson.net (Symantec Mail Security) with SMTP id 00.87.26775.67B0DD95; Tue, 10 Oct 2017 20:03:34 +0200 (CEST) Received: from EUR01-VE1-obe.outbound.protection.outlook.com (153.88.183.145) by oa.msg.ericsson.com (153.88.183.21) with Microsoft SMTP Server (TLS) id 14.3.352.0; Tue, 10 Oct 2017 20:03:34 +0200 Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=simon.marchi@ericsson.com; Received: from elxacz23q12.ca.am.ericsson.se (192.75.88.130) by AM3PR07MB308.eurprd07.prod.outlook.com (2a01:111:e400:881b::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.77.5; Tue, 10 Oct 2017 18:03:32 +0000 From: Simon Marchi To: CC: Simon Marchi Subject: [PATCH 3/4] Use std::vector for traceframe_info::memory Date: Tue, 10 Oct 2017 14:03:12 -0400 Message-ID: <1507658593-28825-3-git-send-email-simon.marchi@ericsson.com> In-Reply-To: <1507658593-28825-1-git-send-email-simon.marchi@ericsson.com> References: <1507658593-28825-1-git-send-email-simon.marchi@ericsson.com> MIME-Version: 1.0 X-ClientProxiedBy: SN2PR00CA0038.namprd00.prod.outlook.com (2603:10b6:804:1::48) To AM3PR07MB308.eurprd07.prod.outlook.com (2a01:111:e400:881b::19) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 9030ae25-5d92-485a-99c9-08d510093889 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(22001)(2017030254152)(2017052603199)(201703131423075)(201703031133081)(201702281549075); SRVR:AM3PR07MB308; X-Microsoft-Exchange-Diagnostics: 1; AM3PR07MB308; 3:O/DvCnu3ojv6jlgD2GDTjEBB0iZOGkSVxqWGHTUl5BkqLJXLt2QDVtaoMoPLlU8YnF3PopZai7YYhFVg8LyyYHHqqHiMnQgQXOlXtPep6tmdCVCFjSqB3Qwj7RXNV3PCO8DRtxHJwRW74q/LmzUetrjoDCmArg33tKfHE6Z/Gr6nS6oSKOrpdObAuURye2ia6VWH7L2FgTMCMKpiiUQWgBr+8lpqVtbUTQqzeBE+0Fc9ktHnFzE2HfMK3Ejm68zX; 25:hYCy/17MHjTPPIqbjCBww7hvI3ntTG48Iu9XVhQm5nI9IjSclUoPowl6WHCaNwMK8NcblSn/4N4hnP45WWiDj+7t37fFDy74uAafN1ut88b9bbSpvob90o6Fj440g64cfKDbOG0qUF4MPCizYKe7/EOlp5rbH99vBqcU2JzROJ366i0e/fmtsF9ysp7VUxo4Qzy5zMMcMwyOrfkAxiAj5yA4r/VZUhy+zQF46ud2IgQ2H2t9xKDnmu8LUmDlyoHKaY3uKrqvOPWp//i8v+1gDqLHiL1enaxU8JK0ZEk74eIhgmIBvCnOPO/0tuhM3ZQhkp8R+NYz2k6X0dTOYUvOvw==; 31:yIybrflSMzXwR/tRDT5rQcSNVETFOP8c925nWphPZ120YYi5MsZTPjUVMndsMR6lIPbrsExEOlQGFkiyQz6E+QV4db58PoyJgwietNgZTyJlzMToFtM8VdlmZOCW7j1R8GGJD3m7E5p6yjdPT4kENsEYtGV1ycSRp/ecNQs3iCjZkjLkzp11QWpwHD1AY9Pm4HdWEQesfUp+bSoUb3b6e7NtokSxp3kHMPZtWuFBpd0= X-MS-TrafficTypeDiagnostic: AM3PR07MB308: X-Microsoft-Exchange-Diagnostics: 1; AM3PR07MB308; 20:755T08FwInu0+U84ZOib5p4ygf31PWPY7z0BLaEvBZy1DsLzmKOK4i2sOB6yzx7ux3flhNyrM7zhMliZId1qtIKBQi+RXaDb9TeNpFLxqs2w+P+z/3xLC+y527/Pw0obNZVicbwDSXRvdZANddIwo0/x2HUCLrBqMzP+nkYqI7wKZm5YJGnDKoDtd4WVykzDHSOG8/34xBnVmi8Q9DDjGPdNb0nlhAK14DMjmAtgqkBVYOM5jwfaPirae+nk9oC+WeI5IJv4X5/s9pzuOusn0zHIvkolPSSTKMvVwwjCyBx73I6oc1RtIMCjVQS9CB7W0Ec2I3qB6AJzJHVzP2VDKXBfD5tl4fjYDx51ADBtd8bC5+WvH55CDCF0r/kHBzivCl3UWNvjob2voBLWlT9Jz9Wh0tDfw8/0zZpHN9ccnh/FDfjgOsD+GDqS7iqPl4nSTISV1/rYuJOOa7kKsT8nlW62OUABW56YvR/wRsthVeeRTrCNnWFtEp9kRq5nCwQG; 4:/qYkyBhp36TDPws8iNxHLEvaJdqbU/JScbalraQSoAyZJ7AKP3QuOPiY4T2Qtksfqgm6I1QNfyVQqLi7Aiu2u4fWNp/tOOnX38Jkc0+krDKJt9SLi0KX3BSMIfR6dDQblEkTIyWk89XzTramUrzTodm9VMQd9yRMIuWcXwUnf8RhwxgKkxVRzDRVHmmHyW/Fc+qc7Vy03N3A4Rkg3RlYkDeauZ2elYGoMBrHHjtx04CzlF/0zObDp7Zljv+beBeG X-Exchange-Antispam-Report-Test: UriScan:; X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(100000700101)(100105000095)(100000701101)(100105300095)(100000702101)(100105100095)(6040450)(2401047)(5005006)(8121501046)(3002001)(93006095)(93001095)(100000703101)(100105400095)(10201501046)(6041248)(20161123555025)(20161123560025)(20161123564025)(20161123558100)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123562025)(6072148)(201708071742011)(100000704101)(100105200095)(100000705101)(100105500095); SRVR:AM3PR07MB308; BCL:0; PCL:0; RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095); SRVR:AM3PR07MB308; X-Forefront-PRVS: 04569283F9 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(6009001)(39860400002)(376002)(346002)(189002)(199003)(54534003)(50466002)(25786009)(5660300001)(33646002)(2906002)(16586007)(316002)(4326008)(106356001)(8676002)(81166006)(575784001)(8936002)(81156014)(189998001)(48376002)(86362001)(6506006)(68736007)(478600001)(6486002)(97736004)(6512007)(5003940100001)(50986999)(105586002)(3846002)(2351001)(2361001)(7736002)(16526018)(101416001)(36756003)(76176999)(2950100002)(6116002)(6916009)(53936002)(6666003)(50226002)(66066001)(305945005)(47776003); DIR:OUT; SFP:1101; SCL:1; SRVR:AM3PR07MB308; H:elxacz23q12.ca.am.ericsson.se; FPR:; SPF:None; PTR:InfoNoRecords; MX:1; A:1; LANG:en; Received-SPF: None (protection.outlook.com: ericsson.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; AM3PR07MB308; 23:il2II1uuMjZAl6cue4NZVfwYFUuX5uD1IUX+T69mrC?= =?us-ascii?Q?YLPNGfg4WylLqfiHsHvFxO3yKRESY0bctXZ/CCvehWfCJqJR4KhN5cw0q4nI?= =?us-ascii?Q?mVu2TTVfoDLBOoG23n7jF3vPDqZFwb+WG0dFnnrSm7RZk13tztG70zDwlFxE?= =?us-ascii?Q?kZrQc25/afPFTPDFZnRQsYCZBy/lB+LkJaQqagGx6RhW9O6+NmUdsiLn1xdx?= =?us-ascii?Q?LU9viSyCnLIqx7Bk1N44uQFIotywhlj9k2HgrUDB3OtpcE7qphAbw6MIUvX7?= =?us-ascii?Q?Td4OpTOOK2PGMRrLnLtZ6bR6e1tnGI9zNf8WuwLyQj116qv0QtI8dEidVAqL?= =?us-ascii?Q?DZabqgpRjC2ibY2y/wzU5mPj9HqL8gs2BiPlNh6bqEnT4/015lA99wQagT9u?= =?us-ascii?Q?nzikc/72EBdc7p+RRXC7eM2XXyUHsdj0Ogala/tfMeZkTrCp6uIWiqeyBKRq?= =?us-ascii?Q?Lh6mSP/sXE0ST7siIaznIk1jdxSFaSdCsRysa5vjmYW2u0a8ZtWkzrizpQ1+?= =?us-ascii?Q?Lx4gaxhnMtMQn/mM5hNANVeVjP04gOAfyV0Tr7+NBX+2zNdUyPbWwmpnLaAy?= =?us-ascii?Q?GxKmakCi3akIo4yYxOG2fhvHdHuOLtqUVSPiT3YxzV/M8O37jYv1uGy70TGi?= =?us-ascii?Q?0qOXo5poTf5wSsnqQUMzRhZaj1fmebvnggHPHLUEGpDznKGwwL3zOuRTkFzi?= =?us-ascii?Q?XdaG7RY6XzmeDHOMUZs2ly02LEdGUSdPJtvs4rkhiBfZWNAS88xafx6WPWUX?= =?us-ascii?Q?2jPNuuuT0W77fKy5q633MkSMm7T9m1wPO7n9JHcNgjvfbEpVJfeg47JCDIAs?= =?us-ascii?Q?tusbXZAXO1RJg+mR+O1hbhhxpDYpHcYnO1/xpmvWbMdtdN7l1u2JMATpBl95?= =?us-ascii?Q?f65GyhWS6ae4yTjsgEHCIcmKuSyXRrgyKdcq8y2+NfZWq81f813DDJYXk+vN?= =?us-ascii?Q?JdqVj78HpSfNPfuQswGauNkDndAm6S47MkPijjim0NAVlCmg/Cm0rzEB6XHj?= =?us-ascii?Q?q0JhrOA1LDQ8nXRVxlEswaHdrNjMnTKYESowlmzW+o3rCpVylD7BnhXD3lh6?= =?us-ascii?Q?hFHQ7y6kE2CJD8IL3/j/1ecmeM92eoqPjvzKu8Rn9xwZHjgTUC/NmU72w1ku?= =?us-ascii?Q?RJfhkPV9nhL6XJqX08UQ9EmkYIMNEsmtVHximC33o8AURa6hVvzKwDwKjziE?= =?us-ascii?Q?sQi6jYfHzLXbA=3D?= X-Microsoft-Exchange-Diagnostics: 1; AM3PR07MB308; 6:cejOFAc1r5ZTHdTVHaIQIJQq+LMtqCppZsUk8KV6zfrDR4BnEOD1NIv58Gkf8jh+DbGZMEYC3B5PtGJ0swWcv5RMPIVjh4qWpfpN9uwZj3UEazUH7M72nhJ19EOB3kGXx5g/0IpMiFaxWly48MM0k1D416JyrOTySdsK7//FsUgLX/2qV92ZTkiQKrJ5Wodf7+K0GgcMBlg27g741Udy9HLwBiwgbHr/gvSJqYXndhD6e/Q1QQERAD844oIC2NNcwM5Vp4EojMhR4rvUeXMp9Su6Ob2OjZ2uMzCo8q5fJwxPRsyZnHOFgaGpVd3WG3n/RaedcD90kHl5VLx4xpaokQ==; 5:QRrgVwiq15vLqFe5Dkf83e/apP3wUVSXMsj6pJ7MGjP2LkI9wZOskt+Q9vRgOyBQ5jC0cnr8MA9DJfo2aZ9IFbXC8/UO1gN1+Xr5cwhNYGBCglEJd5c9ea6wkb3H7ELfNIAyxztlwGaDjE4PcaJezQ==; 24:f0hFl9rSQjO/2LXlOSreynThlBgyMizwHqEU3px7V3WquQ9xWwTJ0SfBez7dV+i6fQgCcE8FhvAhpuU3VaMUqcpBR9rw5V4C+LZJdoIrM00=; 7:zyqg2pK8IhTN033eXuXfe2LCj0lyoA8CUK/eAdaSbBsj+/0WNCA8S6lyv9mpWeeV8bo12V2bBeOxlThZGkVVOpVtV6NF2XCQKjhAFDSC4l0dU68ZHgyNYN6LQF/FJffLQfoN/cZacFA+OIzY7GNo/GezG2l3eCQG6DDGWjwf1pZ+6YL981bi6jDoiEfoPi1+sEw6AugQGDJmJh2puYQpqWUu++2Xu7YX0AROnYrOiWo= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Oct 2017 18:03:32.4897 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 92e84ceb-fbfd-47ab-be52-080c6b87953f X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM3PR07MB308 X-OriginatorOrg: ericsson.com X-IsSubscribed: yes From: Simon Marchi Straightforward change from a VEC to std::vector. This allows making the destruction of a traceframe_info trivial. I added a constructor with parameters to mem_range to be able to emplace_back directly with the values. It is necessary to leave a default constructor there because mem_range is still used in a VEC. gdb/ChangeLog: * memrange.h (struct mem_range): Add constructors. * tracepoint.h (struct traceframe_info) : Change type to std::vector. * tracepoint.c (free_traceframe_info): Don't manually free vector. (traceframe_info_start_memory): Adjust to vector change. (traceframe_available_memory): Likewise. * tracefile-tfile.c (build_traceframe_info): Likewise. * ctf.c (ctf_traceframe_info): Likewise. --- gdb/ctf.c | 8 ++++---- gdb/memrange.h | 6 ++++++ gdb/tracefile-tfile.c | 6 +----- gdb/tracepoint.c | 22 ++++++---------------- gdb/tracepoint.h | 2 +- 5 files changed, 18 insertions(+), 26 deletions(-) diff --git a/gdb/ctf.c b/gdb/ctf.c index 183ee34..bef6f30 100644 --- a/gdb/ctf.c +++ b/gdb/ctf.c @@ -1663,14 +1663,14 @@ ctf_traceframe_info (struct target_ops *self) = bt_ctf_get_top_level_scope (event, BT_EVENT_FIELDS); const struct bt_definition *def; - struct mem_range *r; - r = VEC_safe_push (mem_range_s, info->memory, NULL); def = bt_ctf_get_field (event, scope, "address"); - r->start = bt_ctf_get_uint64 (def); + CORE_ADDR start = bt_ctf_get_uint64 (def); def = bt_ctf_get_field (event, scope, "length"); - r->length = (uint16_t) bt_ctf_get_uint64 (def); + int length = (uint16_t) bt_ctf_get_uint64 (def); + + info->memory.emplace_back (start, length); } else if (strcmp (name, "tsv") == 0) { diff --git a/gdb/memrange.h b/gdb/memrange.h index b181c98..029ec71 100644 --- a/gdb/memrange.h +++ b/gdb/memrange.h @@ -26,6 +26,12 @@ struct mem_range { + mem_range () = default; + + mem_range (CORE_ADDR start_, int length_) + : start (start_), length (length_) + {} + /* Lowest address in the range. */ CORE_ADDR start; diff --git a/gdb/tracefile-tfile.c b/gdb/tracefile-tfile.c index 0075581..cc77b6c 100644 --- a/gdb/tracefile-tfile.c +++ b/gdb/tracefile-tfile.c @@ -1050,7 +1050,6 @@ build_traceframe_info (char blocktype, void *data) { case 'M': { - struct mem_range *r; ULONGEST maddr; unsigned short mlen; @@ -1064,10 +1063,7 @@ build_traceframe_info (char blocktype, void *data) 2, gdbarch_byte_order (target_gdbarch ())); - r = VEC_safe_push (mem_range_s, info->memory, NULL); - - r->start = maddr; - r->length = mlen; + info->memory.emplace_back (maddr, mlen); break; } case 'V': diff --git a/gdb/tracepoint.c b/gdb/tracepoint.c index f3f47c2..9f0d07b 100644 --- a/gdb/tracepoint.c +++ b/gdb/tracepoint.c @@ -196,12 +196,7 @@ current_trace_status (void) static void free_traceframe_info (struct traceframe_info *info) { - if (info != NULL) - { - VEC_free (mem_range_s, info->memory); - - delete info; - } + delete info; } /* Free and clear the traceframe info cache of the current @@ -3999,7 +3994,6 @@ traceframe_info_start_memory (struct gdb_xml_parser *parser, void *user_data, VEC(gdb_xml_value_s) *attributes) { struct traceframe_info *info = (struct traceframe_info *) user_data; - struct mem_range *r = VEC_safe_push (mem_range_s, info->memory, NULL); ULONGEST *start_p, *length_p; start_p @@ -4007,8 +4001,7 @@ traceframe_info_start_memory (struct gdb_xml_parser *parser, length_p = (ULONGEST *) xml_find_attribute (attributes, "length")->value; - r->start = *start_p; - r->length = *length_p; + info->memory.emplace_back (*start_p, *length_p); } /* Handle the start of a element. */ @@ -4119,13 +4112,10 @@ traceframe_available_memory (VEC(mem_range_s) **result, if (info != NULL) { - struct mem_range *r; - int i; - *result = NULL; - for (i = 0; VEC_iterate (mem_range_s, info->memory, i, r); i++) - if (mem_ranges_overlap (r->start, r->length, memaddr, len)) + for (mem_range &r : info->memory) + if (mem_ranges_overlap (r.start, r.length, memaddr, len)) { ULONGEST lo1, hi1, lo2, hi2; struct mem_range *nr; @@ -4133,8 +4123,8 @@ traceframe_available_memory (VEC(mem_range_s) **result, lo1 = memaddr; hi1 = memaddr + len; - lo2 = r->start; - hi2 = r->start + r->length; + lo2 = r.start; + hi2 = r.start + r.length; nr = VEC_safe_push (mem_range_s, *result, NULL); diff --git a/gdb/tracepoint.h b/gdb/tracepoint.h index 625415c..872681d 100644 --- a/gdb/tracepoint.h +++ b/gdb/tracepoint.h @@ -32,7 +32,7 @@ struct traceframe_info { /* Collected memory. */ - VEC(mem_range_s) *memory = NULL; + std::vector memory; /* Collected trace state variables. */ std::vector tvars;