From patchwork Thu Jun 1 19:34:08 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Simon Marchi X-Patchwork-Id: 20681 Received: (qmail 85548 invoked by alias); 1 Jun 2017 19:35:59 -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 84910 invoked by uid 89); 1 Jun 2017 19:35:58 -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= X-HELO: sessmg23.ericsson.net Received: from sessmg23.ericsson.net (HELO sessmg23.ericsson.net) (193.180.251.45) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Thu, 01 Jun 2017 19:35:56 +0000 Received: from ESESSHC009.ericsson.se (Unknown_Domain [153.88.183.45]) by sessmg23.ericsson.net (Symantec Mail Security) with SMTP id 4E.61.03383.D9C60395; Thu, 1 Jun 2017 21:35:57 +0200 (CEST) Received: from EUR02-VE1-obe.outbound.protection.outlook.com (153.88.183.145) by oa.msg.ericsson.com (153.88.183.45) with Microsoft SMTP Server (TLS) id 14.3.339.0; Thu, 1 Jun 2017 21:34:20 +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 elxacz23q12.localdomain (80.216.243.234) by AM3PR07MB307.eurprd07.prod.outlook.com (2a01:111:e400:881b::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1143.6; Thu, 1 Jun 2017 19:34:17 +0000 From: Simon Marchi To: CC: Simon Marchi Subject: [PATCH 1/3] Introduce and use new_breakpoint_from_type Date: Thu, 1 Jun 2017 21:34:08 +0200 Message-ID: <1496345650-11832-1-git-send-email-simon.marchi@ericsson.com> MIME-Version: 1.0 X-ClientProxiedBy: AM4PR05CA0011.eurprd05.prod.outlook.com (2603:10a6:205::24) To AM3PR07MB307.eurprd07.prod.outlook.com (2a01:111:e400:881b::15) X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: AM3PR07MB307: X-MS-Office365-Filtering-Correlation-Id: b2006205-1dfd-4f5c-2d1e-08d4a92531a0 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(22001)(201703131423075)(201703031133081); SRVR:AM3PR07MB307; X-Microsoft-Exchange-Diagnostics: 1; AM3PR07MB307; 3:9yw5uY+dHciuq8w0J8aD2F5dEXd706eOH5SDuKSLyhS93zOSoTpsEPxaFG5TO3ZDoXKeBdpZj5OQO9FbV0iExcgb2wnz6gvS84Kiaci3ZDEoW7CQeY5AZwa1ORshhLKWFpBYQuzjuL93UJ/1NUBB/MhD1CvlsqO15NlKv05ZVhTTnEA3L7tOMxr/iqZurAdCuSlMwxP/r3wzVu5B9aL2Bbs6AeloHUplw/7JFkm5pvHQP4Mn4Winaa7p/Dam7sDu06lru59NV19xhL/8Ay9SwvmDJSO5THxuBgDzaH+6ZS3eTTdhOxUCShyHfwoRTY9sEn2Q52Q7psXN+N8GeenrQA==; 25:rv1agGuvwQTow/oWKbfld0lFvmbK9Bq7PWmOxOflO0wCmI5E7F/TWeEzYhM8Z4L7LNeYJhKw/ret/cgYTFQDllyUKVwWzVtJmNAhcljM9YCUJ7sxaRclx226pT/nBI2+lrrCWTOaXiH47YjvqPYFI75ao0N673rHm/kpOzHaYAWnydZZzeTduOTyOF1H5JrIS9+Cnfw0WE2+TMPrgbZBzXaInbb8yyhwFd6kKIijzrBNfqkdot/oqU4J7gENv2t1MDOmz62bN2FflSAK6h2NRJ24jcFo50yKKBz0rwJE6I6m/11K/p38inxrTIuAIVHGdtXRQtp50lR/9ory+aVx/Zcheh9kriISkrajOEDJ4J/redvGNRH2LjUNKiyf25iKBzHIFopUrh+fpaNTzDqQg6Nn8iguL22NVMGaJDZRHZt50Mf6bWY7Zg5GYsjU8cQdT7NEMI0zJnYmZZz2gBv42KHn+hII+fqN0Y46mOHJvRQ= X-Microsoft-Exchange-Diagnostics: 1; AM3PR07MB307; 31:MO0tXXthv647s/Jo46QoA+VFZiudiDGoFonhMNH15FwVFM0QFYHkH1oahXpBglOuoweO70mv9qGi9LVfcAcCk7xpPVlyQ3gLhcHia0lCuMG7WWZnDiiT/eeGQOfyP4WPOR3jqksNwDKYKGiNIBQlYkJJB0CfPXH/7I5rvVV2+WiVo6urswAzpaGwbXXL4kR9eUvSlA2h+NP1sfPIU9IKoc6HRkCc0R0Oix9OYLpqn0H29Um8lD9HdRc8TQQU2KIyf0ycTTIBaQvLbQUPU15pdQ==; 20:lg2i7oyAEjCmQ3Y0wZvhuxzXaQ4VR2j4IirbHkvRwt9jF1xAfMcfKmUe2KGI6/VvDc/JOEAXZxqXx4K/XXp+c9GgKQYbenPziobyKxla50JoEf5OjJgxFZ2/oU35KD5asFpLJgdYYEY5u7FfJuo/2YnTJkP/aBDr2+3gwu6jhTiCOPcW0bKfDNGQCfEjHtjH22/E48Sqi9CNVYVpq7MZ62OA4HYOw9ejAXxXe+iJeSbbrIhM7Pxt1UxSIL/HEpQZvcyqUAy/zUU9yeoTMYKwZyewALwXbiejmJLejerbSi4FedDPf8QOE+Qw5DkEcNrwJKwoofpwszNQAxb7EbhLuzJmnhlo+swmItJ4j0C9ir8Ag/wrfbCEAs7h8JcmrRo8EDw7wdKFMqEbExEWdge0phJWewCrdBKwJX/eezyLTTy02mkg3JXRvGw70Ttb5n57eyq2+qpJSm5ggazyzsTVzcXBZIhMB/Nms7nDgNwiZo1vE9qBdkwvTqzmARifRsHX X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(100000700101)(100105000095)(100000701101)(100105300095)(100000702101)(100105100095)(6040450)(601004)(2401047)(5005006)(8121501046)(100000703101)(100105400095)(93006095)(93001095)(3002001)(10201501046)(6041248)(20161123562025)(20161123560025)(20161123558100)(20161123555025)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123564025)(6072148)(100000704101)(100105200095)(100000705101)(100105500095); SRVR:AM3PR07MB307; BCL:0; PCL:0; RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095); SRVR:AM3PR07MB307; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; AM3PR07MB307; 4:KfUMNQiige7afB1+61a7HmNCMhz3NPGvDneszBj3kgX?= =?us-ascii?Q?0Z5D/5QxDreAe+ZadgI33ryjFtMxd3ABqrr7o7eddyLTaxBAzDfogT/RQbSF?= =?us-ascii?Q?MHl5IoIwSvsH0LgYJ6UN8bqv8gNyJiTY/zHbDvWHe6pdqcY9pVQJw7SnCFCX?= =?us-ascii?Q?8cH7eJlp+qSWNSpg1D5Ztw2iW87qCT+kP8s16SQLTt8SLsLH0IN7cGrrmPzw?= =?us-ascii?Q?sQHJL32O6q/egYahjVxU/rV/+bfXlyiHAJ1y2W5UxQrn2tlNVbOMT764b7Y5?= =?us-ascii?Q?rXTGTLKqhQDtZwsgkzTWflQ0OtK/mojUj5GOxnaVAk8935n6Upo8xwQJv9PO?= =?us-ascii?Q?WzgQkeJMZShOPrMZd9LE07h77KXgiac1H7NVh+k8vUzoFCZkAtaV0+o1rZpS?= =?us-ascii?Q?tD+LaVusDSTUkO+ICuRmQhrjUjOFbQ6wAo/WmcAVCbXCoby6FbglqQj/Pe5a?= =?us-ascii?Q?7m5/elD494j856I1/qK+EI+Tl+P8nlNFBGEUS/qAXHH1TrU2tHqIMzK2S7Ya?= =?us-ascii?Q?9Qh3MFQcMP2uWmNdxwnqkOqek4t4UTbZ6+6NLBwlY8QwtNoWW1UkHJrzhW1/?= =?us-ascii?Q?wkaZxYxiNsCOQit5ww+yhufN6JQ6MO01JqWMbXKW2EiBOKxMdeSC9g6b7jQy?= =?us-ascii?Q?q/jYHxuKZwJbVOYVz1kBswbyzAg9P2YXYER5TzJQJEvlSnZftxe7WbLP0sWU?= =?us-ascii?Q?gAYgA4JBupgCsBxX+VQb0oc4UM1KSzkxRIi+hYt1/JpyCegLfpuVmOJQimPb?= =?us-ascii?Q?tb8eCOrYDVgURZ93JxzueAtLA8sDjm0OcEX2m2NwokM33itClGJz7h7POOxs?= =?us-ascii?Q?Zu/5oDqAp97NKB8LzjXnQBPHOpM/cgnuR/r/cymmhi9EYnSopJrt7psqlwoH?= =?us-ascii?Q?/xp6MpktpjegKgiULZeJSmVDqdR8XRyIJIOuWn9DGFmI+G97u/2bBJFZuJeo?= =?us-ascii?Q?c6rhxMptbHlGk92i6ui5GM9I6KRboK4ZF19b8PsXuU9F/qtm03hBhktEJIFD?= =?us-ascii?Q?wzn0Z7tqCzwVM/SNd+VPY9ruqesw3lnr+r3ASGPsz+ZVBWi6L/oagaZQDC8H?= =?us-ascii?Q?1c49unaJHr13+plaumQ1z4lcOsPLwQVozR3efD8tUbjoc02UzMpMye7nMZVf?= =?us-ascii?Q?ZXCRqpONX+7kPsxT+nyYdO/e4OSpk?= X-Forefront-PRVS: 0325F6C77B X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(4630300001)(6009001)(39840400002)(39410400002)(39850400002)(39400400002)(39450400003)(39860400002)(110136004)(38730400002)(5003940100001)(48376002)(6506006)(36756003)(50226002)(47776003)(81166006)(8676002)(6512007)(3846002)(6116002)(2906002)(4326008)(50466002)(53936002)(305945005)(50986999)(6916009)(42186005)(189998001)(66066001)(7736002)(5660300001)(25786009)(6486002)(33646002)(6666003)(478600001)(86362001)(2351001); DIR:OUT; SFP:1101; SCL:1; SRVR:AM3PR07MB307; H:elxacz23q12.localdomain; FPR:; SPF:None; MLV:sfv; LANG:en; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; AM3PR07MB307; 23:5hksGIHlUSu67M9U4j2cbGOd+NzRqMhYk89jEPkXin?= =?us-ascii?Q?iRJ22v1uME80xv7Mh/StzclOxdWo0zzN5Y22n1b3rMuC0LaNS8yDscCnOOhi?= =?us-ascii?Q?10cR9kzhfKpuwIZ63HjKA//jwbs8IfqX4Fo2lGwz24FdNH7qL1G9V8RyyAYL?= =?us-ascii?Q?yD4F1sp8mnlprUf2KeAjD4eb/F0hbvL0aXEjpZe+ADIp6g1pZzW3WncdGDMf?= =?us-ascii?Q?PQza1DHUaLuS6GMoT4rx6VVj1RQvDWwz8dKjk94ZzGvmAdnfJ1fRRZMYQfFY?= =?us-ascii?Q?hdHbSQpUSA/4Q7vJh69urydCawESCw3jgdOFMrmyoujqP7ueeNiQzpm87x1u?= =?us-ascii?Q?djXY924ml53IqycFFuM4gaLasdJLfqHUYB3+hVWTw6EyrzwJ3XX0BEFmpk/e?= =?us-ascii?Q?VapKep8cx6lghzoeHM4z1WywLpzleIMSbOwivhcXXu7BZ6dSPEAlnqR9cA1t?= =?us-ascii?Q?xQ8onOIreSILuoB4HVJP/ZSebzPEUa+CKqjVz0piXFvl3v+coKfrY+s62Hsr?= =?us-ascii?Q?T96M8oPTt6JLWroW+xEknnSXs2ZBY8OUBR48lVPl900RiPCjL/7TDzYATwW4?= =?us-ascii?Q?bRJMIfUS+GorhoJTqk/7KhrsgbJtzlEWeaFVchIkGUd725brDp8msamp3dhC?= =?us-ascii?Q?ncsTEcpStT7VmPfFxhmsO3+hcYwx3xxdDQ09sirpI0KZimz4A8H/knIigkTi?= =?us-ascii?Q?WHupoAk1I3sNJ0IXv9qI41WO7OxaRbcPUR+4MfJoQPhsiQjEfTduaIoak3wx?= =?us-ascii?Q?vy+CsOMgiBpUlsa3BJe7A/lHdah6hiZ2V++SYG3WvRuFLEp7AO5VNrGHO6q6?= =?us-ascii?Q?VKJnmtFt393FyCKEk4v2ul6NCkMhpepNeLPGOVeEuCCoKd5fxXqgD19WNonc?= =?us-ascii?Q?7J3yulkwPJrYVxhfn/eUAWMN5v1EF3gQz/LJvgbBxQDPDHvBVGAP5Fy7hv5Y?= =?us-ascii?Q?Vbb7p5yTHGKowguFerPp7iKMUlIcEOfhQwpBMzN7LaoB7Ok9X5kA/nKzirDI?= =?us-ascii?Q?VxLxby06vOMGw9cyP+Sr9xH12Y/xRi3shKCkgqrYR4IA=3D=3D?= X-Microsoft-Exchange-Diagnostics: 1; AM3PR07MB307; 6:0R8+matbAYI9xtbNuK9EIg5UsY5lJDZpnCA6QBbJheugTavn3CJOjlbn3NDQ0NRRr3c+1ydeyImTyFPe8ILtO/XKRTVPgUKCRhKm8B3CnDb6Ppcf9w5+cZgMCPt8ZT02H4vS37pxO2P5OqIz3yO261Vr0Uv3LK6ZE56KtSeEnXg+SJ7A+lJFNA4aZqw3pAn+A1y7LoQisQrrC7WzYfN0zmCxE+5EqTcDibIkTgy43xvmER25Ks5L8/99jOqVt53syGfozz8XpOyMVFoaN2uTjxBOslTjVYR3bZnczoB56qAFgrM96qswHyDckquIePDOjS6BOeORVVNu4XwB6UpwcnLT+gq4yscGW87OL4521AvDKPXZNl0zPs8X6/Mh77cnKygrQvc7K9dR8UHgAanBJfklQ8Zc5C2H9v3Z/mTq+BAikwIOWLuS8VgQgSnpa8HV2t4oxizxGX2Sqf+c8fFOyfRKEG9DpXOW99oo8H+drBZCbLsYxXu8haumLq1s+ktpyqlf1JQFR2yHPkaycYrPOQ== X-Microsoft-Exchange-Diagnostics: 1; AM3PR07MB307; 5:MEbCfr0teOXaGIswscVvbqLe8C9b5QAz5E86QhXTUEY4eI0elHrRQXnGAUKKon/f1KFzCwBt7JMn0fPxqJFi+/pIE+bQA0GwswCujL8LBNAEOWujOZK8VFzyI8yL2kzxsJWwg1AkEC0rCySPhFmO1Q1tWHeRfgk7nG8H8SjneID3zobXi4uGUFiksji9iVi8fNrkQl/UdlOSNqIVw3Hj1nWie1xYHgcycfUji+CpC2maQUfNPx2e5zjG8WaI13PVmEiP/qX4WwPBKwG8QF0pmQFGi5b6DEsjaPp2GEMfrOkUoK8M4jqeYPVFT3kiA2RbuKljTPL6exB0a7Ik5WosjDQ24LFHjcKpYX4PsugyBZPzLAfiL2Iq2fjbfaUsoc6NcRI9Yp/UW7ScXDqwi9JHPt2wunl8UYPYac97U/P20JyY1HtYq6jqq5hTNdmsza1PGdcjq0sgE8BuTobGZUCBf9RR0oQOH5oVePvyumHB8HPNXiK/qs5W7/huok41cTZf; 24:HOsnLjWebpEOV6pS9kNU4y0Ydr13Lxj318bS87UmtC0rfCFyisiAyFx09gumy/Ibyi7iCZqFUen5yz7zlCpg7A8d7Sya1al336gfCqhraNM= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; AM3PR07MB307; 7:JGIEMNxrw7dnoPboDwrq40GBmLrDk7cHQGUj64pqZssh31WTy41vQ/YVfwWEYz9j9yJWGWeI8wYMGyhpAudiD0PDn0RL6M+mzeOtd800FXzgjb5O0uoerY4JTXxb1C1JUcO8lSue7JLMun4MKXIRU7WTrbmKrDjhqKuieSii1/3/1l7UMuWA5aEJzxEd3iyXdnZI0ciLeCpGDIgB6GfVa6h6tkZP7PzcGsptv9rFV4Q7bEUFpEuym8L1XmKCtTR4+w7Ji7+OGbYKrkPRAEuS8AJJ9VFePUZVoAmPHG3CZef9dWLkTqj8CKB6gtt+Ee68lISBJRlyS8u6Mpv2Avkvcg== X-MS-Exchange-CrossTenant-OriginalArrivalTime: 01 Jun 2017 19:34:17.5195 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM3PR07MB307 X-OriginatorOrg: ericsson.com X-IsSubscribed: yes From: Simon Marchi This is a small preparatory patch to factor out a snippet that appears twice. More kinds of breakpoints will need to be created based on bptype, so I think it's a good idea to centralize the instantiation of breakpoint objects. gdb/ChangeLog: * breakpoint.c (new_breakpoint_from_type): New function. (create_breakpoint_sal): Use new_breakpoint_from_type and unique_ptr. (create_breakpoint): Likewise. --- gdb/breakpoint.c | 52 ++++++++++++++++++++++------------------------------ 1 file changed, 22 insertions(+), 30 deletions(-) diff --git a/gdb/breakpoint.c b/gdb/breakpoint.c index 150b08c..d120290 100644 --- a/gdb/breakpoint.c +++ b/gdb/breakpoint.c @@ -1176,6 +1176,22 @@ is_tracepoint (const struct breakpoint *b) return is_tracepoint_type (b->type); } +/* Factory function to create an appropriate instance of breakpoint given + TYPE. */ + +static std::unique_ptr +new_breakpoint_from_type (bptype type) +{ + breakpoint *b; + + if (is_tracepoint_type (type)) + b = (breakpoint *) new tracepoint (); + else + b = new breakpoint (); + + return std::unique_ptr (b); +} + /* A helper function that validates that COMMANDS are valid for a breakpoint. This function will throw an exception if a problem is found. */ @@ -9310,22 +9326,9 @@ create_breakpoint_sal (struct gdbarch *gdbarch, int enabled, int internal, unsigned flags, int display_canonical) { - struct breakpoint *b; - struct cleanup *old_chain; + std::unique_ptr b = new_breakpoint_from_type (type); - if (is_tracepoint_type (type)) - { - struct tracepoint *t; - - t = new tracepoint (); - b = &t->base; - } - else - b = new breakpoint (); - - old_chain = make_cleanup (xfree, b); - - init_breakpoint_sal (b, gdbarch, + init_breakpoint_sal (b.get (), gdbarch, sals, std::move (location), filter, cond_string, extra_string, type, disposition, @@ -9333,9 +9336,8 @@ create_breakpoint_sal (struct gdbarch *gdbarch, ops, from_tty, enabled, internal, flags, display_canonical); - discard_cleanups (old_chain); - install_breakpoint (internal, b, 0); + install_breakpoint (internal, b.release (), 0); } /* Add SALS.nelts breakpoints to the breakpoint table. For each @@ -9804,19 +9806,9 @@ create_breakpoint (struct gdbarch *gdbarch, } else { - struct breakpoint *b; - - if (is_tracepoint_type (type_wanted)) - { - struct tracepoint *t; - - t = new tracepoint (); - b = &t->base; - } - else - b = new breakpoint (); + std::unique_ptr b = new_breakpoint_from_type (type_wanted); - init_raw_breakpoint_without_location (b, gdbarch, type_wanted, ops); + init_raw_breakpoint_without_location (b.get (), gdbarch, type_wanted, ops); b->location = copy_event_location (location); if (parse_extra) @@ -9848,7 +9840,7 @@ create_breakpoint (struct gdbarch *gdbarch, && type_wanted != bp_hardware_breakpoint) || thread != -1) b->pspace = current_program_space; - install_breakpoint (internal, b, 0); + install_breakpoint (internal, b.release (), 0); } if (VEC_length (linespec_sals, canonical.sals) > 1)