From patchwork Wed Apr 26 22:46:59 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Simon Marchi X-Patchwork-Id: 20171 Received: (qmail 40286 invoked by alias); 26 Apr 2017 22:47:47 -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 40198 invoked by uid 89); 26 Apr 2017 22:47:47 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-25.1 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= 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:47:44 +0000 Received: from ESESSHC006.ericsson.se (Unknown_Domain [153.88.183.36]) by sessmg22.ericsson.net (Symantec Mail Security) with SMTP id 79.10.20517.E8321095; Thu, 27 Apr 2017 00:47:42 +0200 (CEST) Received: from EUR01-HE1-obe.outbound.protection.outlook.com (153.88.183.145) by oa.msg.ericsson.com (153.88.183.36) with Microsoft SMTP Server (TLS) id 14.3.339.0; Thu, 27 Apr 2017 00:47:42 +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 VI1PR07MB1725.eurprd07.prod.outlook.com (10.166.143.21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1075.1; Wed, 26 Apr 2017 22:47:38 +0000 From: Simon Marchi To: CC: Simon Marchi Subject: [PATCH 03/10] Class-ify lm_info_aix Date: Wed, 26 Apr 2017 18:46:59 -0400 Message-ID: <20170426224706.27988-4-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: MWHPR2201CA0037.namprd22.prod.outlook.com (10.172.59.11) To VI1PR07MB1725.eurprd07.prod.outlook.com (10.166.143.21) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: ff0ac687-9ddc-403f-a098-08d48cf63db2 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(22001)(201703131423075)(201703031133081); SRVR:VI1PR07MB1725; X-Microsoft-Exchange-Diagnostics: 1; VI1PR07MB1725; 3:bTvjMMDziNN0adsqTWMZFSMTe9ayuXxmfRiyW4tALelzISx8vGARWHpws4lhEruZxRkBKc49tQE8Z0jvSoxflrTjzQBfHUMS7/OSzNWxl8mq3h5l09R7/BJgcFiyrSP+plNPFNwG6+9rCqyFDQXFEh5X/oxqpVCQBPrxndjJ62fR3einYWjed/MusUYBPNrtO8fTRKByOHQOM1/Nhoj9g0OjOj3Pid+JLBG0rKxFzDtx7lCXbKtFabMOoc7v6iq6x5pgwMcx/k85a3xC74PrU08O36KHsLKh0HL8ZCRQ5dta2zEvH6YzvJasaGlXrPXRALZ12GX2C7N+rdkdIDNdQA==; 25:oGEiyPQozrMvAyLti9SHK0y2OF+olPGsl0fKSZ7CCIC19+6y/22Pf7ya3L2ttUpVbVAxZSs+6cvISwX7okRwU3zBThgnRNhow+uuFdFbkoX7gY6vCiTMXoPOJ6xsCVSqhQuCaDj7InDKeNW0lX9BRSgnsQVqVQ/UWDp5ro9dQugqmvudTiV37II9yn6D4RrGUBKHjteSk0E/EHgfpWeojFvymbDDrw8pDPI5l59LsJR1DE/E+b8u1kz73fDNAVVXFc2nAps3PZZ4WpkLGC+T67OHnN3okVrOc/v/DuZjk/+8KLFuJf4Qszmta6P2/R5Jc0um2f1ZKoMHzbGMQdWIV3/3lrZ6OADt9ppIZHU/AQ6LcGb88NR3ijKP88DyWPR3cXoinrpqAfj8IZO/ng7Q8q4rQP+3sSEd2fNdWs2F0/vl4PQngehfYhbUWura3Vd5lNnnbafdWlOUtWScg4LUFc8wtZ6UCeuYIrd+7AeGVlw= X-Microsoft-Exchange-Diagnostics: 1; VI1PR07MB1725; 31:6Ywcl2VXG5OjY8ubCYKfGA4tbgBDxCF+ozR0Lvv6dNZGybNRJQJGZEdgzFPqUjQhztuBlIXKrZU7/twdBljjuMX0d+CA5OX8x3cn9zYFA/tBS9mkjzVCFis8yMxq9McWE2fLt0h6uIgRhNG3eHF52B/5Y7ZNKj5i8bqSLeaykCLFbkGi5XaEGuK4WqzREFyfF1FDLjB5yHac5zsNWDh8/y7nHiioCXvsq5M/auQCsK+wTl59T9t+dQhuAdV2MqJDpD6TyQNdM8mliLfIXSQmUbYK7Dfxoh3am5+e32sxKpI=; 20:VRZ4YJUBE2ef1yaa6U9qJh1tLidkDycW6h7xk1PX8785Z6+NVVm0X2K7PTe4xbifizrp3repi03urQiPLHlDT7cvGJb6dLS3Cg3F7qpxd+RgJdlVuTems1d8VrQNt5EoixaLvRuyi9SOkNvB+Bmzc34Whw3ajqhkH3gdoIigZIjZACkKcbiNsjWM7LxDDlIEy7hBeWSUSPRBcYZVfgv9UId8RFpMDaTEwvaPb84jBagWjeGp1mYqoahS15QCwJEqbrueFiqcAv9ejqAKi7iNUt/SC5tEKaSaG3AULfHb8fuY29atdApYoAHhyU32uJBCVlqgtwUCIPUw9QeY/We+yKJSyFuy332IGJ3j5FSgwgUeUMa9ZftRqGhw4Dd/kCQZgLfNQ2Bbg1C89xVUJAkl+r7em8EnRzkpRy5aQM0DWLv4PNR2L6bMPhdJ+03Ektf+53iLehmzpeLGwHMU2sv/9LpHQvwnh5z6IFtaEFe0UspJbryhnG7u4CswYAPAKwV/ X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6040450)(601004)(2401047)(5005006)(8121501046)(3002001)(10201501046)(93006095)(93001095)(6041248)(20161123562025)(20161123555025)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123560025)(20161123564025)(20161123558100)(6072148); SRVR:VI1PR07MB1725; BCL:0; PCL:0; RULEID:; SRVR:VI1PR07MB1725; X-Microsoft-Exchange-Diagnostics: 1; VI1PR07MB1725; 4:+mLQW5Fzg/ypPVI2V0g7CVa7PjWPnQ+JWmceRrBr0D83l9U8Au7OtbLs1QR7VVy6/4LU69qNjOh0s/HzoezQ8BlolrJR4zqUSUJ+ufXga9G/3fdB42rbCi4pbGycmarlA1zgymb3pGrfCRfRWJ4MpnW6NrsCpMLiIIClK8EDhGJzuWINrUXkPpnkOdFEBVYTp1NgvnZTUcXn7UckNu/qdGrgED5G+QHBkIAvYhSqIhx3oxOkOyMIKGHT8ehXiOwpZlHvghHPlEzrmZD1V6Y2LQoL2pnE5E77E0S3JnS4b/WCvSD6TLirY134j3DfKre5AN9mq9lmqtI+tLDzI3VtFOHVp/u84DC7lj1lMHBR5rRsyOXLccq03QHUjrLqEgHpEdR2du0ibB5Wle2sH5Hv2r6wu/uP6CTsspOFlRCPzm2EUHBFGpVAr0qboNn4y8rIMiMZW5MzqZwvl0zeR5mIErW0M/0P6eRtQmoy+uAnMBs19jrfo7Pn7pm4xDTw8ZdLjAnx3dxvc6dVKHhx+teI8EY361PzJDmRt18dUxSp+dLVm5JeWPGzx3D4NNxRRsA8NsxJFBueyyGEKwIDjDJK+rTV2e03lAScjznsmBojaOZwWvUGyH2nSB2rQfZl8EoHAUjM9lZ0FWXlson8mCzt0fasNcyhVYuy4icfS0AnM4vy4PSO0mUQKnm5Hdv0x5WoZr2fXLSN6PIA2m+YyoIdRKee++FbPB3FqfIY+HPtHBYTtu6i7ba9k4b5rj7AYJ7DSYXKPwkBOfTkoboFJNMCJ7nvI9dw74ltlEHDFLNUOdU= X-Forefront-PRVS: 0289B6431E X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(4630300001)(6009001)(39410400002)(39860400002)(39400400002)(39840400002)(39450400003)(39850400002)(54534003)(33646002)(25786009)(5003940100001)(4326008)(53936002)(2351001)(575784001)(86362001)(2906002)(5660300001)(6916009)(6666003)(47776003)(6116002)(2950100002)(7736002)(305945005)(1076002)(3846002)(38730400002)(6506006)(110136004)(50226002)(36756003)(189998001)(6512007)(42186005)(50466002)(48376002)(76176999)(8676002)(6486002)(81166006)(66066001)(50986999); DIR:OUT; SFP:1101; SCL:1; SRVR:VI1PR07MB1725; H:elxcz23q12-y4.ca.am.ericsson.se; FPR:; SPF:None; MLV:sfv; LANG:en; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; VI1PR07MB1725; 23:OjMO+1rysqfv/6Kb5GIK3bUgWH0F1FElW+5iQCrj1?= =?us-ascii?Q?jjqDKio1V1A3fRUJBXRb9653eP2w5HPl60cm911eGO8PXWaca8mJn3wnGZyg?= =?us-ascii?Q?lFD5M7fkRKlig7i01vEAjeLtppsJJF6GDSzlD6oQTm9hESEUmTNwivcEUV2I?= =?us-ascii?Q?5mEd93xO3boHOZZ8xpFtmLshZKGrc+Lepyoqnk5/lRLnpV9Y+iSaAjb/rKVp?= =?us-ascii?Q?fce4slOLGt2fTUwPwRpLiEu3qm4BRNsPEmiUWHbDjHumeB+al6F2xkkK0axs?= =?us-ascii?Q?QuiGN5PpSTCe+cQ3iO/enb/9H/5aiRVvfnp8tC0u4HXwVVvt7TvO99M53Wdh?= =?us-ascii?Q?9mHJRuG1yY20oB1bJiinQWcfuZN8Erct0fH5+dj8Xe6aeO0j4HAUGu+oCg+x?= =?us-ascii?Q?ikdyesv5dY5pgMS8kKRIW/eX562e2VjaLw0mcIaBme6i9HO+1dk3sMAkTpg3?= =?us-ascii?Q?adRFv/I0D1b/ekwtaYPxJkk26hJjfVpvYi5NxEMBoRiNvJEGZA3Hg71gYvTj?= =?us-ascii?Q?juH6loyBVDjB7VUHi/NDpVqVLw6q1fitShIR139Ywr531CKyhxOa6HQ9gcPk?= =?us-ascii?Q?Ts5k0DuG3VttXTPm5MImNen2gq/SzgqnvK4l9qzLfii1An7fP/LB9gTotZs8?= =?us-ascii?Q?Pm5mP2S5Q4+J//dzcRSWD8uwJHDrwtiFWRih5f2fQaJdyoOGOw449O1jcrBB?= =?us-ascii?Q?tDXX0bQJttR9xtToKdXSSLVj3xVmgl3geqcpK8K00A3PCGGTN6kqOZLqn4pO?= =?us-ascii?Q?3TTnAr8N/54sBQzYZP2eNEbeutGPgq5pyBkcmO/QdRTdAPRvaCCT7cWR/BC5?= =?us-ascii?Q?BlcdYZXvUUOPktfmdnvVHeZKp4AiiEiXwwHwWTwZHp/7DaoBpxdiLVqGn1UA?= =?us-ascii?Q?XtrTqUbFwePEZpdWZJfAABO6ChRimResxk3sUlrLKCruPdV5ETUZMCsOJv2b?= =?us-ascii?Q?4TM6OhzUTh1/Q9Fm0y+V0F5oEKHf57yPMkwkWNz/8+ZgYTDWdwQt4YdJX/QP?= =?us-ascii?Q?gTNFNCeuHvM5ihpjZytBHyfkkBUCqDnvLVKAL4Jmca0cvY8w/7FZaURfQ2Mc?= =?us-ascii?Q?+DZi3EgFaj9z58i58LQOcerzmmcIJF4U5VQHVLeuAqAyDIPRbLQ0xPTjFrkm?= =?us-ascii?Q?MjAV5MRxwA=3D?= X-Microsoft-Exchange-Diagnostics: 1; VI1PR07MB1725; 6:92Hxdb7vsdYfbzaaPrmfjZk5+SCz7gHb6HuMrtrTUWUx/7jPI4s/gr3BrhCaZhZYT+SZItCspjRaaIsdGNOcJGm1s8icqkMKSdvzE51YvTKIXJDzvjbg+ys7rJFvp2GPdlg0yL8bYvWuO45lhX4ej8iJuMAcs41GwDjPGYTa4uQwQNN7IBjwem7tORa4Ag+kkPp4g2us3kDAkNtD8veYOaOsziGtRIM7oqEhUtPlWpkw/KtV9u1XGD6vSpIR1EKaNO6c8S5TFVLuUYZ8JYStpU6nLg/Bmp7o7mZCsIxImea2oAdSoJ4P8CTfT+pc+UVl94PO+yY6pm6mWqbG57hgZDgvzaPyJ7gZ/AzpU2kk1+pUwzlOMKzEyaKun0YQRzYt6qcmlGS4SsxcFVN6owUNALKMN69q8sy9pxwS54E+7oGUiDhBHFBoB3mn0mKfV8RXpe7S0SC4Lalz1Uhx54GATdeOt9HSGhnlewNgGnn8YAndwFBpqxH3N4VYS0YUW5S1ro2kqHR9+PsyzlCX+Jqpvg==; 5:pimS7Cwlma7cGAPTBwoQCm2w3seW+J/JoL/egTSuJIVresxryHQYfsQiImmAz5QkPgVJECJcR0mBprUL2hv3vxQfz/6QPEFzA37nJ4YYE8dvDV9s3Ob3xmz6F6+tjQKbbgO+h+RQEZIfvBVeARmBkA==; 24:WH8Elpy7VnSd0izfyZmW4yVPN7Smz92t8cPhwaed8n89BQNVIzCYCmepcsm0J2JIq1ouavq0rYGmVbQ/YFtg5bF9UoRjFMqyRD1F2g0Y3/A= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; VI1PR07MB1725; 7:UB8r1xh0mA/AV7w7IyjAPMx7k5lae5GtEjpM/VCYVTsvj5/rywQwVX1eQlhytB1asODIfvKPnFQnJcY04IywzkZoph7RDiuf7GB6Z57erkVfLNe3wPk1vpVojXvi+W6qFmHVX4saniFwJW8W6unXyFjSy2YX9PPSCtSTsprlfY0pw8O7nkNRwWXQJ8xua6bBWNKhEmBRfHcGwGrdsdx992xCbp7uhHAvLDhoNwhVDh0GG8AVqf0wCwDZJ0H+F/ZD8pKl/eCN6R8y1LKJRE1mZ5uFbpI9K5D7TDJQKOJfT8840avgI5n4198U+HRtjLq+rhxbvtwq51aYTn9Kn3XJPg== X-MS-Exchange-CrossTenant-OriginalArrivalTime: 26 Apr 2017 22:47:38.1511 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR07MB1725 X-OriginatorOrg: ericsson.com X-IsSubscribed: yes From: Simon Marchi This patch makes lm_info_aix a "real" class. It uses std::string, initializes fields in-class and replaces XCNEW/xfree with new/delete. The solib_aix_new_lm_info can be replaced by using the default copy constructor. gdb/ChangeLog: * solib-aix.c (struct lm_info_aix): Initialize fields in-class. : Change type to std::string. (solib_aix_new_lm_info, solib_aix_xfree_lm_info): Remove. (library_list_start_library): Allocate lm_info_aix with new. (solib_aix_free_library_list, solib_aix_free_so): Free with delete. (solib_aix_current_sos): Adapt to std::string, copy lm_info_aix with copy constructor. --- gdb/solib-aix.c | 62 +++++++++++++++++++-------------------------------------- 1 file changed, 21 insertions(+), 41 deletions(-) diff --git a/gdb/solib-aix.c b/gdb/solib-aix.c index 54b8c38032..d0f5e96119 100644 --- a/gdb/solib-aix.c +++ b/gdb/solib-aix.c @@ -39,53 +39,28 @@ struct lm_info_aix : public lm_info_base for the main executable, this is usually a shared library (which, on AIX, is an archive library file, created using the "ar" command). */ - char *filename; + std::string filename; /* The name of the shared object file with the actual dynamic - loading dependency. This may be NULL (Eg. main executable). */ - char *member_name; + loading dependency. This may be empty (Eg. main executable). */ + std::string member_name; /* The address in inferior memory where the text section got mapped. */ - CORE_ADDR text_addr; + CORE_ADDR text_addr = 0; /* The size of the text section, obtained via the loader data. */ - ULONGEST text_size; + ULONGEST text_size = 0; /* The address in inferior memory where the data section got mapped. */ - CORE_ADDR data_addr; + CORE_ADDR data_addr = 0; /* The size of the data section, obtained via the loader data. */ - ULONGEST data_size; + ULONGEST data_size = 0; }; typedef lm_info_aix *lm_info_aix_p; DEF_VEC_P(lm_info_aix_p); -/* Return a deep copy of the given struct lm_info object. */ - -static lm_info_aix * -solib_aix_new_lm_info (lm_info_aix *info) -{ - lm_info_aix *result = XCNEW (lm_info_aix); - - memcpy (result, info, sizeof (lm_info_aix)); - result->filename = xstrdup (info->filename); - if (info->member_name != NULL) - result->member_name = xstrdup (info->member_name); - - return result; -} - -/* Free the memory allocated for the given lm_info. */ - -static void -solib_aix_xfree_lm_info (lm_info_aix *info) -{ - xfree (info->filename); - xfree (info->member_name); - xfree (info); -} - /* This module's per-inferior data. */ struct solib_aix_inferior_data @@ -162,7 +137,7 @@ library_list_start_library (struct gdb_xml_parser *parser, VEC (gdb_xml_value_s) *attributes) { VEC (lm_info_aix_p) **list = (VEC (lm_info_aix_p) **) user_data; - lm_info_aix *item = XCNEW (lm_info_aix); + lm_info_aix *item = new lm_info_aix; struct gdb_xml_value *attr; attr = xml_find_attribute (attributes, "name"); @@ -215,7 +190,8 @@ solib_aix_free_library_list (void *p) fprintf_unfiltered (gdb_stdlog, "DEBUG: solib_aix_free_library_list\n"); for (ix = 0; VEC_iterate (lm_info_aix_p, *result, ix, info); ix++) - solib_aix_xfree_lm_info (info); + delete info; + VEC_free (lm_info_aix_p, *result); *result = NULL; } @@ -443,10 +419,13 @@ solib_aix_relocate_section_addresses (struct so_list *so, static void solib_aix_free_so (struct so_list *so) { + lm_info_aix *li = (lm_info_aix *) so->lm_info; + if (solib_aix_debug) fprintf_unfiltered (gdb_stdlog, "DEBUG: solib_aix_free_so (%s)\n", so->so_name); - solib_aix_xfree_lm_info ((lm_info_aix *) so->lm_info); + + delete li; } /* Implement the "clear_solib" target_so_ops method. */ @@ -568,15 +547,15 @@ solib_aix_current_sos (void) for (ix = 1; VEC_iterate (lm_info_aix_p, library_list, ix, info); ix++) { struct so_list *new_solib = XCNEW (struct so_list); - char *so_name; + std::string so_name; - if (info->member_name == NULL) + if (info->member_name.empty ()) { /* INFO->FILENAME is probably not an archive, but rather a shared object. Unusual, but it should be possible to link a program against a shared object directory, without having to put it in an archive first. */ - so_name = xstrdup (info->filename); + so_name = info->filename; } else { @@ -584,14 +563,15 @@ solib_aix_current_sos (void) is a member of an archive. Create a synthetic so_name that follows the same convention as AIX's ldd tool (Eg: "/lib/libc.a(shr.o)"). */ - so_name = xstrprintf ("%s(%s)", info->filename, info->member_name); + so_name = string_printf ("%s(%s)", info->filename.c_str (), + info->member_name.c_str ()); } - strncpy (new_solib->so_original_name, so_name, + strncpy (new_solib->so_original_name, so_name.c_str (), SO_NAME_MAX_PATH_SIZE - 1); new_solib->so_name[SO_NAME_MAX_PATH_SIZE - 1] = '\0'; memcpy (new_solib->so_name, new_solib->so_original_name, SO_NAME_MAX_PATH_SIZE); - new_solib->lm_info = solib_aix_new_lm_info (info); + new_solib->lm_info = new lm_info_aix (*info); /* Add it to the list. */ if (!start)