From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 81666 invoked by alias); 21 Mar 2017 15:39:10 -0000 Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org Received: (qmail 81458 invoked by uid 89); 21 Mar 2017 15:39:09 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-24.8 required=5.0 tests=AWL,BAYES_00,GIT_PATCH_0,GIT_PATCH_1,GIT_PATCH_2,GIT_PATCH_3 autolearn=ham version=3.3.2 spammy= X-HELO: sesbmg23.ericsson.net Received: from sesbmg23.ericsson.net (HELO sesbmg23.ericsson.net) (193.180.251.37) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Tue, 21 Mar 2017 15:39:03 +0000 Received: from ESESSHC013.ericsson.se (Unknown_Domain [153.88.183.57]) by (Symantec Mail Security) with SMTP id C1.EE.11640.41941D85; Tue, 21 Mar 2017 16:39:01 +0100 (CET) Received: from EUR01-HE1-obe.outbound.protection.outlook.com (153.88.183.145) by oa.msg.ericsson.com (153.88.183.57) with Microsoft SMTP Server (TLS) id 14.3.319.2; Tue, 21 Mar 2017 16:38:59 +0100 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 AM4PR07MB1716.eurprd07.prod.outlook.com (10.166.133.24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.991.4; Tue, 21 Mar 2017 15:38:57 +0000 From: Simon Marchi To: CC: Simon Marchi Subject: [pushed] windows: Use ptid from regcache in register fetch/store Date: Tue, 21 Mar 2017 15:39:00 -0000 Message-ID: <20170321153841.11379-1-simon.marchi@ericsson.com> In-Reply-To: References: MIME-Version: 1.0 Content-Type: text/plain X-ClientProxiedBy: CY4PR2201CA0016.namprd22.prod.outlook.com (10.171.208.154) To AM4PR07MB1716.eurprd07.prod.outlook.com (10.166.133.24) X-MS-Office365-Filtering-Correlation-Id: dea4eb70-a93c-40b1-cf8d-08d470706406 X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:(22001);SRVR:AM4PR07MB1716; X-Microsoft-Exchange-Diagnostics: 1;AM4PR07MB1716;3:WDYGLoURh6Pj/a/G3ih0HM/dTFpkfA/ixmVv0vCDaBu8TVJ5Wpye5W/QpLpWJHD+qibzf8JqKFs2ZXwNJhSpz5HJe0TSCdiAx/kpyeZdAh6C4kJCwkz+M3r7NJkDt6Vyl0Epe+dLEGbsOHviLhC6GcnfvV0waQNPu5OwdHDH3BLztU3K8Ons6xkVrFDockXrhMYqfOPO7HKHDK/jJPYFRsN8KWaa9b2QFKqT3S2GhC5HS8Z1RXocF3IEoEcLUT4Ec3OXCWmJnBYw0HuQvw8cng==;25:UDvSsFsQCyu3BbJmheMv/5SiIumc0CY0P09Gq/kE/cK7hzRpcap2sSgcCpqQaFmf2g4yNZtWd2ywvnrwtSTXY026cQ3wfJeuHb1bLFpUrkxLIbAbp2xRvWBo/SjK7O9ESHtN4/wrUHrWRDR0Rgwz9rcfJku+fEKAqnmGBtCAbqdb2Fjw94rrvoD8ucdoHQKFPvxrHfsH+CtVIJuK0tqdeKmzH60PXWvGG0daU6/3MG4GGJT2Aku6NUlyIvbBCC7yeSRN+ZqrcN4cD4Q8Ualj5voKY8zLCGRnD5bgX6tzuVOaxlqYrJC/StjA2DkFS6378fE7SvHWWtwFdA0gY6gAZYb5yFqGquX0/AblWxaEld+KYfIRK12Eq+ykdG62iMuNYLsunOFRptT1CcWc/tIqe8c+rgFbAtxn6rh8zybuxyr/sSLDOT5Iuey73uhy9UIhxOP4aBE94zcYeePCWItKGw== X-Microsoft-Exchange-Diagnostics: 1;AM4PR07MB1716;31:FhYY2jJuYXg3a5OJm/9MWOyNWPTMqlU0qDdksfR7AW5+N3aEdh9Hg2ZL9uiAngGf+kdZPc5Qev1V/KL4HG4mu3v/fdSWXjSCthvbSbQHg82lRQqiL02oM+9EGDzbKjWG2CK7NlQYE+r/W09xZvbSTAU6UnP7fvJCrgDddOdCGlBxFSIqrwavfx3qj/v5Opk09np4OJVZOeDwcdDEAMKP1Yj0NVmpA4YTi/UPc3ySuhs=;20:MsuyZNt6x9zYspmohX1TQd0y8p1FX6nDa8kmMTyzbldsvo8PkXlXKxqWADgUHSxoZEPKOTLo6vF8Ef7P9vi0/wwE3uM5Ym6Tr2pvbRoig8LsuqKvP9gUB5MD8j+8FeGRuICpnNdGS8ObCnTBxqxYckb6TQrlV7WJ+vN88s4M1/G5jn/TIC9ppJmLxSdxC2UQjJrgM/34E7WrhFlRmpQEfhUCvmJKKJGu6lYaX0nLnQx+Cfd0bb7mCjfRLNV3UwBjT94cBPgLWZxGgV8MvZ8WXMpTHvJ2VMHg2fFt/aQQOdioD9FDDpDgiuM0uewsxKf2tcbAqn4e8xYnkqkIjZV/m32NnQVQu1+GMkObUURT1+uA6KvSAgzheUUDlZ0KlQAFOTDpPntxFtYy5afjZ1N9O7C9fCc4XqcG0zDrMCuN4dquc1FauNdJEAHoQQIJU+FqWG864AP8gHRPSxhwiFupF/tfmldDYh6F4F2Hf7DzO+OqL/2xfMRFUHQbl4JlJKsn X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(37575265505322); X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(6040375)(601004)(2401047)(8121501046)(5005006)(3002001)(10201501046)(6041248)(20161123558025)(20161123555025)(20161123564025)(20161123560025)(20161123562025)(6072148);SRVR:AM4PR07MB1716;BCL:0;PCL:0;RULEID:;SRVR:AM4PR07MB1716; X-Microsoft-Exchange-Diagnostics: 1;AM4PR07MB1716;4:ruUMjXzOajGr2W4z7wuxCOyHPWI3bZ+/edVwySj2yWFXrttQ327awMaoeHkRkv89vSdYtMl1m+P5ttuh35f98h898Uf81AdyrHvr0cCv9/ZJVxUQNZOmFvHbFHA2pI/C9nkXPl+c7NG/mAfr3SXUNHCL0tAOVrx65QGz1xHAzzDWvyabRvL0egRiiNbxcU1o7qfzYeVEHpDivhf1/TwIeJbAwDuObCNvfFePaMBfBQX216Y0CyLaeSn6GjsWV0nlAV2ifrxWbeKNXg+A9Ae4vT2Ho0SFRspsJL835ZaDhQ0KbadkYjDwOwtBaTi7CABX77FCqs8Qh3XJcUsmekqKL7r21sbtUY1SvMkUylunvlShB9iIvKS5PaRcxh4rg/TNrtf9InVHiBY7h3Y4YazNUKl7oc6FtURSQAoXO8pexcWu3eBQdSDleqBPX+jJPVdMFKyfvDFkGtjJT8z+dZGvDdkYWNum7JmIzsqk74UgGMMK+GANZ7wkZHBCHcwRvPda+L0cYDbtJkCRz2S4MTLgAlQIr03fQ33l9/5i4a1fsGVxee5LoDE5ZEpUMD2NIdE5sGIHnroYj2PwDdeucsbTTv8Gl5U2v0dwsi/iraCZ33QPbV9yQZVkTF/WrE+2MdY5kOJ99kKyxNqPhS92WjoOMQ== X-Forefront-PRVS: 02530BD3AA X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10009020)(4630300001)(6009001)(39450400003)(377424004)(54534003)(4326008)(38730400002)(107886003)(110136004)(305945005)(7736002)(6116002)(3846002)(5003940100001)(2906002)(2351001)(50466002)(6512007)(5660300001)(50226002)(81166006)(76176999)(189998001)(50986999)(6506006)(6486002)(25786008)(48376002)(36756003)(53936002)(33646002)(1076002)(8676002)(66066001)(47776003)(42186005)(2950100002)(6916009)(6666003)(575784001)(86362001);DIR:OUT;SFP:1101;SCL:1;SRVR:AM4PR07MB1716;H:elxcz23q12-y4.ca.am.ericsson.se;FPR:;SPF:None;MLV:sfv;LANG:en; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1;AM4PR07MB1716;23:x5bEhzvMQ4aVSCCSggiVaKgj3F2SaC9nEIX9yhuLJ?= =?us-ascii?Q?BCbfVFXNagNHfxE/KD+Z0zJwXNNIhEE4S0AcuHNQpkLOSbo53j/t5RBOYP4F?= =?us-ascii?Q?iOWFFJ1P3KX3PZ5FQf/E8tmp8FOTOxVpHDPAqc0nR1Oknxj0oVZaHu5CVcDs?= =?us-ascii?Q?9t8AZtqv+QThGmHczMvF/vKVeCicqk+voxvrVlVS0jwb3B89Ban4wGBnsqvL?= =?us-ascii?Q?l2O44Y7VOjUGUnXmw5PUxrJA90tkBrwdwOt+tcXBZ8ZBeNXDY4WI6fE+SJsp?= =?us-ascii?Q?XFGOp/jLLDkXdTo1M7/h5jbMkBV2gSSGPJWEnIzpl4Fh9hZsw7YzPQ52oR1y?= =?us-ascii?Q?/M0JRiXMa3CFnqcHb/69gY6iohsWGvcMj4rjAFZ3FxsDjEBbeLcUDQyQR0v+?= =?us-ascii?Q?ud8GCgRVGECZD3TWiiOXeGxFIlUGlQkx2hrWKiMc1kfmdKxHbE2ybOx6rKNw?= =?us-ascii?Q?81Ps/OXVKRNC+wZTFCkPls8QhuWZWJS9eL+XlnPrmpCpUXlRto5u5XoQyW9S?= =?us-ascii?Q?fPHCmgpYldDZvUaYdUkUHWKEJr5ByDdRsTeyJc5o9F3YPn2lOAm5PHlkvaMk?= =?us-ascii?Q?L2Yc2pqa73tEJefeC69BkwpZOJ7XQm7DlsyYxReRneeGzs1AKTNlRVTKdg5N?= =?us-ascii?Q?VE6sRkWnjGzR2lM0/BFG+cNGKSqmTg2H5fN+euWy41x+D/xAX3TkuaM44Pjf?= =?us-ascii?Q?MfWRB6sHrVZHSefIZV52/G2HSk/Ug+RhU1zi2a+eOOrHB65etM58GOrAyKuk?= =?us-ascii?Q?ygQk55Qk4lOOeWt+lkG4iMsX1MFJTIP4xt9y34kOB5wDU/DQb3jbEvvoV9wQ?= =?us-ascii?Q?9X1yh1k2iKQEFrDER1EvW8wAGHPMNUdvFAigi9hHjoF7R0JwVsrOosBrcM2j?= =?us-ascii?Q?Kcz1YP/rIbqNzOgFOQ85f3VNcK9LN+c5vnhCJ7BqMSx9jr75pun/8W9QelaB?= =?us-ascii?Q?gENaxMT9U2YgVwnYVupiKJqtST0H1bbJ3m5lh7m85svgmZvmGevudAKjM0QG?= =?us-ascii?Q?OdhbR4jGgxhXvbuUI75YlbBQ12k5JLY38fOxLL7QwCFXA=3D=3D?= X-Microsoft-Exchange-Diagnostics: 1;AM4PR07MB1716;6:AD2W3yFKFnuUnovYlh4Nz/O4wP6Ra0L7UtR1pnBvP2XPOBODIXCl2WO+7WyJOqdrDYC4JoXBi8pwory5ubf8qwR5IwZqrLG8TpYvAqW9hP+TAMcWkhSkNwx/1OXtSYnLjCRkc0ir8e5KQSKOHcLa+NnP0f+a82foQsrQcTQV0HEsduVkFlVBFiCZdIvP54FrYZZ9W88qyXNGkmMLCrzuIuw6dcatxKldP8NHzcSuRC/Lvqwoo/Qywf6jugqhNcXYnywLrBl+eyLBV1X+BiNgqJd4WR4oOZWZ+H4aqf2XjbcADonCsfmR1lq9PKspNZbUPSmOx4dQWGrMu3IzHBLReTTcaYdm6PBpPlicqYlFRIQIgyFVeCa/HQtP7j3BdbpBU30xNcWq8Sp2VbieCsZ1fA==;5:3quyXo3au5FGTNDKC+RgUv7iaxwjRQsZsUY45UlAnPJbd3llR6QHyIqabjmKMiK14y2qqotx7BdGoap7O2FiM8yZ01ldJJnrQy59YytnpaLX4u6ZInFD5MAtk7LFJrshfT8McYZ7loAc7zU/3eY6Sg==;24:RQCYg2JC6nwPwgoNsZSaz2t9jMY2ehkmpP8RTycGlznLcTjADrqDerRFtNt82EWldj8dSIqJB/pynxMeSszN7xKodTCFOd0SZYBox3fa+40= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1;AM4PR07MB1716;7:g8fI6OoY2fO4IS2q3lEJbrAyiRilD5s2iMQy2GT8rs+QIJj782DvLktKX7SHrM50jmhw06IJzOjUfbnc9qU0/cGrFKmJIkiExn6EFARhCtj1BFF3W8zcsXrm4w6LrYaaq4IED1vuTVm+355xHwDPGv1JB5ak4sfVNvo36MVSA4erVrq5iGP0pSu+p7upT20uI9576idjQLdOlT1wuJMj7G8tBydz/c5VqMe8zrlvdg4de7HcwweR8cJlqT9qTCg43muurid995SgjaefFVfq6qgUH2q9Pm/Nf0INVgvgaiGr+7Zr+9MJsErLq75PzN+HJNDOJil8VnU8Di9FQgkvfg== X-MS-Exchange-CrossTenant-OriginalArrivalTime: 21 Mar 2017 15:38:57.5688 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM4PR07MB1716 X-OriginatorOrg: ericsson.com X-IsSubscribed: yes X-SW-Source: 2017-03/txt/msg00375.txt.bz2 Use the ptid from the regcache so we don't depend on the current value of the inferior_ptid global. Also, change how the current thread is passed to sub-functions. The windows_fetch_inferior_registers function sets current_thread then calls do_windows_fetch_inferior_registers, which reads current_thread. This very much looks like passing a parameter through a global variable. I think it would be more straightforward to pass the thread as a parameter. gdb/ChangeLog: * windows-nat.c (do_windows_fetch_inferior_registers): Add windows_thread_info parameter and use it instead of current_thread. (windows_fetch_inferior_registers): Don't set current_thread, pass the thread to do_windows_fetch_inferior_registers. Use ptid from regcache instead of inferior_ptid. (do_windows_store_inferior_registers): Add windows_thread_info parameter and use it instead of current_thread. (windows_store_inferior_registers): Don't set current_thread, pass the thread to do_windows_store_inferior_registers. Use ptid from regcache instead of inferior_ptid. --- gdb/ChangeLog | 14 ++++++++++++++ gdb/windows-nat.c | 52 ++++++++++++++++++++++++++-------------------------- 2 files changed, 40 insertions(+), 26 deletions(-) diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 537e5beabc..aebfb75583 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,5 +1,19 @@ 2017-03-21 Simon Marchi + * windows-nat.c (do_windows_fetch_inferior_registers): Add + windows_thread_info parameter and use it instead of + current_thread. + (windows_fetch_inferior_registers): Don't set current_thread, + pass the thread to do_windows_fetch_inferior_registers. Use + ptid from regcache instead of inferior_ptid. + (do_windows_store_inferior_registers): Add windows_thread_info + parameter and use it instead of current_thread. + (windows_store_inferior_registers): Don't set current_thread, + pass the thread to do_windows_store_inferior_registers. Use + ptid from regcache instead of inferior_ptid. + +2017-03-21 Simon Marchi + * ser-mingw.c (ser_windows_raw): Remove reference to struct serial::current_timeout. diff --git a/gdb/windows-nat.c b/gdb/windows-nat.c index 9cc755f0d4..76313db989 100644 --- a/gdb/windows-nat.c +++ b/gdb/windows-nat.c @@ -460,18 +460,15 @@ windows_delete_thread (ptid_t ptid, DWORD exit_code) } static void -do_windows_fetch_inferior_registers (struct regcache *regcache, int r) +do_windows_fetch_inferior_registers (struct regcache *regcache, + windows_thread_info *th, int r) { - char *context_offset = ((char *) ¤t_thread->context) + mappings[r]; + char *context_offset = ((char *) &th->context) + mappings[r]; struct gdbarch *gdbarch = get_regcache_arch (regcache); struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch); long l; - if (!current_thread) - return; /* Windows sometimes uses a non-existent thread id in its - events. */ - - if (current_thread->reload_context) + if (th->reload_context) { #ifdef __CYGWIN__ if (have_saved_context) @@ -480,14 +477,13 @@ do_windows_fetch_inferior_registers (struct regcache *regcache, int r) cygwin has informed us that we should consider the signal to have occurred at another location which is stored in "saved_context. */ - memcpy (¤t_thread->context, &saved_context, + memcpy (&th->context, &saved_context, __COPY_CONTEXT_SIZE); have_saved_context = 0; } else #endif { - windows_thread_info *th = current_thread; th->context.ContextFlags = CONTEXT_DEBUGGER_DR; CHECK (GetThreadContext (th->h, &th->context)); /* Copy dr values from that thread. @@ -503,7 +499,7 @@ do_windows_fetch_inferior_registers (struct regcache *regcache, int r) dr[7] = th->context.Dr7; } } - current_thread->reload_context = 0; + th->reload_context = 0; } if (r == I387_FISEG_REGNUM (tdep)) @@ -529,7 +525,7 @@ do_windows_fetch_inferior_registers (struct regcache *regcache, int r) else { for (r = 0; r < gdbarch_num_regs (gdbarch); r++) - do_windows_fetch_inferior_registers (regcache, r); + do_windows_fetch_inferior_registers (regcache, th, r); } } @@ -537,38 +533,42 @@ static void windows_fetch_inferior_registers (struct target_ops *ops, struct regcache *regcache, int r) { - current_thread = thread_rec (ptid_get_tid (inferior_ptid), TRUE); - /* Check if current_thread exists. Windows sometimes uses a non-existent + DWORD pid = ptid_get_tid (regcache_get_ptid (regcache)); + windows_thread_info *th = thread_rec (pid, TRUE); + + /* Check if TH exists. Windows sometimes uses a non-existent thread id in its events. */ - if (current_thread) - do_windows_fetch_inferior_registers (regcache, r); + if (th != NULL) + do_windows_fetch_inferior_registers (regcache, th, r); } static void -do_windows_store_inferior_registers (const struct regcache *regcache, int r) +do_windows_store_inferior_registers (const struct regcache *regcache, + windows_thread_info *th, int r) { - if (!current_thread) - /* Windows sometimes uses a non-existent thread id in its events. */; - else if (r >= 0) + if (r >= 0) regcache_raw_collect (regcache, r, - ((char *) ¤t_thread->context) + mappings[r]); + ((char *) &th->context) + mappings[r]); else { for (r = 0; r < gdbarch_num_regs (get_regcache_arch (regcache)); r++) - do_windows_store_inferior_registers (regcache, r); + do_windows_store_inferior_registers (regcache, th, r); } } -/* Store a new register value into the current thread context. */ +/* Store a new register value into the context of the thread tied to + REGCACHE. */ static void windows_store_inferior_registers (struct target_ops *ops, struct regcache *regcache, int r) { - current_thread = thread_rec (ptid_get_tid (inferior_ptid), TRUE); - /* Check if current_thread exists. Windows sometimes uses a non-existent + DWORD pid = ptid_get_tid (regcache_get_ptid (regcache)); + windows_thread_info *th = thread_rec (pid, TRUE); + + /* Check if TH exists. Windows sometimes uses a non-existent thread id in its events. */ - if (current_thread) - do_windows_store_inferior_registers (regcache, r); + if (th != NULL) + do_windows_store_inferior_registers (regcache, th, r); } /* Encapsulate the information required in a call to -- 2.11.0