From patchwork Mon Nov 20 16:34:42 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Simon Marchi X-Patchwork-Id: 24385 Received: (qmail 104870 invoked by alias); 20 Nov 2017 16:35:31 -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 104828 invoked by uid 89); 20 Nov 2017 16:35:31 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-25.4 required=5.0 tests=AWL, BAYES_00, GIT_PATCH_0, GIT_PATCH_1, GIT_PATCH_2, GIT_PATCH_3, KB_WAM_FROM_NAME_SINGLEWORD autolearn=ham version=3.3.2 spammy=theyll, they'll, 1408 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, 20 Nov 2017 16:35:29 +0000 Received: from ESESSHC020.ericsson.se (Unknown_Domain [153.88.183.78]) by sessmg22.ericsson.net (Symantec Mail Security) with SMTP id 68.BF.19528.E44031A5; Mon, 20 Nov 2017 17:35:27 +0100 (CET) Received: from EUR02-VE1-obe.outbound.protection.outlook.com (153.88.183.145) by oa.msg.ericsson.com (153.88.183.78) with Microsoft SMTP Server (TLS) id 14.3.352.0; Mon, 20 Nov 2017 17:35:26 +0100 Received: from elxacz23q12.ca.am.ericsson.se (192.75.88.130) by AMSPR07MB310.eurprd07.prod.outlook.com (2a01:111:e400:802f::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.260.2; Mon, 20 Nov 2017 16:35:24 +0000 From: Simon Marchi To: CC: Simon Marchi Subject: [PATCH 18/19] Remove for_each_inferior Date: Mon, 20 Nov 2017 11:34:42 -0500 Message-ID: <1511195683-2055-19-git-send-email-simon.marchi@ericsson.com> In-Reply-To: <1511195683-2055-1-git-send-email-simon.marchi@ericsson.com> References: <1511195683-2055-1-git-send-email-simon.marchi@ericsson.com> MIME-Version: 1.0 X-ClientProxiedBy: CY4PR03CA0075.namprd03.prod.outlook.com (2603:10b6:910:4d::16) To AMSPR07MB310.eurprd07.prod.outlook.com (2a01:111:e400:802f::20) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: d2e9efca-dc38-4b21-6ca7-08d53034b3bc X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(22001)(4534020)(4602075)(4627115)(201703031133081)(201702281549075)(2017052603258); SRVR:AMSPR07MB310; X-Microsoft-Exchange-Diagnostics: 1; AMSPR07MB310; 3:W51kV46Yq6UuiVNf0lu1QFI9CB1D+URtm0WGulTsC3X6+1Ydg5cPJRSqak3hkv+GsKL/q6RV5YIrTlLc+tLpDq/e9O8fpFvAJuCdZ+sD08accuhKyQ3dic6vUkRjHjFB8ZBCsfJ4glPPqIfx2y6nVL5eI79tMJTFeEQB7ktuEaN6ZJ9c4oE2NUAw9u0niJYXvKXKxgCwuzgZzgOrm30WZH0Vpmdu+3l4lkVG87Ml+hPb+hCgZxJ1IqwiRk+hdJB8; 25:/pRHpmHYuqO7O8SDKwuQwkYUdSGytC2+gGDz5LSqSqqDuhNuYwTGUOB2T5HiYiqfMPn9tbJlFL7jwSu3HorTBaxdPdhgkDs3VAZYz5f9Tl4ZJjBu1xnI9q+xTXeC+Osg4IZXXFcmd62VZ5QWpTDN2h+z4ezbyWvKWfVi6CcDPaLBr5Ub1MJerG/nYLhf1Fs/IIyYaLwyVqxTNdBKYZ597ZqjJfEvKIgHZR/EDX/BZZcT0qJwWciTVVhlGXg2wVF19ORI6bB7PLQHdE9e4D/MMKEBnWhHdiX55tQ6uQPK6MZrkBNUIMZmmX4Vdauaz7+0C/4bmNHpJqTJNY8Sq+8PFMTLOg7SQW0e0bxFaOsVzYM=; 31:zgaDK9eQLITDLGvRXoIpkQe1EbWQ44U2mFcjUqs5KNMXHVlfVzAEqnJsDI9p9AWZEtzwca3YTA/qP+zVQ+4xDZQEQ8iuWaM5ta6IeqAl321Wg8zh+1rcCJJId3JHroP0Nh4UdQmnLgS1ODOCPmZsosZLSwiCcuDAnOyFazGA9CMu3pEEtrLEzsCnKPvTEYRH66SsmZOe+ubOlwDzs1iXlzIuK0cjf0eHD4qC8eLE+CI= X-MS-TrafficTypeDiagnostic: AMSPR07MB310: X-Microsoft-Exchange-Diagnostics: 1; AMSPR07MB310; 20:hNvYwheSDEl+xkRNPmFub6unmkbDOS/mPVjU0GgEJz5SzV1RLKX1PnqOrL5sIK2p4FeWXeXIEP9q/9VCKxsH2+Y79Jm80foNY56PGcGR4e2wDR27EL8FZseemIPg+Wz9+D+0mco7PywHgoibCPSLxtm6+s08L2yxb47Y9kaAsPivhgvUROncsyOyAJkZyg0d2v2lRzjfHYOW3zhUZFoO+cArBjfEeVFeuFoVlNt071xXeOQkli1+H5KT0mNNp2jLdDZpDSCqV9/nt/+vkG0IUv40MbTwjUPXEQ6J7Gm4QX92MbErDcci8i1IlHMhJZpHXFJyRD61FTaj/6xKGcUmfXPiwNn7jm3ijYX7ljKC/X4J2gzW3P365azI8PIIhOvDmk3w2qln0AbjNDWYc++3sRJ99hrYiwMQyrLjfdtUtQWSay56q9tHWRRVR6mmNqIeDb6b2T1GufFAJnFgOR7i8L1vtIp2jUVpnDpknIfs/i5o2Zh6VOkQ/sBD1owos4Ji; 4:2Rr4WJSQHnx5dvwc00xTHYncI8AfNRoFbLxOVEg+5nJWR+8pUqVY3LWPlH+h21FvD6bEfkk1YSHUTU5b4nFMk0cPXoJwaxn/Ghem9qnFvoO7GnoiYR6qtRl6Z0wLc4IalBueVu8JU4gZ1xOR3L548dwpLo88IJ79V1sNqg/OwxJhpm/+JDurfgXGnhJ/V9fgMnelCzM9bjtpZSAcYoUukrrWbgI7WS8aN9HpH0c5N0OUnIBcx5G6zAw89Kc7yl/UpBFqeo9SRxWHOTI6Iu0g7Eqs2NqJSYs1C92UrsduLkYNsXaS7SIrLcrJrqZEneZ2 X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(211171220733660); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(100000700101)(100105000095)(100000701101)(100105300095)(100000702101)(100105100095)(6040450)(2401047)(5005006)(8121501046)(93006095)(93001095)(3002001)(100000703101)(100105400095)(10201501046)(3231022)(6041248)(20161123555025)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123564025)(20161123558100)(20161123560025)(20161123562025)(6072148)(201708071742011)(100000704101)(100105200095)(100000705101)(100105500095); SRVR:AMSPR07MB310; BCL:0; PCL:0; RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095); SRVR:AMSPR07MB310; X-Forefront-PRVS: 04976078F0 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(6009001)(346002)(376002)(39860400002)(199003)(189002)(3846002)(97736004)(66066001)(5003940100001)(33646002)(16526018)(50986999)(76176999)(6666003)(81156014)(305945005)(7736002)(81166006)(6512007)(5660300001)(316002)(6506006)(6486002)(16586007)(6916009)(2950100002)(101416001)(8676002)(2351001)(2906002)(105586002)(36756003)(47776003)(86362001)(50466002)(48376002)(50226002)(8936002)(106356001)(68736007)(2361001)(53936002)(478600001)(25786009)(6116002)(4326008)(189998001)(5890100001); DIR:OUT; SFP:1101; SCL:1; SRVR:AMSPR07MB310; H:elxacz23q12.ca.am.ericsson.se; FPR:; SPF:None; PTR:InfoNoRecords; A:1; MX:1; LANG:en; Received-SPF: None (protection.outlook.com: ericsson.com does not designate permitted sender hosts) Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=simon.marchi@ericsson.com; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; AMSPR07MB310; 23:RjdqMFVie9XACDGiJnYqbqXBjc1hkZcfGU/w+yThWs?= =?us-ascii?Q?ZlECA7w4zo3Xr+srQ9W+IgnF9JPUVmtEHZNJF1SvH4DhlkMzaz0VZCqDUDnN?= =?us-ascii?Q?8JN8zILHtRQrTv7iTVzOkTXUTHDVvImQILZTbZXyFfGDg8Hfuu6tCL92HjGZ?= =?us-ascii?Q?3D7QbUoR2Lye7doFPaoOJ6CPcl1w1vlXvYRS8AyHLBqEuq+PurAX3CbiLHyG?= =?us-ascii?Q?hKOiCXqra6NRWLyVytyn5jJGa8C11+w3XmfYgeX256/4CjfE8+A+sD5Pl1xO?= =?us-ascii?Q?cv0dHU47N0i1y9JwN5moRWHwXWc1/vCBEdZaW8T2NcyHVwSPrJnMgEusXTIH?= =?us-ascii?Q?viD+L8IJY45K4cK3Ra/EHLyrT2W9PNekRbMuxulzjrMmNnOvIz6ygHy/YV11?= =?us-ascii?Q?k/gVNLDsADYZJT2ML1GOj/JoakWAEp3M7sd7zQhHCQw2A3AKSvej3Y3NmhIo?= =?us-ascii?Q?Q64bKIlGUhzJ5VGQk6rk9Pk2wPTi6P8M/lpwhu/iyCZupeMcwhYV94zJ5hC5?= =?us-ascii?Q?ciRsuFa9+x2Y8hdbfNXGYE+wgJr+TfkDgBuGos5uXcT9IssV5258BGJy0hgq?= =?us-ascii?Q?bbe1mUJlsnYL2dS6pphe3oCcG1HCrreUr0yo2eqM5/UDBomkJT5MQFboOcSe?= =?us-ascii?Q?r42yK5c1zGoXVPdWiaQ37IhJ6cJQwPcLZcD1BGq+6ElJs0lIfDnYI1nTTSMr?= =?us-ascii?Q?1aLUCnGHwmoCNl+yXtYwDddliExzpuy3DoLZeslcaHsdb4WbcJlaJiDOvjbu?= =?us-ascii?Q?KZi3xsjUvQzaeWv2h+ImR1tIvwVFcKd0/6Q+q/vVB92A9Ki3Ygd6kkqFVtmG?= =?us-ascii?Q?AquqqTyID4b/XUVtNYMTmP+0QlmcFXQ3Bfgsi2BytmpeMncCxe0BSYzPM3uk?= =?us-ascii?Q?4io7iA8BZfTfJ+QxZdQ7aZ/f0OlCShfzLKpzNnPzJ8z4G0XaIyKBNtt3DGl3?= =?us-ascii?Q?SDui9POzFkBI1sY2pUifnETeppOgGEghhnoIsXHle8A1qhOxg/NTVaevDa3F?= =?us-ascii?Q?m5qKmhJeGrPgVS/PFLqsqucLQDfPZsiPsus9o4zgIFB0h86cNsJgpO2IK06Y?= =?us-ascii?Q?9vCGOwyaGYELD3dlbTOKuW4R78GKhu/Sdp81bWPFOvADeOGC9nipkRF7nsYG?= =?us-ascii?Q?VWmtpK0R8reJh7YvE+VI3nItjgdFf5Ra9o5E1n5T6l/8cNOoH/0A=3D=3D?= X-Microsoft-Exchange-Diagnostics: 1; AMSPR07MB310; 6:A/mKW5kXQTpRCN1sB6FCauJX30JVSYnzxKNJWByNZ33y20sAp7E2VZPkI45DB+v6xX51elD3YyXFCZRiT1VW54kf+raZC7U2B+UoaV3ybFkD68NRTpdQATTrYs0pgizYdKWahVciMTwnUSIEC4/g/+GVnoI5le+UnGUXkwMWyBYBCFsYc9ys2t9puzEvmpZUb4lixlL4ZBEsfB9ZAM4xwY1d3eRBuFfShGZoDraNr+ADulTDoRp3isrfyBbCQ9IQyn8ZMbi5hlh5dFI954j4k0konkxa7kd1bl/Ei8MBkO+B/Qg1LFPmehqMVhsy83DhdEsvb6Q8at/qOdYWx8dAnZI+j7H1tWabzJSNrD+3HrA=; 5:nlDtX9DcRetbaqAX9m9tJQB3dLk+q0ZbJXsR0UkyTGrjWv7T0je3Sy8WvogftbGDzszlzOHrBbPfurOA2rCuJJLrA1fs420kvM4RN+1kah5ZNCI+KI2fe+v+0unduT4yhk+xn28wWAUYS2UNhvXh7Tl14iFjhghKhU09eGtJblY=; 24:tDESvs/rWNFsU/cOhq4Cuy/lFpk/22brBnGUdPgjQ2PJzDyYvmPzceRvsO8syDxzOvXnVS+A+xz9qdvf1FiCmT5NS+z1OQ2sJf9QOTg7Y9Q=; 7:WcdwhRunsQQgyXHkVsBboGz25zQX+zrylBteiEVLd8qZ5bpwySF0Z94ki/uVOmDffWsAl6MkIupJxsacgkW8kjYSnMgDuSVTZ5jHfGsAq4azX7/8Pj7gHpWfICUVjqtM9fc0heBxGhYrqcgPsB0+ztVp0ys+eelWkBtTH0wozl7egLaUmotI0wAN+Y6TsVFmf7HHTOX1PsVjd6/htNAuCtvcrkk7dyG1iV7yYziUS1S5OppPNABJipSlgdZoPhmB SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-MS-Exchange-CrossTenant-OriginalArrivalTime: 20 Nov 2017 16:35:24.6414 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: d2e9efca-dc38-4b21-6ca7-08d53034b3bc X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 92e84ceb-fbfd-47ab-be52-080c6b87953f X-MS-Exchange-Transport-CrossTenantHeadersStamped: AMSPR07MB310 X-OriginatorOrg: ericsson.com X-IsSubscribed: yes From: Simon Marchi This patch removes for_each_inferior, replacing all its usages with for_each_thread. * inferiors.c (for_each_inferior): Remove. (clear_inferiors): Use for_each_thread. * inferiors.h (for_each_inferior): Remove. * linux-low.c (linux_wait_for_event_filtered): Use for_each_thread. (linux_stabilize_threads): Likewise. * regcache.c (regcache_release): Likewise. * server.c (gdb_wants_all_threads_stopped): Likewise. (clear_pending_status_callback): Remove. (handle_status): Use for_each_thread. (captured_main): Likewise. * win32-low.c (child_init_thread_list): Likewise. (win32_clear_inferiors): Likewise. (fake_breakpoint_event): Likewise. --- gdb/gdbserver/inferiors.c | 13 +------------ gdb/gdbserver/inferiors.h | 2 -- gdb/gdbserver/linux-low.c | 4 ++-- gdb/gdbserver/regcache.c | 2 +- gdb/gdbserver/server.c | 23 ++++++++--------------- gdb/gdbserver/win32-low.c | 6 +++--- 6 files changed, 15 insertions(+), 35 deletions(-) diff --git a/gdb/gdbserver/inferiors.c b/gdb/gdbserver/inferiors.c index 47cc13a..093080d 100644 --- a/gdb/gdbserver/inferiors.c +++ b/gdb/gdbserver/inferiors.c @@ -31,17 +31,6 @@ struct thread_info *current_thread; static const char *current_inferior_cwd = NULL; void -for_each_inferior (std::list *thread_list, - void (*action) (thread_info *)) -{ - gdb_assert (thread_list == &all_threads); - - for_each_thread ([&] (thread_info *thread) { - action (thread); - }); -} - -void for_each_inferior_with_data (std::list *thread_list, void (*action) (thread_info *, void *), void *data) @@ -151,7 +140,7 @@ set_thread_regcache_data (struct thread_info *thread, struct regcache *data) void clear_inferiors (void) { - for_each_inferior (&all_threads, free_one_thread); + for_each_thread (free_one_thread); all_threads.clear (); clear_dlls (); diff --git a/gdb/gdbserver/inferiors.h b/gdb/gdbserver/inferiors.h index 2aab846..030d9c3 100644 --- a/gdb/gdbserver/inferiors.h +++ b/gdb/gdbserver/inferiors.h @@ -140,8 +140,6 @@ int have_attached_inferiors_p (void); void clear_inferiors (void); -void for_each_inferior (std::list *thread_list, - void (*action) (thread_info *)); void for_each_inferior_with_data (std::list *thread_list, void (*action) (thread_info *, void *), void *data); diff --git a/gdb/gdbserver/linux-low.c b/gdb/gdbserver/linux-low.c index 630340f..2ff14d1 100644 --- a/gdb/gdbserver/linux-low.c +++ b/gdb/gdbserver/linux-low.c @@ -2735,7 +2735,7 @@ linux_wait_for_event_filtered (ptid_t wait_ptid, ptid_t filter_ptid, /* Now that we've pulled all events out of the kernel, resume LWPs that don't have an interesting event to report. */ if (stopping_threads == NOT_STOPPING_THREADS) - for_each_inferior (&all_threads, resume_stopped_resumed_lwps); + for_each_thread (resume_stopped_resumed_lwps); /* ... and find an LWP with a status to report to the core, if any. */ @@ -2971,7 +2971,7 @@ linux_stabilize_threads (void) stabilizing_threads = 1; /* Kick 'em all. */ - for_each_inferior (&all_threads, move_out_of_jump_pad_callback); + for_each_thread (move_out_of_jump_pad_callback); /* Loop until all are stopped out of the jump pads. */ while (find_thread (lwp_running) != NULL) diff --git a/gdb/gdbserver/regcache.c b/gdb/gdbserver/regcache.c index 5f71523..6a27042 100644 --- a/gdb/gdbserver/regcache.c +++ b/gdb/gdbserver/regcache.c @@ -281,7 +281,7 @@ void regcache_release (void) { /* Flush and release all pre-existing register caches. */ - for_each_inferior (&all_threads, free_register_cache_thread); + for_each_thread (free_register_cache_thread); } #endif diff --git a/gdb/gdbserver/server.c b/gdb/gdbserver/server.c index 26c4a01..cfc4a12 100644 --- a/gdb/gdbserver/server.c +++ b/gdb/gdbserver/server.c @@ -3216,7 +3216,7 @@ myresume (char *own_buf, int step, int sig) resume (resume_info, n); } -/* Callback for for_each_inferior. Make a new stop reply for each +/* Callback for for_each_thread. Make a new stop reply for each stopped thread. */ static void @@ -3281,19 +3281,10 @@ gdb_wants_thread_stopped (thread_info *thread) static void gdb_wants_all_threads_stopped (void) { - for_each_inferior (&all_threads, gdb_wants_thread_stopped); + for_each_thread (gdb_wants_thread_stopped); } -/* Callback for for_each_inferior. Clear the thread's pending status - flag. */ - -static void -clear_pending_status_callback (thread_info *thread) -{ - thread->status_pending_p = 0; -} - -/* Callback for for_each_inferior. If the thread is stopped with an +/* Callback for for_each_thread. If the thread is stopped with an interesting event, mark it as having a pending event. */ static void @@ -3348,7 +3339,7 @@ handle_status (char *own_buf) reporting now pending. They'll be reported the next time the threads are resumed. Start by marking all interesting events as pending. */ - for_each_inferior (&all_threads, set_pending_status_callback); + for_each_thread (set_pending_status_callback); /* Prefer the last thread that reported an event to GDB (even if that was a GDB_SIGNAL_TRAP). */ @@ -3869,8 +3860,10 @@ captured_main (int argc, char *argv[]) (by the same GDB instance or another) will refresh all its state from scratch. */ discard_queued_stop_replies (minus_one_ptid); - for_each_inferior (&all_threads, - clear_pending_status_callback); + for_each_thread ([] (thread_info *thread) + { + thread->status_pending_p = 0; + }); if (tracing) { diff --git a/gdb/gdbserver/win32-low.c b/gdb/gdbserver/win32-low.c index fecab84..be671a6 100644 --- a/gdb/gdbserver/win32-low.c +++ b/gdb/gdbserver/win32-low.c @@ -339,7 +339,7 @@ child_xfer_memory (CORE_ADDR memaddr, char *our, int len, static void child_init_thread_list (void) { - for_each_inferior (&all_threads, delete_thread_info); + for_each_thread (delete_thread_info); } /* Zero during the child initialization phase, and nonzero otherwise. */ @@ -793,7 +793,7 @@ win32_clear_inferiors (void) if (current_process_handle != NULL) CloseHandle (current_process_handle); - for_each_inferior (&all_threads, delete_thread_info); + for_each_thread (delete_thread_info); clear_inferiors (); } @@ -1362,7 +1362,7 @@ fake_breakpoint_event (void) current_event.u.Exception.ExceptionRecord.ExceptionCode = EXCEPTION_BREAKPOINT; - for_each_inferior (&all_threads, suspend_one_thread); + for_each_thread (suspend_one_thread); } #ifdef _WIN32_WCE