From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 80929 invoked by alias); 1 Dec 2016 15:28:41 -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 80891 invoked by uid 89); 1 Dec 2016 15:28:40 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-1.9 required=5.0 tests=AWL,BAYES_00,SPF_PASS autolearn=ham version=3.3.2 spammy=driven, weather, Hx-languages-length:3117 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; Thu, 01 Dec 2016 15:28:30 +0000 Received: from ESESSHC019.ericsson.se (Unknown_Domain [153.88.183.75]) by (Symantec Mail Security) with SMTP id 6C.82.32482.B9140485; Thu, 1 Dec 2016 16:28:27 +0100 (CET) Received: from EUR03-VE1-obe.outbound.protection.outlook.com (153.88.183.145) by oa.msg.ericsson.com (153.88.183.75) with Microsoft SMTP Server (TLS) id 14.3.319.2; Thu, 1 Dec 2016 16:28:24 +0100 Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=antoine.tremblay@ericsson.com; Received: from elxa4wqvvz1 (192.75.88.130) by VI1PR0701MB1887.eurprd07.prod.outlook.com (10.167.197.23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384) id 15.1.761.5; Thu, 1 Dec 2016 15:28:22 +0000 References: <20161128122758.7762-1-antoine.tremblay@ericsson.com> <20161201144401.GA19289@E107787-LIN> User-agent: mu4e 0.9.17; emacs 24.5.50.1 From: Antoine Tremblay To: Yao Qi CC: Antoine Tremblay , Subject: Re: [PATCH 1/3] Fix inferior memory reading in GDBServer for arm/aarch32. In-Reply-To: <20161201144401.GA19289@E107787-LIN> Date: Thu, 01 Dec 2016 15:28:00 -0000 Message-ID: MIME-Version: 1.0 Content-Type: text/plain X-ClientProxiedBy: BN6PR20CA0047.namprd20.prod.outlook.com (10.171.173.33) To VI1PR0701MB1887.eurprd07.prod.outlook.com (10.167.197.23) X-MS-Office365-Filtering-Correlation-Id: cb352064-d841-4314-d94c-08d419feb04b X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:(22001);SRVR:VI1PR0701MB1887; X-Microsoft-Exchange-Diagnostics: 1;VI1PR0701MB1887;3:HxorAoGHzrR0P0UqXjEh2UFkuhQ9bXFktyNqPupfFPQUN8E6+3HPnsY+/zUw2lLMOao571MD4QG32TuFmUMadh7aN+kn4yUsqBLu7dbl2tA8sXewje1oh7sbqs1d4Yk+lna6CK9+Q/CF8QHuY/1/29O9Vxj6eNfDLjGRxlCDmi2WFS4zvYr3hqH82igZA8YM9rke9rfe87fxCDwjkSvLqTk2JFodGRO+HEw05UG+QoYm4BXNPDEHIOXvlkR40EdjNIwbopFadY9x1ah5A/dnrA==;25:Jy/NWJckOtlg+btd6STx39c8zLqOiJWZ8onqVuUrqnHAFD++lI2nOd6Ts7cijLTi+qkUUFzkeDn3+zT1lMjgvU1kFiAYuuz9hO7bkcBYKQQPzr/0BKnv8cdBgcKclhSJQswhWTvultbW9icdbbHcxKKdUJxqtQbBORWd8/F56WDGFoCLf1E8rxJbIsGIrM+y/1joSRf2aR5v0RkJI0h6vdVitW4Hyj6aqCAPd+shJw713oDqwhSGzQUYvr/DYbOKzMMr+UPzqy+add6VLa/n/Q0V/cQpklLJ1EVjhs2qo/YyX6fGHspEIff/J8tCqNI4YL/rdGGBf+WLZOOjkmBzR1hXlFjNE1rpmhAd3qHxCp6U+CL9TudLCddZvd6Zd0Z31OsKMx3UhdFnjEfoKxC0uCMDrLxxtKp8fMKElBsybofec/egkokKk+lVs7qYhQWl28nI1gs00OIh7fVbt9oOqg== X-Microsoft-Exchange-Diagnostics: 1;VI1PR0701MB1887;31:OZpYZO7vYNiegOx10hY4YOKLwLA98UWp0ZSniuh2yYpwbxk77mX16FjoUPT06ZpxjxPKz7oP0KQ+XfoArGZZgWsjd1F9xHF9DsMWLxNSlOpCCNx8Ox/din9e3m9tFrf/2HJ967JtLUnsqdFwlR2Qro88UKoqi2+rnANdEsNU8oJ5tviSlX10/z6mdY3SsVslyTPxf1hzYA0vIOXg6KiMjat9prjV9/u7QWgxu3NK9ar7FrknRi2TrQsIvBhnbnhx9thQhQKz3n7n7ViWCF8lFQ==;20:n0d2+d1fCV7IjvteC7ovU3LOlGEVNkquVxe/u//EHDj0DhsFXcT25FmqChPfX40uC5obcNMnBrmRkjKlZTmWQtK288oCviVQJwdtfRGp0EhkODuzvAF0vaTT6Imh8/jBcn2JT6z1Alk7eaOwEobsd72dOvflKEAyJiKi13x7RPtqQOicvIFFjV2hzJqRKWYiHzMPrX3mcLYFKaeHnY0NYkyRsbUJ7PLBlMWV8KenTTEcOuPMTXAKXc1NmJ9vtHQhCLhD9BkEi9L/qKyCy6ZWLSi9uZo14puJ1zyegMtfda0OJ8hP/wRszSUoTX4ix4AP2WvOpigKhA4HkZLQAer2WRgpF2eJnzhurgaBgTOqTFjlfKRaPSU0BuqEC/T2vEYmF3yAqJnBHHslIDE5OLrigG7UsB+GXG9Vh0aLRpPGLiT3rRS+mu5LEAOIaflsgvpVuwnh590PmhBiF522ml25f8Rqlva+sxaDcbly76cqPpaSVn6KfDlJLQb6wNd9YCxH X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(6040375)(601004)(2401047)(5005006)(8121501046)(3002001)(10201501046)(6041248)(20161123560025)(20161123564025)(20161123562025)(20161123555025)(20161123558021)(6072148);SRVR:VI1PR0701MB1887;BCL:0;PCL:0;RULEID:;SRVR:VI1PR0701MB1887; X-Microsoft-Exchange-Diagnostics: 1;VI1PR0701MB1887;4:3UazKN4ZvTAfXWVr8Hpb8QTTy7YdvrlPQrJNCMSod1rNbThfNWeEMUsnlacPwBQeiIoSJSPsboEKVCUsfoMs29TGfXKAfgIJ2oSeJcKKSO+Bc7XX4bxDFNn1+xatGyn8VnTJaItY8RmtguRn0lJbLSBzRsma2FcUumQmkA17TBOPzQnlvAaGdVJ1s4xTo5MNnnIV63IiU1L5d+FQ9yvt/Ysb+Ubwoowst40+FZ++r9pCjTdIl0TD2cjj8Ouh3Qu4if++o3iBZyknBIrrWvEiRqJu9mTbwGAa0DSyJAL6dJVts7kUMNZEgWWP+y/dCDpmlweVuIj1OEphReB7fq6VKPazf5wTQPLVC/7NqzTohScBeeFTjzt5nBZrniQ1m62U5PM2EVQOcI/jQ3kmRIuZQVqeC2VPie1SRG858f87UMFRdpXQRy6oi5Trfhdu1ofJF5YRN5chF309gcBxh10Hf+qRChP5LDn4WizgIv1NB4R7cyNXCa/8DQNl+ZzwLnOP6jCMNNLl7KA6aRj8XiuYFvw1mzXi6vCw5VoeuZe7Xna0I2JI/kZKHKG9li41f1usDICln3Wz6yUGRhBP5xbc4PZPj68KC04cmpRjpOVXNzs= X-Forefront-PRVS: 014304E855 X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10009020)(4630300001)(6009001)(7916002)(24454002)(199003)(189002)(7736002)(47776003)(1411001)(7846002)(110136003)(36756003)(8676002)(6666003)(86362001)(4001350100001)(97736004)(42186005)(39410400001)(83506001)(5003940100001)(2906002)(106356001)(6486002)(105586002)(6496003)(733004)(92566002)(39450400002)(229853002)(50986999)(54356999)(76176999)(4326007)(38730400001)(48376002)(50466002)(189998001)(6116002)(305945005)(3846002)(66066001)(39060400001)(6916009)(2950100002)(81156014)(81166006)(5660300001)(101416001)(68736007)(33646002);DIR:OUT;SFP:1101;SCL:1;SRVR:VI1PR0701MB1887;H:elxa4wqvvz1;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) X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1;VI1PR0701MB1887;23:9uKcghMP/YlbwYpBAZIy2y6Wh+Xmx7idBE1Ezad?= =?us-ascii?Q?EQnbrh7gRikqYkOm5i/kOOCvSBcqynpLIh2m1LQsMgehNB0DJWRPirVBq4Ud?= =?us-ascii?Q?+/+D8tyuFNW3FUZ1dYFN7ycZKgUezed+0F9zxHCRFfmt9nEoKnCLyFhMzB8o?= =?us-ascii?Q?arwoCeN02mb0gW3YqIRCy7gbr9E1+ea2qxS0Ol71DELQeSSloKwgNN/NuAAw?= =?us-ascii?Q?OdgGrCrbG9wAvBIf4+cRwQgbu8sIwdiqvrpv6p5IfPiFnG5NN+Qt5dXKpUDx?= =?us-ascii?Q?tzZBfA8taqEcoN2bEW0afSdwByUcfQIcNCP0r5gFyTYFQfrYGfW/D5fr4aRO?= =?us-ascii?Q?4D2ATyN49vj/jVPU1lBbx09+329FFxUvnwddv619xSQ4+W85Qn9+f1zf/20y?= =?us-ascii?Q?NqoyjsXg4fn2rOAyjF/8zlS03dGjUtN6a/OcF+y+/C2EjZ1yAAJ6dwBbwwWC?= =?us-ascii?Q?QINFgaMMZ9StoqbEn0LDV+1M7+6W+t7KpSEiAVnTrMDJ5mFUda9luKXfrzWt?= =?us-ascii?Q?1XDce8qpJLXb8EFYPDcTHYN/brvQ/cUTLQ0jcrRkQSWl3/RUb5nJWMtWk2O4?= =?us-ascii?Q?QHtyW6W1Cw1BeHqGk023AdPJqxz195lo0YnOarsNKVSbKaZK1eMMriiiOO/o?= =?us-ascii?Q?Bzai2bL8IdifkOqtSwFpgaxVUSb6eWsqP1N1mv/dLLh/gJls3LEEdFemQJEz?= =?us-ascii?Q?98aMhpcIByFOI35bUVaTRpiDkUncCeA2XhAIXMrlxWB4KrehpQ/hf5gjsQim?= =?us-ascii?Q?cdKrwmRvNHbVcJuRVKi6j09VUr2+R54iJv0IolbwGV47qxnL4yKC04CpsDOy?= =?us-ascii?Q?dZwyiS1pQjCheUtYIlwzDAe8sQG4nAFlZ/9lL/Y4OWnIK3QnPV94GgHLHMIq?= =?us-ascii?Q?eBitW2DenMAdOamucHoRnaoz9f7qcUV6qpE841aEp4cUx2XXKNub+nMsJPwv?= =?us-ascii?Q?OmVbCYJ7u3nC04FQqyk7Alx5N72IjQ0tdGDgUf6L7G6McWUAkEf4NqFxH231?= =?us-ascii?Q?2o8GyTqIQD+5d9qjv0dqHfFLyy4QcYWpt6UMAocTfIfQQ/ba1H1Xg66jIrKn?= =?us-ascii?Q?86Y+mXOtvqWIadYE8lVX1ztVd4eYb7YKay78ZWAALznLygh1YiJ5/nzu0XDj?= =?us-ascii?Q?GRSB08pfCCVL1gSDaLqwGxyWuZrfyEN3DAq4Sp5k5z2eaPJw8yHl+z0Och+n?= =?us-ascii?Q?Za7EO9FG2YC0q1muQU1RVgAwQV4FrBU/hqZz7wmk/U/u+HZXlveEGFega/1a?= =?us-ascii?Q?QvStCM6ZlpHmx8tUefxw=3D?= X-Microsoft-Exchange-Diagnostics: 1;VI1PR0701MB1887;6:YyNfYuw8+DwzQKs+CExaF6aoBmgkDrsaueGUv6/Rr8n1Dvf4ZOzOkzlEyHpD/EsRQatrxFPHIc76imeBh5evutF1y167LKCtjYImhs3fryUi9ZVM8Z8vH3UFqfBkILLx4ugYw2yvjsdA2Nn79k1ktOB7nIDE0Xj03IiVB8U3fnJxoPwj/2NFCQGRhFMlNlrcjpyCphuqE1iOxu3W2Nhz7F8Ev7GyJ+pjITHKgBWnWPheEo1AMKOkHfvh182QmslLVHobJ/f/ZchomP5J45MaZQlfIJSSIywfjWGLfte5vbYK/9XRuv7S1L4xu6c/CLN5TRanLoYCLVo1S3Y1ahmyt/sV4ECE4BCUjo3TBwmurKGcrNVLMyJN8ZqZCQ9w7GrSpKHoXA9ZRJjKlDTWuLGnneLSaD4XqVyxqBGJOZEW2lRTpnCIpgQtFhp567vPFXg+FfcbjvM+jdzPMevhi3ygLQ==;5:8WpnSfCiM+xW1Ltg8CT7sLKqIlisu6A3DOkTeXo/8KWC38QeHtzTSBjb7Av5hv2DXgnx64FG7JN3j/naA1p/IZcTER5hy8lvcP02DHWOO5QO2HpzjIIsUSUOj5PLqRn7Pw4dNoVIm6F6oIOJ62C80w==;24:OpSSAPMKrYXaUiBoKIiTrz/4tQ+uDC/OmdnQoEk9p4f5X3WFWSi2yhvMmkhfFkg8KE6melnSE5AHeKetZshZbPhf+yW4iQrr+pvmVr2pbgo= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1;VI1PR0701MB1887;7:NCwu5UwGirbceX2VniEElQfB2A2Vydi1LHwKhjwZoPNH7pNilD8keFF4umeatG+rclpVTr88Evm+M60T6X/kRMRbQj4nMz+vltGr3U0YC6C9tYkDmtUGjOmaBmIKBlMPGd5MBX1ehV40RP1VomChraLfntJeZ8HvBrWkHvGhHfls7NIx5CcNape9OqUrrIv9BD+Bcc/b7lL22tY/ndtr5u+ZvMQTyTFJPvA8xm10Wdute/GLnjA2pwMl5UFeFtyF6IG+yHmBSBboRtuVz4AkYBqBlIn3xQ3DPTi1UPznriFrp2ost0+90y1ZvGlRVY7xPHRym41yozsbrOmxW1lPa3avvIOAkBtHASw7Jo5Msbb9Ug813yXQpco8pWI1uJSDOtiqtI1b1MwmHvqMLz1tFw282VhhpRw2KeUT5dWx3ieO2cuJslW1XW+5d2oU9pMAG1Z/ol/FD8Sgu/DWoqZ94Q== X-MS-Exchange-CrossTenant-OriginalArrivalTime: 01 Dec 2016 15:28:22.9125 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR0701MB1887 X-OriginatorOrg: ericsson.com X-IsSubscribed: yes X-SW-Source: 2016-12/txt/msg00039.txt.bz2 Yao Qi writes: > On Mon, Nov 28, 2016 at 07:27:56AM -0500, Antoine Tremblay wrote: >> Before this patch, some functions would read the inferior memory with >> (*the_target)->read_memory, which returns the raw memory, rather than the >> shadowed memory. >> >> This is wrong since these functions do not expect to read a breakpoint >> instruction and can lead to invalid behavior. >> >> Use of raw memory in get_next_pcs_read_memory_unsigned_integer for example >> could lead to get_next_pc returning an invalid pc. > > Can you elaborate under what circumstance breakpoints are still in memory > when these functions are called? Can we have a test case? > Here is an example: In non-stop mode multiple threads are stepping, like in the non-stop-fair-events.exp test. GDB: thread 1 step& GDBServer: thread 1 is at instruction A installs single step breakpoint on instruction B GDB: thread 2 step& GDBServer: thread 2 is at instruction B GDBServer needs to install a single step breakpoint at the next instruction from B. To do so get_next_pc is called, but since the single step breakpoint for thread 1 at instruction B is there. get_next_pc reads the current instruction as a breakpoint instruction and fails. Note that I used a user driven example here to make it more clear but this is also true while range-stepping in a loop for example: - thread 1 hits its single-step breakpoint deletes it - it's not out of a range-step so - tries to install a single-step breakpoint at the next instruction - but thread 2 has a breakpoint at thread 1's current instruction and get_next_pc fails. This is already tested by non-stop-fair-events.exp, the test will fail without this patch. Note that this test is testing both range-stepping and the user stepping. >> @@ -769,15 +770,15 @@ arm_sigreturn_next_pc (struct regcache *regcache, int svc_number, >> gdb_assert (svc_number == __NR_sigreturn || svc_number == __NR_rt_sigreturn); >> >> collect_register_by_name (regcache, "sp", &sp); >> - (*the_target->read_memory) (sp, (unsigned char *) &sp_data, 4); >> + target_read_memory (sp, (unsigned char *) &sp_data, 4); >> >> pc_offset = arm_linux_sigreturn_next_pc_offset >> (sp, sp_data, svc_number, __NR_sigreturn == svc_number ? 1 : 0); >> >> - (*the_target->read_memory) (sp + pc_offset, (unsigned char *) &next_pc, 4); >> + target_read_memory (sp + pc_offset, (unsigned char *) &next_pc, 4); >> >> /* Set IS_THUMB according the CPSR saved on the stack. */ >> - (*the_target->read_memory) (sp + pc_offset + 4, (unsigned char *) &cpsr, 4); >> + target_read_memory (sp + pc_offset + 4, (unsigned char *) &cpsr, 4); >> *is_thumb = ((cpsr & CPSR_T) != 0); > > We are reading from stack, so we don't need to check weather there is > a breakpoint or not. Ho right, is it worth it to make the distinction however ? I mean, would it be better general practice to use target_read_memory unless we absolutely need to use the_target->read_memory like with breakpoint_at funcs.. ? The counterpart looks more error prone for the developer...