From patchwork Wed Apr 26 22:51:36 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Simon Marchi X-Patchwork-Id: 20176 Received: (qmail 51145 invoked by alias); 26 Apr 2017 22:53:02 -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 51126 invoked by uid 89); 26 Apr 2017 22:53:01 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-25.2 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=2930, Hx-languages-length:3653, 17312 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; Wed, 26 Apr 2017 22:52:59 +0000 Received: from ESESSHC017.ericsson.se (Unknown_Domain [153.88.183.69]) by sessmg22.ericsson.net (Symantec Mail Security) with SMTP id 67.80.20517.BC421095; Thu, 27 Apr 2017 00:52:59 +0200 (CEST) Received: from EUR02-VE1-obe.outbound.protection.outlook.com (153.88.183.145) by oa.msg.ericsson.com (153.88.183.69) with Microsoft SMTP Server (TLS) id 14.3.339.0; Thu, 27 Apr 2017 00:52:35 +0200 Authentication-Results: sourceware.org; dkim=none (message not signed) header.d=none; sourceware.org; dmarc=none action=none header.from=ericsson.com; Received: from elxcz23q12-y4.ca.am.ericsson.se (192.75.88.130) by DB5PR07MB1720.eurprd07.prod.outlook.com (2603:10a6:0:12::25) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1061.6; Wed, 26 Apr 2017 22:52:15 +0000 From: Simon Marchi To: CC: Simon Marchi Subject: [PATCH 07/10] Class-ify lm_info_target Date: Wed, 26 Apr 2017 18:51:36 -0400 Message-ID: <20170426225139.313-7-simon.marchi@ericsson.com> In-Reply-To: <20170426224706.27988-1-simon.marchi@ericsson.com> References: <20170426224706.27988-1-simon.marchi@ericsson.com> MIME-Version: 1.0 X-ClientProxiedBy: MWHPR17CA0066.namprd17.prod.outlook.com (2603:10b6:300:93::28) To DB5PR07MB1720.eurprd07.prod.outlook.com (2603:10a6:0:12::25) X-MS-Office365-Filtering-Correlation-Id: ca01a6e0-43a3-45e1-5536-08d48cf6e2ff X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(22001)(201703131423075)(201703031133081); SRVR:DB5PR07MB1720; X-Microsoft-Exchange-Diagnostics: 1; DB5PR07MB1720; 3:jqhD3r/ILI00Ki38uCi3DOeoj7YSa1j/ciNa7KqumbILg3hvTM6foAuTDVnJnQP1KLhAphsCRYeuma1SCh6SzZjpJfL4xTVBGCd3qi2kpVOBXnoaa3U8H5EAnhCCLcbSDLepFhi99CLTY7vfGaQqCCWr9VVWosBGF/87CQA2u48rWgW4mJYMBbJ24sVSR+3OnQFIAXv+vXIwmFHqevYTKYpUlnPAO0HbmIlJv31HmKHnSNM35rNE7JNHDbRfxneIM35jNn375kNjS85O0RO3D7QSr4OwFJQx80S0kvcsOxnrrLwZ9lpSkVZW6fa0KyFlKpqqYOpT0WC0u8LWVUyp8g==; 25:q6To9IQXStICk4LAsKUjUpyxB9vbzXE+Hd3URbhmChWW6inDqY4lkKgAF0wcBMWJa5R3Nj3mPgqsSS6MzgOg/hSbFoxtkZWmJlsnfYzKVhGVJaI3YpB5dPqF0TepXh0sNdYrTaOHO0DK18ad6IuFPo02qe4afpf1+yn2jSRhhnDPgcJYCxC+HC8vO6jHHolAiWyHIA33TdRSEGvGcuTIEETYPoBb1ZOGn8cX4XLLs2/zhbMnbjnGxq3dCRN9fYQClpvp4lP/tnaCGRt/YkTUT/NmEj0b/QY6Yl8dyPAKMAEwGbJN6Af33D9OPThn74GjGcZ611GpItT7npdMs0ykVH7DSRaEliGZSX0iZaKCrYkBAVYNtmJ+oR+nIeq/8ufgdU1/OEOgT701RShzFFD5ljFMUJrJjanj4S0B8zOj+H3yRlYiwomdRpdagrHAZ7AGK0L/l7xJ7usRROMlAvkCHNPu8IydIpBNHr54QS1buz0= X-Microsoft-Exchange-Diagnostics: 1; DB5PR07MB1720; 31:1nDCo2aN9l76mGzfSPzKoCX4h52x0yLqAIZ3qwFN5UGP9/r6MAoQ6DlYh7p0HyRfnXB2VF5fXjx92SFPfEy6mzYaKIXXDGT/eTxjF7dfT7PsTB8hjl80NIKqsQoOeR/ZwkKUAi7XFYxtWaIT9G/7vdbyns3IcZoLqkIvc7wzqx/cGJSjPTemTnxX1ilwKwHFIUGncL35vK0OJMjCm2AS1UCRO/05NvPvaEgcRncM8d/UnQo0ks0u/teJB593o/pz; 20:hfEJlp6MhlGQoy0X1UOHPGJDK9oDeeF7Dk7vIG410TmLlZDQWlkzb/ZC0MVm5CKXyHA92lil1Hhd9WhycGdIfWyw4Gse0kaeUiFsf7rLF1RseBiRAocPkwbhUb1hLV1MldkOrZkni+IITRD/7gi2x7GccmKOe2lHR0KScDihV4/6xLNTUb05r+x/X0v/EQpoxFTN2GocFdrjJl1XuspaZIGA2/0rSJfYFxpV0W2lMrzJfJVJQ4TMMI34d2nIkGV6zTD6d5rhCwaaIRJD7SzhVs90eH+Vr8HcCelW8wgM0fpcNqZNO/jto0c8lwioccovDL8ozW1WgBztJ/o0jKSTL+I0KQGjJDI7aZbVqhwiT+hvkKgneCyZoBp4o+IXRcjdkImfpDb4nEnXNiQdFR4XVDzN49YF3g6MfFpbE47AHLSHUTyfZ8m2pdGYhNLE+/eISLtEWhpP6wnf/EIVCPLN2DRH6WkHZqa5nmkSA+8sxCDQu/9jTsokSqlQsnoepWQj X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6040450)(601004)(2401047)(8121501046)(5005006)(10201501046)(3002001)(93006095)(93001095)(6041248)(20161123555025)(20161123562025)(20161123560025)(20161123564025)(20161123558100)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(6072148); SRVR:DB5PR07MB1720; BCL:0; PCL:0; RULEID:; SRVR:DB5PR07MB1720; X-Microsoft-Exchange-Diagnostics: 1; DB5PR07MB1720; 4:AuHOEDZpe/ncQE8fFYcen7eB30AvhCC7yXyUMv+5shxOT1iQLk/JIx/7q5Bi+WH52hMQhJ+jVMJbM6u3OBoRPDEPF3Ts6FM4gWwDzD6UI+4B86yMSXZ93ky0Whb6eclSc+SDPDzQ9/8MJzw8s/igaCi1IHjHJfWJiuEMKLhP0VtIVPME+pfNL0CVWg/wWYRSKzGvHbszN6EJlXEH6YSayikhnZd1WIYB0TabojfbX45kIYONiPlqmMp4ifQDtkmrhUM0LwV95dD/L9hQtIWw8NCDtLGWGbDaJUKtmS+eQ2mhAvV43+69GV4Ip+DI1foPY587O4Au6L1EhhwqeQ9pMx0fzraACDK46qjWGMd/upf7tJ6wYlzLBdctNAI1ONn9Y3Lot54OOTta2qlcwiRZqZZ4iFX0udk9nUGfc3yf6LmeUEDHoVNt31mNjgMYhdu5EiXdK7qJS+zAmxPn08W6NnjNjoiiNAuTWJADSG/hguaRZKd9wsxDj6Js5nOyVXSQBHg/to3kcok8namgfUIEyuFqH1MKFxQ/NsPP6cras25JBMpKgAC4i+7LXCoX06s7veSUTxVQYnQIUjHMQdstwiPsl8PkNaaJ9xOoNSFB/JVTVbyBRHMfNE8EWykyKuJNfPu7cLVO+ex7EG/pBfS7nNlMNVqHOrDDMul0yRSgS6pKa3H2Q77RwVP/8lIvrYhoeSkfo9sjwmGYOYrtiwfkJo/+xRTZPGKp9vfTa+ehUmbYLTPIbplg/UKWRfRIsrN5/tVJkJdfMgL9q8Gp+DLOFIVs0u6jTj1FkjixWdnMz8U= X-Forefront-PRVS: 0289B6431E X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(4630300001)(6009001)(39410400002)(39450400003)(39400400002)(39840400002)(39850400002)(39860400002)(54534003)(107886003)(110136004)(42186005)(38730400002)(86362001)(5003940100001)(2351001)(189998001)(33646002)(6512007)(53936002)(5660300001)(6116002)(6486002)(1076002)(6506006)(2906002)(3846002)(7736002)(6916009)(6666003)(66066001)(8676002)(2950100002)(81166006)(48376002)(50226002)(4326008)(50466002)(76176999)(50986999)(36756003)(25786009)(305945005)(47776003); DIR:OUT; SFP:1101; SCL:1; SRVR:DB5PR07MB1720; H:elxcz23q12-y4.ca.am.ericsson.se; FPR:; SPF:None; MLV:sfv; LANG:en; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; DB5PR07MB1720; 23:Wo2sy9mxb0bR5A1UUUYqjN1cNHAtkpURqtlU21OCj?= =?us-ascii?Q?sCCCeGwbVcI5KRldVdkN6/so4cYceVwQFIVi/w5I1sYg7BGRpgg/NSfvhsK5?= =?us-ascii?Q?UuEtIMNAvXQRsxBTIixqkOniDhtgE15J/v0LjYl+/IWQ+16+HlhD5lsXSPY2?= =?us-ascii?Q?2squmTYJSLXmByHHhrQhjEcj2yiWnTrB9YekAPKU/W+Wu0DCOihueOzE6/fr?= =?us-ascii?Q?Y/jfLq/SxhcL0Z0Xwca2d+0EArbwAz58mnFZrBnUv7357IMQL62mVKjPnZ/u?= =?us-ascii?Q?LPHhXA57yj12U/zPZOF6nQZYESBIYwHGOnCxpg2kFbn/qBxrGYK8yT3o1KOS?= =?us-ascii?Q?WRV2vpK8FVy9+jr6X5ldHCOofZqsL7x7XgDpFtkO6bWZk/czFDZ/TAkJNfEf?= =?us-ascii?Q?AlKexAr5YKR8glnzI55nXXSH7lXnhzxpTzxQHfqrazwDtOGJ2kUHTgwFM0QM?= =?us-ascii?Q?I4Xanp2EjsU5wSMyB+1POmA0qnCb1oMNhIFQCIjTR/uw0FaYdnMGhUA5u2gU?= =?us-ascii?Q?heA+2lgVglywt7thIYGcBe9JfB45sW7IDoiUdEKSmNisP/pFmoBaauA5pHRy?= =?us-ascii?Q?BP0+9tXZ3FvbG4uRKWN8QHGi2kaygSVZ29gpITrvFU8/sMSpzRC3ggu2u1+0?= =?us-ascii?Q?YsVyuB7NaowaICoC/XnXqMwHOQ4Tk3onHJLgJ8QBzj7LY/C8Z6DRmbEhq+uC?= =?us-ascii?Q?gmM13FvwXjrtFOe8W7EPyJbwmlD89JH8v00nDlBye+skNV1SWG1/3ueQhuq4?= =?us-ascii?Q?Bt0DUb8lKpRkM8i5Yu3O4SzWKOGJ89r4Rzz8fGOB53eME5maJpTxVsV1huMD?= =?us-ascii?Q?uEoQivULDlzkMyHJUaqxvyzwDfmZ1YRGB/d2T/WPRaGveopSjvywAWNucLyj?= =?us-ascii?Q?mkwgpgsxkw/iflD77/Ao13QNPx1LgK/eo79hubA6IWJZJzRG/DQOn+iP6Nyv?= =?us-ascii?Q?8osnGqGT2Y5fNsmXApf+pC4JdTumsZpedI+ZlGDc6uvtF8FhxKB1RPrgFR5t?= =?us-ascii?Q?2iU3ptqTILqzGSwEwWNb22GSDNIJWpIjqbBTpLmGsWJE5Bppq4xYkLHZxNb3?= =?us-ascii?Q?psFXB1GZUBgClVcwgs196sTJRyZoTd64oOAQ6LzBT9vWoG8lu81SQyxiEqRr?= =?us-ascii?Q?v5bDzAMei0=3D?= X-Microsoft-Exchange-Diagnostics: 1; DB5PR07MB1720; 6:274Oa062Z02Jy6HMymYMUxZ9W+mK/Ij1ZMAyVi//M/MCEJfzRV0/S4lp9bAxjS3gE2dvkkUwg7ktoOR4oDs6kZ8E3Xq8rSjjk6I0uqxHNJ3ctErFyTNS3blJmNENkQHnCF4RhvUezSeaf6Ipl+m3p+phVtLmYY+zzycM+nW263+hMg2CEKxHo0wUADXvq+C2jaiADaocnHxR81l+fHrh+HdIuB8EU2a7B1EWDTVm2N6qpmV1aGskoHDkv9gAYfe6hQ+4g0OiECG3xe0ck3idhhFN55y5D51bDpqd1VRyJeoLE2JsW2hvJYUw3fmQigBBEnT98CsM+5H6yaOo1nWUDMjFVdXDhpFVHT2lllb+UO8tJgMnUojCgUlDMMqYdjgbw2+6gczTmUCxzbHdmstKakYj8xKvLKKZL1nG494FOUjU2yaMKe3iDtzQw32ir7xX6tYRDN3JiiwT87L7k0NavdaQEYKwOPeegsCwlrwE9qaXcK8qV1gkJ/+wclGdI8+FXR/rM1fvDgNiYasGkywEnA==; 5:XuQDeiqnSN7YqvMnLIkUd5XAGGs5xV0t4f4brl1ygXJm7yMOhlgn2altf/MNx3VelWZaYXipN3pPfiev5NsAhyl2YDRW9A7TNX51L37S87vDlWj77tyP/yUgc+0aj94E9/NoXy6CqmCtGWQ2zbcDOg==; 24:ENKKgowDvU8GjoWiYAbCai+Rx2hwTTYbzI00NrZZEIfxz7nJXTnF6Fiyr7i1G7phc9fItT9ChA52V1KOhznux5WHQOxe2LMvXt8CqzzJ5eE= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; DB5PR07MB1720; 7:sx8ULR3J2B0My1w/oTu4iIfMzrrctK2X24Kmkj96DQXdTQzJZiRU+9WiwngW8dda6XyBSQTlga/GtFLTcSJ8SMOVR+1AFd+ZK+NzAyPhyBOw7rx9pyyaUEHjag9acVKp1N+L2v9sLKg72l75atk4yRH0zVDVZYFXJ+UaGW1IaKeGRXwtKudeDTrSVRPiPhvCAP5ju7xX4wYlMDb/t69jX2Nys67QLvce/KgocNC4Ig5IiTFOhwhQilC2HHUHzRB0A6UOGy59mzkZPq7iR8qF91RfKzHtcEpUyyyi1sc+P2sDTk6u/UMedE/QOMUTdKf0u7sw64DHBpfWofuuSuVSAQ== X-MS-Exchange-CrossTenant-OriginalArrivalTime: 26 Apr 2017 22:52:15.5872 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB5PR07MB1720 X-OriginatorOrg: ericsson.com X-IsSubscribed: yes This patch makes lm_info_target a "real" class. It adds a destructor, uses std::string, initializes the fields and replaces XCNEW/xfree with new/delete. gdb/ChangeLog: * solib-target.c (struct lm_info_target): Add destructor, initialize fields. : Change type to std::string. (library_list_start_library): Allocate lm_info_target with new. (solib_target_free_library_list): Free lm_info_target with delete. (solib_target_current_sos): Adapt to std::string. (solib_target_free_so): Free lm_info_target with delete. --- gdb/solib-target.c | 39 ++++++++++++++++++++------------------- 1 file changed, 20 insertions(+), 19 deletions(-) diff --git a/gdb/solib-target.c b/gdb/solib-target.c index e40acc1823..e25f6ab252 100644 --- a/gdb/solib-target.c +++ b/gdb/solib-target.c @@ -29,24 +29,30 @@ /* 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. */ - char *name; + std::string name; /* The target can either specify segment bases or section bases, not both. */ /* The base addresses for each independently relocatable segment of this shared library. */ - VEC(CORE_ADDR) *segment_bases; + VEC(CORE_ADDR) *segment_bases = NULL; /* The base addresses for each independently allocatable, relocatable section of this shared library. */ - VEC(CORE_ADDR) *section_bases; + VEC(CORE_ADDR) *section_bases = NULL; /* The cached offsets for each section of this shared library, determined from SEGMENT_BASES, or SECTION_BASES. */ - struct section_offsets *offsets; + section_offsets *offsets = NULL; }; typedef lm_info_target *lm_info_target_p; @@ -119,7 +125,7 @@ library_list_start_library (struct gdb_xml_parser *parser, void *user_data, VEC(gdb_xml_value_s) *attributes) { VEC(lm_info_target_p) **list = (VEC(lm_info_target_p) **) user_data; - lm_info_target *item = XCNEW (lm_info_target); + lm_info_target *item = new lm_info_target; const char *name = (const char *) xml_find_attribute (attributes, "name")->value; @@ -173,12 +179,8 @@ solib_target_free_library_list (void *p) int ix; for (ix = 0; VEC_iterate (lm_info_target_p, *result, ix, info); ix++) - { - xfree (info->name); - VEC_free (CORE_ADDR, info->segment_bases); - VEC_free (CORE_ADDR, info->section_bases); - xfree (info); - } + delete info; + VEC_free (lm_info_target_p, *result); *result = NULL; } @@ -282,16 +284,16 @@ solib_target_current_sos (void) for (ix = 0; VEC_iterate (lm_info_target_p, library_list, ix, info); ix++) { new_solib = XCNEW (struct so_list); - strncpy (new_solib->so_name, info->name, SO_NAME_MAX_PATH_SIZE - 1); + strncpy (new_solib->so_name, info->name.c_str (), + SO_NAME_MAX_PATH_SIZE - 1); new_solib->so_name[SO_NAME_MAX_PATH_SIZE - 1] = '\0'; - strncpy (new_solib->so_original_name, info->name, + strncpy (new_solib->so_original_name, info->name.c_str (), SO_NAME_MAX_PATH_SIZE - 1); new_solib->so_original_name[SO_NAME_MAX_PATH_SIZE - 1] = '\0'; new_solib->lm_info = info; /* We no longer need this copy of the name. */ - xfree (info->name); - info->name = NULL; + info->name.clear (); /* Add it to the list. */ if (!start) @@ -326,10 +328,9 @@ solib_target_free_so (struct so_list *so) { lm_info_target *li = (lm_info_target *) so->lm_info; - gdb_assert (li->name == NULL); - xfree (li->offsets); - VEC_free (CORE_ADDR, li->segment_bases); - xfree (li); + gdb_assert (li->name.empty ()); + + delete li; } static void