From patchwork Mon Jul 24 10:39:56 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Simon Marchi X-Patchwork-Id: 21739 Received: (qmail 27898 invoked by alias); 24 Jul 2017 10:40:26 -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 27586 invoked by uid 89); 24 Jul 2017 10:40:25 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-26.4 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=pray, collecting, Inclusive, 15147 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; Mon, 24 Jul 2017 10:40:21 +0000 Received: from ESESSHC017.ericsson.se (Unknown_Domain [153.88.183.69]) by sessmg22.ericsson.net (Symantec Mail Security) with SMTP id 53.C4.06959.E8EC5795; Mon, 24 Jul 2017 12:40:14 +0200 (CEST) Received: from EUR01-DB5-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.352.0; Mon, 24 Jul 2017 12:40:13 +0200 Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=simon.marchi@ericsson.com; Received: from elxacz23q12.ki.sw.ericsson.se (192.176.1.81) by DBXPR07MB317.eurprd07.prod.outlook.com (2a01:111:e400:941d::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1304.10; Mon, 24 Jul 2017 10:40:12 +0000 From: Simon Marchi To: CC: Simon Marchi Subject: [PATCH 2/3] gdbserver lwp_info: Initialize fields, use new/delete Date: Mon, 24 Jul 2017 12:39:56 +0200 Message-ID: <1500892797-7523-3-git-send-email-simon.marchi@ericsson.com> In-Reply-To: <1500892797-7523-1-git-send-email-simon.marchi@ericsson.com> References: <1500892797-7523-1-git-send-email-simon.marchi@ericsson.com> MIME-Version: 1.0 X-ClientProxiedBy: DB6P190CA0007.EURP190.PROD.OUTLOOK.COM (2603:10a6:6:2f::20) To DBXPR07MB317.eurprd07.prod.outlook.com (2a01:111:e400:941d::11) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 100dbde1-3b97-4ef8-43fa-08d4d2805d32 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(300000500095)(300135000095)(300000501095)(300135300095)(22001)(300000502095)(300135100095)(300000503095)(300135400095)(201703131423075)(201703031133081)(300000504095)(300135200095)(300000505095)(300135600095)(300000506095)(300135500095); SRVR:DBXPR07MB317; X-Microsoft-Exchange-Diagnostics: 1; DBXPR07MB317; 3:9pmdjeobAnRvjAHAbe53b9a4Wid/gHiIB8Bo+7NpRH4mWonfUZZSHN302Tvnm92U8Kc5D06pLUVrM8r+ouz0nTQ4addTD7/DQ1q4w/xSunqXvw+Pt7amQr+tRZlw7I7MhNG2+8XxaMUKF4/hx5fDUmjkxzvT9nEyFi0FycT98kzk7r8D0Y6S7ABufKhtu35KFZDLx2GxK5itncivUiTQeKSmGjS5whOcoGpzBR4IQfGPmRtxsNLJlbq7DW5TqCqm49fClobo+XMjPsr9jsyPMu3T8Qysk0Vp96k6L8PxAh5uWYCY07ifWDEkXhEMpCNDd/5zeMy+HDR/9ORV4LRKYQV4bzlXT5gHSJ9m+5iHUCUwchBn1ksipu1Q807wBvQpAjem+72LbQ+6Qotgruk+Y0uGinSHTGheOjehVOvIa4NiOEG6mXWebYiddjLiR6MRkpCCs7TtAC3txM/Beyjolft/FLBkelaXRLobKPyJDSDj/fXxVt060DGmR+TkJCb06bbKPogXKRefWg2u58lpWHJX18427S9N/I/eB7MXpFEcNS3pYv7a6zl5vjMBZEszwN+w8d2lUHmO1RCQgR/jcDMcnDDhbEONMEn3wTW76HeKyebL116+DL06A0HQmXs9nTYhSgwtXmg8cl7FR5MmvdbmZ2AIb7aYrhrOkrh25hgACqWF219dmUZgaZtVrROc+JVlLrjcL+mW31h/VGmthZ5doc+XL5fTZpPQvXUxM4A= X-MS-TrafficTypeDiagnostic: DBXPR07MB317: X-Microsoft-Exchange-Diagnostics: 1; DBXPR07MB317; 25:edJ+/rglrwxmQKWeqOAl+X7bL0gKY0xxTZYLo7Jh/TouEqmPqmGBSuYuvz5DoB/QanBHt6vkbVzE9sP85lTBTVO1DKroz6bbdvSQah7KCC+FMulkBqg3OzP8vglZWAMqXW/02Zt5aMTqgJg5SKu5miyilGIThD8vDyDQHIT1qqZNWWlss+L4WYIkogL2n+ZmRz12rq7op9fmyjQ+pTdGaKCvkF6i3+9gjPPaRo2vLXU3R7lEEBt8KA/aqXCfjc3mqOGh5ZqRhHMeRdJgIwiSR9QoPlcx3qZXoFJ0UJ38Gm05BTX+PQPCn+yB/9KpfywXLK6LMpL/T9ZmpuWP/BG2CSa2UqwA7iDxQPytr6RPFpot0BcGVLEtLlx9VOpV9CE7lDbqd2o0wUdQLgwOkK4h1/uKzvifezBO5bHdORphmajC0qN79YcpaSob5y3w8xM5Qr8kTXDIgWjK3nWj5uPbi0z8EEKI7LALmoYCyxSKomNasoYYs+lE1VMWjQ9839MHjxfGNgAg19Vr2naMOxiOC+QKQrxPJ4NhHX7csJ+n+qTz7fPtgfnNV/7qJymWHZ7jDDJ12KWtdDH6d8spHFrrpAvQ895ECWXJoEViBbJx5Eq5NwT8m3PbqoFSHsDJ0xiXHJMIaY1pL8f44tncVXAzh1llsTRzVIG95Z1BwkCQU3YexDJqJJXFDB2SXyAvZed9XYWsJc6lDl6b3tL03sjQ4k+LqrXBEDbeGPcF6uG9kqlbYMRCxugw3o6vV7Yo1MWbrB1pNzMx+yzYiAkcIrTSrso+FylCAcjhQTTyq++6u1nYQn3wVn/xag2B6nOI7NDkDNYpFWjKnHVhjhpZoC9Bku4e3BcWxkskp+tCoxAbyLSA5v9XOqOeVLECgaL1ku6mIupgjRbDhIia+WD3tfjhxwObMxD45iXpAZ573nfx/to= X-Microsoft-Exchange-Diagnostics: 1; DBXPR07MB317; 31:3SPddoeu3g3bJ3iEjixL41K9gmW5pLHzpBYMrECYc4MXYWaXTwndvNyxscl5NIwrqcYUjrMcN1SnKCLTSbpnhhgAvmW9qYvy677Aia59zKt209Bo0ofFlWSVBH5r4HPNcU7t86o10yPf6dKcHef63uNO9SByMkCUMLhZLpTzG058dCw+HS33HnxwWLkLL40hnYH0gVilb7HFpDneoBKoH5SpuDPYhXFhpHxsyymc33epgCrXX3CXSS1XxmpljNfdJGt+Cd6VMqYfU3NWKYORF+rkpzsSFl61pJrCQ4rAbq9jXct9vSLybF+HbikVbq9BFF8+1U3pfivLJ9QEuDjMbit2wzSlcQHMedns+wuCWnMeorsInBfU63pB46qYWoD38cQAU5yK+4SUZVacFy3zRgAcF/+VGxG0tMcjcHy4JfprxqTsHnOtFRnKkOmb++ve7ADWPNxMdVCTk93BO/Z5hdUHkaNDUOYx6nTRNinMXw3XA9y0hjFkLzxPFGiOY3XH6K5G1QV8CNGrRDgLkR5BuQkPz9QGprrIqDQQAXF1mX+9eKQoboeByxYh0czuwkeqa6SxnIxTAOFha6qjH7Mo5gjC2qJbv6fFzsalEMbKAXiFPAX0pQRouy5k8BRyyc3IxVv+uEq6Vyg+ClEezgqRAIUZock3ydcRj2zKoa3g05A= X-Microsoft-Exchange-Diagnostics: 1; DBXPR07MB317; 20:zqxvdRedtqFrJsdxYsSqBHm0WKp9yE4JJgFEcF22rOke7psAoZ0hTIAqlquv3K+GZ/IAOWXOWWXx4Gdr/JgeslHw3OmQ6WNXfHv9f49w2LbdJY9II1/aEPt71sbujE63mJd6OY8iRG2lw839HbC8QyJhrgGbSAB20RHgUXYEKw4YmDpbRBWN0X79M6xbQ3gFF88FlAKplcbMEg7k/BgkWdaW6UDZ4BslWYRrxeFXZE2ewMxNs1PEeX0pe/nrW2KXJ4hmCZQRvGJgOokf6Y+9hy+CkQiHK+FNyKgrwUAjhlbD8jeWKcMRH+vgRgGxFraStvVaz90Fmx+TTeUB8pPtuiiYs5tG4TH66XzUQFHjm9FHcXGM9zelG20kxkvlnVdCnPZssjqONx9u4+pvuJ+YqF6s3M2sRJdJUjUpIwbWb1s93axbd2zrKYZLG5cR7DmaZPfjyRkz0DBJ2lMc4ZgogU6f4ZX8GgGAhGQP8n6iu+MAuHrb7j808AxK/jZknwmv X-Exchange-Antispam-Report-Test: UriScan:(211171220733660); X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(100000700101)(100105000095)(100000701101)(100105300095)(100000702101)(100105100095)(6040450)(601004)(2401047)(8121501046)(5005006)(3002001)(100000703101)(100105400095)(93006095)(93001095)(10201501046)(6041248)(20161123555025)(20161123564025)(20161123560025)(20161123558100)(20161123562025)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(6072148)(100000704101)(100105200095)(100000705101)(100105500095); SRVR:DBXPR07MB317; BCL:0; PCL:0; RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095); SRVR:DBXPR07MB317; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; DBXPR07MB317; 4:TxoDf3+NoKuE0xDm7UJTXBdZ8I1hjPJNfw93mb7gg57?= =?us-ascii?Q?nenA4TRUMbPO5HAphMowl7IQp/Up+TbJLcvp0NUr0tGB/XPARt2aSlgbG3ZE?= =?us-ascii?Q?xc3fvPCqr9MRx7GGKEyg3NIvXDHZ0lvnppPlI0NnxC1GdRIxgAmGPnwpOMdp?= =?us-ascii?Q?6ELyEElT0oj0Z8pxV6oqJ/r5cPmcOADZJZ3hDkWs//y9aYn/8uiiAho1Ryfy?= =?us-ascii?Q?bWT3cY+LVcH7T9SWRDc/V4b2Ru3/rqRMrpTSTGA8AdJbQnf/Ktv5wVNTSK0d?= =?us-ascii?Q?1qRpd3IW3lurt4H1Zb4vmNe5nrUJv9w1JpfoJModmXxKN3Huq25QAjKVWbns?= =?us-ascii?Q?DxAmmeMII/2YlHtdxgmEJVAuqcsw12Ihb5jhlPdeFAzm3FaLv1e1ApzMO4hU?= =?us-ascii?Q?1duxfXKRMmYSFUUlVb4BvjcQRNeNdmKHT8X/XzK8N4KIF5AvAkSSrEMg6uQk?= =?us-ascii?Q?liMmPNEixLhWmTgy0rAXR0fkfLDCVvaab2+MEcQVin4orMChnqIEP1CEPhGR?= =?us-ascii?Q?2Fa6HQEFnVjkh3uy2opy/ZVLMzZfbvdQmvcHmmbLR0GZtkv8kq5Mp7inlDtI?= =?us-ascii?Q?M2KDhgWoextvhZL+7sUhe+sCmB0l5/oDL6xx4fy2cxLIiMBFnU5qP5c4L6LW?= =?us-ascii?Q?4bZQsg31xtaOfzTCQiyykS2jsRMZEupMZ8mwv4nTjeGb7TfgTRptGoRtqJCL?= =?us-ascii?Q?EONQH9f93Jz0ia0hO8Lqj5Nqax81LI+SKYalubhKNiyL9PlME8ydZB2AFUyY?= =?us-ascii?Q?71+YDgpcqgt7xVZrQBoiIxWAWMrBxnVHFcOZb+P8eQEUzKUU3EwcKhO69qpU?= =?us-ascii?Q?d8nnqfhUmMMLalgWPrk/y2zVtgnd4oaP+JX+d+AxNv1d2KuX2MLafVRx00TF?= =?us-ascii?Q?8rwqpFT/9kM376vRmt9j0kdbsmJwwXkhOGy5iJ0w8sqqHIS1k+VeE/5J11ZL?= =?us-ascii?Q?++RFsis1YJSTTzTnnxZbaqjjl1HntviA7ccywC1Q/3lCEhjZdWj5EslA9Oyt?= =?us-ascii?Q?87W1wxeOgoZdZ8PvQq13xdz7462z1UQCd5v2akTR2AK85iLidiaN1HEFR39m?= =?us-ascii?Q?3cw1PDS/4XYLUqFfpGtiHiqvAciMgPZe+O+iMpGb0nQ4p3Qj3e8TeYaaz7qF?= =?us-ascii?Q?S/OmYLjRoPZaJfZuIa/wvSins+vYMBodd7ggjUlKhxt0Qldf26q7+Qyx+I3m?= =?us-ascii?Q?+jwZtR1AMjPU=3D?= X-Forefront-PRVS: 0378F1E47A X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(4630300001)(7370300001)(6009001)(39850400002)(39450400003)(39400400002)(39410400002)(39860400002)(39840400002)(54534003)(189002)(199003)(110136004)(107886003)(53936002)(6512007)(66066001)(97736004)(189998001)(6666003)(68736007)(38730400002)(5890100001)(7350300001)(575784001)(101416001)(50986999)(76176999)(86362001)(5660300001)(6116002)(3846002)(42186005)(36756003)(6916009)(2950100002)(33646002)(81166006)(81156014)(7736002)(305945005)(25786009)(4326008)(2361001)(2351001)(48376002)(2906002)(478600001)(105586002)(8676002)(6486002)(5003940100001)(50466002)(50226002)(106356001)(47776003)(6506006); DIR:OUT; SFP:1101; SCL:1; SRVR:DBXPR07MB317; H:elxacz23q12.ki.sw.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; DBXPR07MB317; 23:1ZwkWVl41gfzbNX3kPj3pKNMTg8rvXBmvVqV7w2WMb?= =?us-ascii?Q?2MPCZTwhs1j8lTvo15WWUYfMGgkokrnD8pHg8C82+opw7UQuxyr+rjS18AX/?= =?us-ascii?Q?l7RL2WOUJdwfRIIiEsCNbHWie5GBZKeoOwP94LDk29whhqicF3oXefMDDJHm?= =?us-ascii?Q?TtWHAkCiP+pbo3w8EEFlJFEf3oqr00oPh7zoqhvUGYdcWL7ATsvQOV6nEmHj?= =?us-ascii?Q?HUZ33dURzWon1SUYl9hrtudnwuYbP3/DVa0qWIZcN19pCLtkSv9CRpEe9kDX?= =?us-ascii?Q?pQiujjrjcfO9vSSZLyEcvsiqhCJbVl03naVpFZbi34qBK+3SsMt53sg8A38v?= =?us-ascii?Q?TD3ys7PfsKT4DIBuCK8NKU3Goj1pfb1OeYkrYsPgsCC7YDFYm+CcetC8EvlY?= =?us-ascii?Q?fQFXs3ZnGivs/84pkjp0Y2JEOEUDNobSj1m2fwz+sncbbZvbRYnUOqBxRx16?= =?us-ascii?Q?5ahX1qk7rkOAt74WiRQAJi9im72zacPKICYtjjFQKq1IZGBffj/UnoR/J8wT?= =?us-ascii?Q?500JaYJyLEiPPqdevjtUTyUbPuQCcWnt3isWu+NbgmbMdtk8hTjEkOckwiOI?= =?us-ascii?Q?58yEni8BW3U4ZnGDwFCstQ9NnEEIX79lf7eiSIy8/wFoZ8QI3EPzRi8MN8Hn?= =?us-ascii?Q?+Kx8t+30wVUi7wmacQTFCu/5uLYKORf+iLgO3ysRt8PCwBrfCka3px/dJRgC?= =?us-ascii?Q?z/kNH+y4N8Y/vVLhi02vqMh0+Bi6H8SYrO2n8QyowMdPMikGP8Iv51kpytrF?= =?us-ascii?Q?mAjTPmcsTfprD73M2Ku1QJbEpLROJS3JsDvF5Gcq9Oq00/V78lC22y1V4G2s?= =?us-ascii?Q?OoqK1FW6DDHjE/SmsW0m+2NOlWiiTCCVvCMG/AK/ZgO1Kss9UmdSS7/oW029?= =?us-ascii?Q?a1HdWfCI3zYWUSLezHkpYQtSaY5TCkLezuykRQ+R2OCxgRGORHh5NN54IC5n?= =?us-ascii?Q?8ekBC0dHDe3hKKKIf1McvLAmpGcVBw8t60OUTP7f8GYBDIfwnTsWBrs18whp?= =?us-ascii?Q?bk3pTXYiHEOWU0FdTo9rWLHKBq+f5OOds05yANRPz+YVmu59uFSZi9gJSfQy?= =?us-ascii?Q?06VtX2QlhnYcFAGqvkAGv4zDnq6ImHjxseW6MkwxUzbM5GJgw+VGIZH6KkRZ?= =?us-ascii?Q?Y8jzqenSYzAA2rmubAHvZeIscaCmphfUbm8k2NM+Ww/v/KS3mI/4aoAKzIod?= =?us-ascii?Q?WsJEyEUmi+BXaeB7EMCLR3QUNWYfj198pAW1VAdHucNQxhKBXA0iRR7QblZk?= =?us-ascii?Q?/UAdrN8sPCsYzLzO3KIZ1dvuElmW2vWzloYjaqrFrbtRDL2naspKfcW1K5X3?= =?us-ascii?Q?w0M9Opwsaxo5Darr/RpQyjPPf7uxUwlZdUGMAIdtia6o3gDSECAh4ue2RlNO?= =?us-ascii?Q?LAeiLInTRO1ioTcMAC2DPpUL+itlWiv1GlPzcbqJ6Wy710?= X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; DBXPR07MB317; 6:AE/KfeuPIcXcNTb1Wy9SYx2zWrgNFfe4xKl9LHWdVK5?= =?us-ascii?Q?nz/XHMy3Glg/O+w/n9V0l+ju+36ZkNiXhmG/nCzf7JwSPBLy/cDIiYdfNyhM?= =?us-ascii?Q?ttxRVJXIHWG5QkMyEq4wwUPCUc+N9uy0TGemeyNsfUWZP4O/F91/9JLHkhCV?= =?us-ascii?Q?0AQKwLdiido8+7rBZAJkyJY7TKIRUhPH9/UASIayFacLLw2oTgMslzINie0w?= =?us-ascii?Q?cNLgUQN0y386Eit+KYSAgJUxeG40psi5ugjhSNyrjSeAiY0TWoNyCcEugv1z?= =?us-ascii?Q?LhyzCK4RhshnR2eYuYa6xv97CJKM1L+oT4cYZw0tipwIDcvE2ZkkQiDv5uN6?= =?us-ascii?Q?NFvx2qmuyWZq9PacnOJHYA6/GjQhurPQB4H9XrxF1cNRrM3UNfuL8Y3WcnEQ?= =?us-ascii?Q?jnxyKAxMqQWaoQaHAQs7tEz8y+kX9cNaxatcmYAF1ggq9CQXZfsxhjKVEULN?= =?us-ascii?Q?DcQ0zIMoqMpEaNb/ygNkWbFmUkrxMgczPEMik8FGUsbEfpjoVXVGFni0bxoV?= =?us-ascii?Q?q8PmPe4QUv95jhAtCPNUjufYazpEpd/KOAUpyN+DtSaDWClfAG0uQRNeB9E2?= =?us-ascii?Q?pJG9fq6v3fz1zkMDZy+vLGKnOKjQwfagwHhbHGOuyGFlYUgDTfbo2Qsn5ozE?= =?us-ascii?Q?xUshJ0MuT6fIcC+AiF19RrqwiPC8V+tCmRCkdTJIm+RzpVq5rviit1MCuzn8?= =?us-ascii?Q?LTepNz3F17CvAP99f/8cUWySyj/ZrLfzKqEgqLIem90NOFJ/KdACo9OPoE1s?= =?us-ascii?Q?MhB1w9u9yejngiuklqcp63MjhN/pAkSCbo1Blu2qnEPpCCK9WkG/vwdLKINd?= =?us-ascii?Q?GwxECGq63zAPpqjxWVr6oqTO0pZmQ9NGbxthJfddUAPQOenuusGYgqrxzQ9I?= =?us-ascii?Q?TxmkHKxI89EmKGOMrR0V2ewsFkLsTx6V4AR/rPTx7eV2GamITFwlUCC8HFyi?= =?us-ascii?Q?ICfwDYz+sFlNmROGHLkS87g8Nxw4DlloYcLXVVeTOI0V45OFvG0kUpyy1Wt4?= =?us-ascii?Q?=3D?= X-Microsoft-Exchange-Diagnostics: 1; DBXPR07MB317; 5:TTCgE4LKp98EdLOFuv0LIarhM3WeDKcJtQ1UhIPJzOrY89xtl8Fsv6Jwe2/RYrZapogMIS3eMxnW6uL9WhteY0NGBHM8VcCfDhLnXmTzgYi7Xs7JITCXOZJHn0veI1mC64cVY5SAXUxJk3SeXvDy3MXtYK7YuPUzgUfgTgqIIwJJcOynJ9rRp0e6QFVj+7ZVU3Pgk+4aOsZaikkZEBojX0b6NEK5isQNg1M6kcnC3RmK/DKGLqq1C9PXNOwBc4qAbUy4p4VsKD/z283bJM7U36uiEIKu2VW2GswXdDH0eO7haaH/xQ9+sNV/+xYCVV5ARN2Vw/AIK0YX2B+tlUcJGDGOxTAntcsb8LNWurJm6KcXCfknt0SsPS1LmRO05lwn2Jk0Wv+QFNPPhOEOeg4nAR9Ulr0vNjhtFJdMUFEvomAvDrFMiLLIErhK0bh3klxvad4tqlQ6XXVsj8aLZUnZ+vpZSQd8Nomer9o/tZA8dMQ0S76M0ckVgwzxNqhly90h; 24:ASwfS09MU+DbPm+oEZXrhGDSGw9rJq7cz7lFUR7KxlpJa15Qo8gyKUl0ivr6YNomIuszATTp/sbtJqBWW7gjZxOnrPxCn0FztypgYKC+eMQ= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; DBXPR07MB317; 7:ASWh1yFppoW1hH4+JMfUUr5iy34HjTBxCJtbpuhXELTwZmEGcItIfBrJR6oVYa5ga+anjm6CFXOe73pbaDpgOysbJMcWX5ust/C0Ra0FGYBH4204mCoNIfunGgE1kqzX4PZd1WNQ7viYgTszPxdBU/vVQ4WUQvJdEiv6+5PjCr0dSZXQtXGgmy1dbqgT0j1wznsDkXlN9JkWuEJ3ozbfj1s8OdC2Jc7H5oGkcXR2Bbiy5zrLhu4G4re4KcGnJaBn/qsKdz/rH29LyJ1N6puyOAhhnDq4QcXPkSq8tYZosDyl/KKRd0Vlw8VF65usAvSXSFb3JbRzB7aQo+x610dkJfCzey+Kg/wzBBLsuq42t+2JZTgMyYpkcgMjReyAtp2YpyiunrP7/ZJlbCboo0N+tY7IwYDretF4/JMQaEWNnyyWpqjVF8vFYoHBfMdBqrbC5qJkY4i0nmOI71x7v2IC7o0TCy4aQJTYk/8J7y8Mffr0qqp+1+x8JsJ3h5bRDX1YA9YsdPz+smY3KUMqTsPsIIfgalBQu+40QVer9FuTc2kL1+mNlZyS0C3kr9F8tejGF8UvdEY4r1aqutpC9Gx7k9jqOM/CDN+fdgsTzHB9xWu5MAGjcWZ2GGqOiD+350vhUycHglcQirkpptdicCVdWNSezgz61CyCmD/8ymwgmR3WPzZ5GfQiFSD8HgpPM7gi+bNctE9d4Qp9NugekHso218Lf4CmkylUqPc2A1zRVJWp9O3DPgK4+jtAHeS7UZ6pcFJ21IxM9r5OudWMd0PcCAxIzc1bbjkbJFwCpmdUFFA= X-MS-Exchange-CrossTenant-OriginalArrivalTime: 24 Jul 2017 10:40:12.5273 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: DBXPR07MB317 X-OriginatorOrg: ericsson.com X-IsSubscribed: yes This patch minimally C++ifies gdbdserver's lwp_info, by initializing its fields, using new/delete to (de-)allocate it and changing some field types to bool. This is in preparation of using a unique_ptr in lwp_info in the following patch. gdb/gdbserver/ChangeLog: * linux-low.h (struct lwp_info): Initialize fields, : Change type to bool. * linux-low.c (delete_lwp): De-allocate lwp_info with delete. (handle_extended_wait): Adjust to bool. (add_lwp): Allocate lwp_info with new. (linux_create_inferior): Adjust to bool. (linux_post_create_inferior): Likewise. (linux_attach_lwp): Likewise. (linux_attach): Likewise. (linux_detach_one_lwp): Likewise. (thread_still_has_status_pending_p): Likewise. (maybe_move_out_of_jump_pad): Likewise. (linux_low_filter_event): Likewise. (linux_wait_for_event_filtered): Likewise. (linux_wait_1): Likewise. (send_sigstop): Likewise. (mark_lwp_dead): Likewise. (move_out_of_jump_pad_callback): Likewise. (linux_resume_one_lwp_throw): Likewise. (linux_set_resume_request): Likewise. (proceed_one_lwp): Likewise. (reset_lwp_ptrace_options_callback): Likewise. * thread-db.c (find_one_thread): Likewise. (attach_thread): Likewise. --- gdb/gdbserver/linux-low.c | 94 +++++++++++++++++++++++------------------------ gdb/gdbserver/linux-low.h | 52 +++++++++++++------------- gdb/gdbserver/thread-db.c | 4 +- 3 files changed, 73 insertions(+), 77 deletions(-) diff --git a/gdb/gdbserver/linux-low.c b/gdb/gdbserver/linux-low.c index 3d7cfe3..e650b0d 100644 --- a/gdb/gdbserver/linux-low.c +++ b/gdb/gdbserver/linux-low.c @@ -415,7 +415,7 @@ delete_lwp (struct lwp_info *lwp) remove_thread (thr); free (lwp->arch_private); - free (lwp); + delete lwp; } /* Add a process to the common process list, and set its private @@ -535,9 +535,9 @@ handle_extended_wait (struct lwp_info **orig_event_lwp, int wstat) gdb_assert (child_proc != NULL); child_lwp = add_lwp (ptid); gdb_assert (child_lwp != NULL); - child_lwp->stopped = 1; - child_lwp->must_set_ptrace_flags = 1; - child_lwp->status_pending_p = 0; + child_lwp->stopped = true; + child_lwp->must_set_ptrace_flags = true; + child_lwp->status_pending_p = false; child_thr = get_lwp_thread (child_lwp); child_thr->last_resume_kind = resume_stop; child_thr->last_status.kind = TARGET_WAITKIND_STOPPED; @@ -589,7 +589,7 @@ handle_extended_wait (struct lwp_info **orig_event_lwp, int wstat) /* The status_pending field contains bits denoting the extended event, so when the pending event is handled, the handler will look at lwp->waitstatus. */ - event_lwp->status_pending_p = 1; + event_lwp->status_pending_p = true; event_lwp->status_pending = wstat; /* Link the threads until the parent event is passed on to @@ -630,7 +630,7 @@ handle_extended_wait (struct lwp_info **orig_event_lwp, int wstat) or leave it stopped. linux_resume_one_lwp is a nop if it thinks the thread is currently running, so set this first before calling linux_resume_one_lwp. */ - new_lwp->stopped = 1; + new_lwp->stopped = true; /* If we're suspending all threads, leave this one suspended too. If the fork/clone parent is stepping over a breakpoint, @@ -645,14 +645,14 @@ handle_extended_wait (struct lwp_info **orig_event_lwp, int wstat) If we do get another signal, be sure not to lose it. */ if (WSTOPSIG (status) != SIGSTOP) { - new_lwp->stop_expected = 1; - new_lwp->status_pending_p = 1; + new_lwp->stop_expected = true; + new_lwp->status_pending_p = true; new_lwp->status_pending = status; } else if (report_thread_events) { new_lwp->waitstatus.kind = TARGET_WAITKIND_THREAD_CREATED; - new_lwp->status_pending_p = 1; + new_lwp->status_pending_p = true; new_lwp->status_pending = status; } @@ -712,8 +712,8 @@ handle_extended_wait (struct lwp_info **orig_event_lwp, int wstat) = xstrdup (linux_proc_pid_to_exec_file (lwpid_of (event_thr))); /* Mark the exec status as pending. */ - event_lwp->stopped = 1; - event_lwp->status_pending_p = 1; + event_lwp->stopped = true; + event_lwp->status_pending_p = true; event_lwp->status_pending = wstat; event_thr->last_resume_kind = resume_continue; event_thr->last_status.kind = TARGET_WAITKIND_IGNORE; @@ -935,11 +935,7 @@ save_stop_reason (struct lwp_info *lwp) static struct lwp_info * add_lwp (ptid_t ptid) { - struct lwp_info *lwp; - - lwp = XCNEW (struct lwp_info); - - lwp->waitstatus.kind = TARGET_WAITKIND_IGNORE; + lwp_info *lwp = new lwp_info; if (the_low_target.new_thread != NULL) the_low_target.new_thread (lwp); @@ -1007,7 +1003,7 @@ linux_create_inferior (const char *program, ptid = ptid_build (pid, pid, 0); new_lwp = add_lwp (ptid); - new_lwp->must_set_ptrace_flags = 1; + new_lwp->must_set_ptrace_flags = true; post_fork_inferior (pid, program); @@ -1029,7 +1025,7 @@ linux_post_create_inferior (void) int options = linux_low_ptrace_options (proc->attached); linux_enable_event_reporting (lwpid_of (current_thread), options); - lwp->must_set_ptrace_flags = 0; + lwp->must_set_ptrace_flags = false; } } @@ -1050,7 +1046,7 @@ linux_attach_lwp (ptid_t ptid) /* We need to wait for SIGSTOP before being able to make the next ptrace call on this LWP. */ - new_lwp->must_set_ptrace_flags = 1; + new_lwp->must_set_ptrace_flags = true; if (linux_proc_pid_is_stopped (lwpid)) { @@ -1113,7 +1109,7 @@ linux_attach_lwp (ptid_t ptid) because we are guaranteed that the add_lwp call above added us to the end of the list, and so the new thread has not yet reached wait_for_sigstop (but will). */ - new_lwp->stop_expected = 1; + new_lwp->stop_expected = true; return 0; } @@ -1220,7 +1216,7 @@ linux_attach (unsigned long pid) if (!WIFSTOPPED (wstat) || WSTOPSIG (wstat) != SIGSTOP) { - lwp->status_pending_p = 1; + lwp->status_pending_p = true; lwp->status_pending = wstat; } @@ -1514,7 +1510,7 @@ linux_detach_one_lwp (struct lwp_info *lwp) target_pid_to_str (ptid_of (thread))); kill_lwp (lwpid_of (thread), SIGCONT); - lwp->stop_expected = 0; + lwp->stop_expected = false; } /* Pass on any pending signal for this thread. */ @@ -1774,7 +1770,7 @@ thread_still_has_status_pending_p (struct thread_info *thread) { if (debug_threads) debug_printf ("discarding pending breakpoint status\n"); - lp->status_pending_p = 0; + lp->status_pending_p = false; return 0; } } @@ -2181,7 +2177,7 @@ maybe_move_out_of_jump_pad (struct lwp_info *lwp, int *wstat) reporting to GDB. Otherwise, it's an IPA lib bug: just report the signal to GDB, and pray for the best. */ - lwp->collecting_fast_tracepoint = 0; + lwp->collecting_fast_tracepoint = false; if (r != 0 && (status.adjusted_insn_addr <= lwp->stop_pc @@ -2456,7 +2452,7 @@ linux_low_filter_event (int lwpid, int wstat) child_ptid = ptid_build (lwpid, lwpid, 0); child = add_lwp (child_ptid); - child->stopped = 1; + child->stopped = true; current_thread = child->thread; } @@ -2474,7 +2470,7 @@ linux_low_filter_event (int lwpid, int wstat) thread = get_lwp_thread (child); - child->stopped = 1; + child->stopped = true; child->last_status = wstat; @@ -2531,7 +2527,7 @@ linux_low_filter_event (int lwpid, int wstat) /* The process is started, but GDBserver will do architecture-specific setup after the program stops at the first instruction. */ - child->status_pending_p = 1; + child->status_pending_p = true; child->status_pending = wstat; return child; } @@ -2544,7 +2540,7 @@ linux_low_filter_event (int lwpid, int wstat) int options = linux_low_ptrace_options (proc->attached); linux_enable_event_reporting (lwpid, options); - child->must_set_ptrace_flags = 0; + child->must_set_ptrace_flags = false; } /* Always update syscall_state, even if it will be filtered later. */ @@ -2590,7 +2586,7 @@ linux_low_filter_event (int lwpid, int wstat) { if (debug_threads) debug_printf ("Expected stop.\n"); - child->stop_expected = 0; + child->stop_expected = false; if (thread->last_resume_kind == resume_stop) { @@ -2623,7 +2619,7 @@ linux_low_filter_event (int lwpid, int wstat) } } - child->status_pending_p = 1; + child->status_pending_p = true; child->status_pending = wstat; return child; } @@ -2719,7 +2715,7 @@ linux_wait_for_event_filtered (ptid_t wait_ptid, ptid_t filter_ptid, { enqueue_one_deferred_signal (requested_child, &requested_child->status_pending); - requested_child->status_pending_p = 0; + requested_child->status_pending_p = false; requested_child->status_pending = 0; linux_resume_one_lwp (requested_child, 0, 0, NULL); } @@ -2745,7 +2741,7 @@ linux_wait_for_event_filtered (ptid_t wait_ptid, ptid_t filter_ptid, debug_printf ("Got an event from pending child %ld (%04x)\n", lwpid_of (event_thread), event_child->status_pending); *wstatp = event_child->status_pending; - event_child->status_pending_p = 0; + event_child->status_pending_p = false; event_child->status_pending = 0; current_thread = event_thread; return lwpid_of (event_thread); @@ -2820,7 +2816,7 @@ linux_wait_for_event_filtered (ptid_t wait_ptid, ptid_t filter_ptid, { event_child = get_thread_lwp (event_thread); *wstatp = event_child->status_pending; - event_child->status_pending_p = 0; + event_child->status_pending_p = false; event_child->status_pending = 0; break; } @@ -3480,7 +3476,7 @@ linux_wait_1 (ptid_t ptid, event_child->collecting_fast_tracepoint = linux_fast_tracepoint_collecting (event_child, NULL); - if (event_child->collecting_fast_tracepoint != 1) + if (!event_child->collecting_fast_tracepoint) { /* No longer need this breakpoint. */ if (event_child->exit_jump_pad_bkpt != NULL) @@ -3507,7 +3503,7 @@ linux_wait_1 (ptid_t ptid, } } - if (event_child->collecting_fast_tracepoint == 0) + if (!event_child->collecting_fast_tracepoint) { if (debug_threads) debug_printf ("fast tracepoint finished " @@ -3845,7 +3841,7 @@ linux_wait_1 (ptid_t ptid, starvation. */ if (ptid_equal (ptid, minus_one_ptid)) { - event_child->status_pending_p = 1; + event_child->status_pending_p = true; event_child->status_pending = w; select_event_lwp (&event_child); @@ -3853,7 +3849,7 @@ linux_wait_1 (ptid_t ptid, /* current_thread and event_child must stay in sync. */ current_thread = get_lwp_thread (event_child); - event_child->status_pending_p = 0; + event_child->status_pending_p = false; w = event_child->status_pending; } @@ -4050,7 +4046,7 @@ send_sigstop (struct lwp_info *lwp) if (debug_threads) debug_printf ("Sending sigstop to lwp %d\n", pid); - lwp->stop_expected = 1; + lwp->stop_expected = true; kill_lwp (pid, SIGSTOP); } @@ -4093,7 +4089,7 @@ static void mark_lwp_dead (struct lwp_info *lwp, int wstat) { /* Store the exit status for later. */ - lwp->status_pending_p = 1; + lwp->status_pending_p = true; lwp->status_pending = wstat; /* Store in waitstatus as well, as there's nothing else to process @@ -4110,10 +4106,10 @@ mark_lwp_dead (struct lwp_info *lwp, int wstat) } /* Prevent trying to stop it. */ - lwp->stopped = 1; + lwp->stopped = true; /* No further stops are expected from a dead lwp. */ - lwp->stop_expected = 0; + lwp->stop_expected = false; } /* Return true if LWP has exited already, and has a pending exit event @@ -4229,7 +4225,7 @@ move_out_of_jump_pad_callback (struct inferior_list_entry *entry) if (wstat) { - lwp->status_pending_p = 0; + lwp->status_pending_p = false; enqueue_one_deferred_signal (lwp, wstat); if (debug_threads) @@ -4392,7 +4388,7 @@ linux_resume_one_lwp_throw (struct lwp_info *lwp, Code in this function that requires register access should be guarded by proc->tdesc == NULL or something else. */ - if (lwp->stopped == 0) + if (!lwp->stopped) return; gdb_assert (lwp->waitstatus.kind == TARGET_WAITKIND_IGNORE); @@ -4575,7 +4571,7 @@ linux_resume_one_lwp_throw (struct lwp_info *lwp, later try to stop the LWP and hang forever waiting for a stop status. Note that we must not throw after this is cleared, otherwise handle_zombie_lwp_error would get confused. */ - lwp->stopped = 0; + lwp->stopped = false; lwp->stop_reason = TARGET_STOPPED_BY_NO_REASON; } @@ -4606,7 +4602,7 @@ check_ptrace_stopped_lwp_gone (struct lwp_info *lp) if (linux_proc_pid_is_trace_stopped_nowarn (lwpid_of (thread)) == 0) { lp->stop_reason = TARGET_STOPPED_BY_NO_REASON; - lp->status_pending_p = 0; + lp->status_pending_p = false; return 1; } return 0; @@ -4739,7 +4735,7 @@ linux_set_resume_request (struct inferior_list_entry *entry, void *arg) && !lwp->status_pending_p && dequeue_one_deferred_signal (lwp, &lwp->status_pending)) { - lwp->status_pending_p = 1; + lwp->status_pending_p = true; if (debug_threads) debug_printf ("Dequeueing deferred signal %d for LWP %ld, " @@ -5294,7 +5290,7 @@ proceed_one_lwp (struct inferior_list_entry *entry, void *except) if (thread->last_resume_kind == resume_stop && lwp->pending_signals_to_report == NULL - && lwp->collecting_fast_tracepoint == 0) + && !lwp->collecting_fast_tracepoint) { /* We haven't reported this LWP as stopped yet (otherwise, the last_status.kind check above would catch it, and we wouldn't @@ -6466,7 +6462,7 @@ reset_lwp_ptrace_options_callback (struct inferior_list_entry *entry, if (!lwp->stopped) { /* Stop the lwp so we can modify its ptrace options. */ - lwp->must_set_ptrace_flags = 1; + lwp->must_set_ptrace_flags = true; linux_stop_lwp (lwp); } else @@ -6476,7 +6472,7 @@ reset_lwp_ptrace_options_callback (struct inferior_list_entry *entry, int options = linux_low_ptrace_options (proc->attached); linux_enable_event_reporting (lwpid_of (thread), options); - lwp->must_set_ptrace_flags = 0; + lwp->must_set_ptrace_flags = false; } return 0; diff --git a/gdb/gdbserver/linux-low.h b/gdb/gdbserver/linux-low.h index 6328da0..dcc9315 100644 --- a/gdb/gdbserver/linux-low.h +++ b/gdb/gdbserver/linux-low.h @@ -267,7 +267,7 @@ extern struct linux_target_ops the_low_target; struct lwp_info { /* Backlink to the parent object. */ - struct thread_info *thread; + struct thread_info *thread = NULL; /* If this flag is set, the next SIGSTOP will be ignored (the process will be immediately resumed). This means that either we @@ -275,109 +275,109 @@ struct lwp_info (so the SIGSTOP is still pending), or that we stopped the inferior implicitly via PTRACE_ATTACH and have not waited for it yet. */ - int stop_expected; + bool stop_expected = false; - /* When this is true, we shall not try to resume this thread, even + /* When this is greater than 0, we shall not try to resume this thread, even if last_resume_kind isn't resume_stop. */ - int suspended; + int suspended = 0; /* If this flag is set, the lwp is known to be stopped right now (stop event already received in a wait()). */ - int stopped; + bool stopped = false; /* Signal whether we are in a SYSCALL_ENTRY or in a SYSCALL_RETURN event. Values: - TARGET_WAITKIND_SYSCALL_ENTRY - TARGET_WAITKIND_SYSCALL_RETURN */ - enum target_waitkind syscall_state; + enum target_waitkind syscall_state = TARGET_WAITKIND_IGNORE; /* When stopped is set, the last wait status recorded for this lwp. */ - int last_status; + int last_status = 0; /* If WAITSTATUS->KIND != TARGET_WAITKIND_IGNORE, the waitstatus for this LWP's last event, to pass to GDB without any further processing. This is used to store extended ptrace event information or exit status until it can be reported to GDB. */ - struct target_waitstatus waitstatus; + struct target_waitstatus waitstatus = { TARGET_WAITKIND_IGNORE }; /* A pointer to the fork child/parent relative. Valid only while the parent fork event is not reported to higher layers. Used to avoid wildcard vCont actions resuming a fork child before GDB is notified about the parent's fork event. */ - struct lwp_info *fork_relative; + struct lwp_info *fork_relative = NULL; /* When stopped is set, this is where the lwp last stopped, with decr_pc_after_break already accounted for. If the LWP is running, this is the address at which the lwp was resumed. */ - CORE_ADDR stop_pc; + CORE_ADDR stop_pc = 0; /* If this flag is set, STATUS_PENDING is a waitstatus that has not yet been reported. */ - int status_pending_p; - int status_pending; + bool status_pending_p = false; + int status_pending = 0; /* The reason the LWP last stopped, if we need to track it (breakpoint, watchpoint, etc.) */ - enum target_stop_reason stop_reason; + enum target_stop_reason stop_reason = TARGET_STOPPED_BY_NO_REASON; /* On architectures where it is possible to know the data address of a triggered watchpoint, STOPPED_DATA_ADDRESS is non-zero, and contains such data address. Only valid if STOPPED_BY_WATCHPOINT is true. */ - CORE_ADDR stopped_data_address; + CORE_ADDR stopped_data_address = 0; /* If this is non-zero, it is a breakpoint to be reinserted at our next stop (SIGTRAP stops only). */ - CORE_ADDR bp_reinsert; + CORE_ADDR bp_reinsert = 0; /* If this flag is set, the last continue operation at the ptrace level on this process was a single-step. */ - int stepping; + bool stepping = false; /* Range to single step within. This is a copy of the step range passed along the last resume request. See 'struct thread_resume'. */ - CORE_ADDR step_range_start; /* Inclusive */ - CORE_ADDR step_range_end; /* Exclusive */ + CORE_ADDR step_range_start = 0; /* Inclusive */ + CORE_ADDR step_range_end = 0; /* Exclusive */ /* If this flag is set, we need to set the event request flags the next time we see this LWP stop. */ - int must_set_ptrace_flags; + bool must_set_ptrace_flags = false; /* If this is non-zero, it points to a chain of signals which need to be delivered to this process. */ - struct pending_signals *pending_signals; + struct pending_signals *pending_signals = NULL; /* A link used when resuming. It is initialized from the resume request, and then processed and cleared in linux_resume_one_lwp. */ - struct thread_resume *resume; + struct thread_resume *resume = NULL; /* True if it is known that this lwp is presently collecting a fast tracepoint (it is in the jump pad or in some code that will return to the jump pad. Normally, we won't care about this, but we will if a signal arrives to this lwp while it is collecting. */ - int collecting_fast_tracepoint; + bool collecting_fast_tracepoint = false; /* If this is non-zero, it points to a chain of signals which need to be reported to GDB. These were deferred because the thread was doing a fast tracepoint collect when they arrived. */ - struct pending_signals *pending_signals_to_report; + struct pending_signals *pending_signals_to_report = NULL; /* When collecting_fast_tracepoint is first found to be 1, we insert a exit-jump-pad-quickly breakpoint. This is it. */ - struct breakpoint *exit_jump_pad_bkpt; + struct breakpoint *exit_jump_pad_bkpt = NULL; #ifdef USE_THREAD_DB - int thread_known; + bool thread_known = false; /* The thread handle, used for e.g. TLS access. Only valid if THREAD_KNOWN is set. */ td_thrhandle_t th; #endif /* Arch-specific additions. */ - struct arch_lwp_info *arch_private; + struct arch_lwp_info *arch_private = NULL; }; int linux_pid_exe_is_elf_64_file (int pid, unsigned int *machine); diff --git a/gdb/gdbserver/thread-db.c b/gdb/gdbserver/thread-db.c index 1ffb79d..4bb3c59 100644 --- a/gdb/gdbserver/thread-db.c +++ b/gdb/gdbserver/thread-db.c @@ -198,7 +198,7 @@ find_one_thread (ptid_t ptid) if (ti.ti_tid == 0) return 0; - lwp->thread_known = 1; + lwp->thread_known = true; lwp->th = th; return 1; @@ -229,7 +229,7 @@ attach_thread (const td_thrhandle_t *th_p, td_thrinfo_t *ti_p) lwp = find_lwp_pid (ptid); gdb_assert (lwp != NULL); - lwp->thread_known = 1; + lwp->thread_known = true; lwp->th = *th_p; return 1;