From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 56980 invoked by alias); 6 Sep 2019 14:46:30 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Received: (qmail 56922 invoked by uid 89); 6 Sep 2019 14:46:29 -0000 Authentication-Results: sourceware.org; auth=none X-Spam-SWARE-Status: No, score=-23.1 required=5.0 tests=AWL,BAYES_00,GIT_PATCH_0,GIT_PATCH_1,GIT_PATCH_2,GIT_PATCH_3,RCVD_IN_DNSWL_NONE,SPF_HELO_PASS,SPF_PASS autolearn=ham version=3.3.1 spammy= X-HELO: EUR03-AM5-obe.outbound.protection.outlook.com Received: from mail-eopbgr30067.outbound.protection.outlook.com (HELO EUR03-AM5-obe.outbound.protection.outlook.com) (40.107.3.67) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Fri, 06 Sep 2019 14:46:27 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=armh.onmicrosoft.com; s=selector2-armh-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=d7R1td8U3+xWtaSyhiuSQc0YAadJB5j5OmJc9nQk478=; b=YzKsphEq2iKwwUK3gUVMXcbBgUyI4WgfHF2+h7OqGUDcZUvGbrWgPg6C0nKv9OzoAz0E0tUjAJthd8wp1riexzKvFlH/O7WblxrKIe1mquFjxZt/ODWITgUAf/fDDjQZS5VkzTzX+Tn5R3/81DiXVR0DHwPZBJu2jo78qFi6sTE= Received: from VE1PR08CA0006.eurprd08.prod.outlook.com (2603:10a6:803:104::19) by AM6PR08MB4216.eurprd08.prod.outlook.com (2603:10a6:20b:89::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2241.18; Fri, 6 Sep 2019 14:46:22 +0000 Received: from VE1EUR03FT046.eop-EUR03.prod.protection.outlook.com (2a01:111:f400:7e09::207) by VE1PR08CA0006.outlook.office365.com (2603:10a6:803:104::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384) id 15.20.2241.14 via Frontend Transport; Fri, 6 Sep 2019 14:46:22 +0000 Authentication-Results: spf=temperror (sender IP is 63.35.35.123) smtp.mailfrom=arm.com; gcc.gnu.org; dkim=pass (signature was verified) header.d=armh.onmicrosoft.com;gcc.gnu.org; dmarc=temperror action=none header.from=arm.com; Received-SPF: TempError (protection.outlook.com: error in processing during lookup of arm.com: DNS Timeout) Received: from 64aa7808-outbound-1.mta.getcheckrecipient.com (63.35.35.123) by VE1EUR03FT046.mail.protection.outlook.com (10.152.19.226) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384) id 15.20.2241.14 via Frontend Transport; Fri, 6 Sep 2019 14:46:20 +0000 Received: ("Tessian outbound f83cc93ed55d:v27"); Fri, 06 Sep 2019 14:46:17 +0000 X-CheckRecipientChecked: true X-CR-MTA-CID: 9ee9ff96623d3785 X-CR-MTA-TID: 64aa7808 Received: from 54133d61df6f.1 (cr-mta-lb-1.cr-mta-net [104.47.13.50]) by 64aa7808-outbound-1.mta.getcheckrecipient.com id D244F4B3-E443-46AC-8E19-8313198A2F3D.1; Fri, 06 Sep 2019 14:46:11 +0000 Received: from EUR04-HE1-obe.outbound.protection.outlook.com (mail-he1eur04lp2050.outbound.protection.outlook.com [104.47.13.50]) by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id 54133d61df6f.1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384); Fri, 06 Sep 2019 14:46:11 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=WS0sGfLyTUVVG/xm0bg6FOWANkNF71GjudIXBmlAv4ElSqOQlyrr5Kz4r3OB3VCMC4pZQ7ignJRIklzIaQaympUqb/DAl01Ems1qZYn1WG4LPRlVzK7C25Nxx/7mQU5DHklzVb9pbVAHDhn6K9chnnh8RLtTJrODfoyBBnOBJnh5h/XZY08ylAu4+R2B98oMjt2GFaXZBTAaRiwyY4F+1GdrI5riEczsa8KUITAmEDuxz7oQqQiI20vNZXPqhgcF5vWGLFVJja6wkV3SZrZukFCdx67eQ1R4my4xobGLmsGSxy0b5uL4SOquap4vvEj7AXu/aZQucB8+F4pinRitAA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=d7R1td8U3+xWtaSyhiuSQc0YAadJB5j5OmJc9nQk478=; b=Oopxc6CFlQA5R57mtpRGEECtdJTuo9OPU24AbcFjZUcMasHt5KgMmW6xc+uRWTia86lVHfUzAXcSKQbBy1kYzQRBjC3AiHMzMT7qbt2dRIugNn/na0EK/VmfoHRC3E5IxhCJ9Y48E0xuz2ONpRTamzB09Y1i3iqAsU6dgQNyisNWcAInAqohg8alPOcVz+5YYMMNMqxenkssyfN1orV5hYd+o89RmHe2LGaSC3wk0Nu6xJ76RHr9DIOnPN+kJ0T9b7mn90Bxa8t/fYIRRUF2GOkex6zvz/oppTRK6cDl2RPc2upplcziZN6th4UexRy22/jONEuycLbSBtjdoscQww== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=arm.com; dmarc=pass action=none header.from=arm.com; dkim=pass header.d=arm.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=armh.onmicrosoft.com; s=selector2-armh-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=d7R1td8U3+xWtaSyhiuSQc0YAadJB5j5OmJc9nQk478=; b=YzKsphEq2iKwwUK3gUVMXcbBgUyI4WgfHF2+h7OqGUDcZUvGbrWgPg6C0nKv9OzoAz0E0tUjAJthd8wp1riexzKvFlH/O7WblxrKIe1mquFjxZt/ODWITgUAf/fDDjQZS5VkzTzX+Tn5R3/81DiXVR0DHwPZBJu2jo78qFi6sTE= Received: from VI1PR08MB5471.eurprd08.prod.outlook.com (52.133.246.83) by VI1PR08MB3392.eurprd08.prod.outlook.com (20.177.58.222) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2241.14; Fri, 6 Sep 2019 14:46:09 +0000 Received: from VI1PR08MB5471.eurprd08.prod.outlook.com ([fe80::206a:65bd:e6a9:536b]) by VI1PR08MB5471.eurprd08.prod.outlook.com ([fe80::206a:65bd:e6a9:536b%2]) with mapi id 15.20.2241.018; Fri, 6 Sep 2019 14:46:09 +0000 From: Matthew Malcomson To: "gcc-patches@gcc.gnu.org" CC: "mliska@suse.cz" , "dodji@redhat.com" , nd , "kcc@google.com" , "jakub@redhat.com" , "dvyukov@google.com" Subject: [RFC][PATCH 4/X][libsanitizer] Pass size and pointer info to error reporting functions Date: Fri, 06 Sep 2019 14:46:00 -0000 Message-ID: References: <156778058239.16148.17480879484406897649.scripted-patch-series@arm.com> In-Reply-To: <156778058239.16148.17480879484406897649.scripted-patch-series@arm.com> Authentication-Results-Original: spf=none (sender IP is ) smtp.mailfrom=Matthew.Malcomson@arm.com; X-Microsoft-Antispam-Untrusted: BCL:0;PCL:0;RULEID:(2390118)(7020095)(4652040)(8989299)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(5600166)(711020)(4605104)(1401327)(4618075)(2017052603328)(49563074)(7193020);SRVR:VI1PR08MB3392; x-checkrecipientrouted: true x-ms-oob-tlc-oobclassifiers: OLM:3044;OLM:3044; X-Forefront-Antispam-Report-Untrusted: SFV:NSPM;SFS:(10009020)(4636009)(376002)(39860400002)(136003)(396003)(346002)(366004)(54534003)(199004)(189003)(66476007)(66556008)(64756008)(66446008)(7696005)(81166006)(52536014)(5660300002)(2501003)(14454004)(25786009)(52116002)(55016002)(478600001)(86362001)(4326008)(99936001)(8936002)(81156014)(6916009)(66946007)(71200400001)(71190400001)(8676002)(66616009)(3846002)(446003)(476003)(6116002)(33656002)(11346002)(76176011)(2906002)(53936002)(186003)(9686003)(6436002)(66066001)(256004)(5024004)(5640700003)(54906003)(386003)(6506007)(44832011)(486006)(7736002)(74316002)(305945005)(316002)(99286004)(26005)(2351001)(102836004);DIR:OUT;SFP:1101;SCL:1;SRVR:VI1PR08MB3392;H:VI1PR08MB5471.eurprd08.prod.outlook.com;FPR:;SPF:None;LANG:en;PTR:InfoNoRecords;A:1;MX:1; received-spf: None (protection.outlook.com: arm.com does not designate permitted sender hosts) X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam-Message-Info-Original: Qhqce6BODytKmXYeNOgfREe39cXaeDKUj/YyIC/vZdWLa0yp9R5EHj29s2KSqERBtz/4UcWPBv8+CdQXnvs0PGoaUUjtAbFnVIrLxNeLswCoL5aidECA3ZXYVnVZxbIA+B51Rirkj6qmMjxZczZsr8u0XwbYluue/1iv+qY0QYWR5COc1W8EfGJGfSIzKiIuJYhwt9P/G21hiqoEYKm+H094oa8XfioE4juwxhtFg00qY2N8asBHwcfXafEPzLpWpTy7ZHIcbMfiH92YN8VvE7Jm8jhhL1IUEfboWnz8gJc+RoLu3O/wawBWdN+KYd+gsoCi+ZZNZ4G82tYg8i/MMWcbXAgG9wOot+/t16OdgmTgCDJ07p1GiBSHScaY9W/4Q8GSAOhcPQuH/CUqfuI6c4c+XllJrLxHGTc0fIHyOVE= x-ms-exchange-transport-forked: True Content-Type: multipart/mixed; boundary="_002_VI1PR08MB547191A4325428FDFCB7628CE0BA0VI1PR08MB5471eurp_" MIME-Version: 1.0 Original-Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Matthew.Malcomson@arm.com; Return-Path: Matthew.Malcomson@arm.com X-MS-Exchange-Transport-CrossTenantHeadersStripped: VE1EUR03FT046.eop-EUR03.prod.protection.outlook.com X-MS-Office365-Filtering-Correlation-Id-Prvs: ed323470-b2b7-4522-b9bc-08d732d8f451 X-IsSubscribed: yes X-SW-Source: 2019-09/txt/msg00391.txt.bz2 --_002_VI1PR08MB547191A4325428FDFCB7628CE0BA0VI1PR08MB5471eurp_ Content-Type: text/plain; charset="us-ascii" Content-ID: <4800B0EE1C028B4F8BE59204D609D3DF@eurprd08.prod.outlook.com> Content-Transfer-Encoding: quoted-printable Content-length: 2574 This makes the error reporting for loadN and storeN much better. In this first draft these are the only functions I will be using and hence this fix is very useful. This is taken from upstream LLVM (change made in LLVM svn commit 351730), but is not a direct cherry-pick of a commit since the commit does not apply cleanly. libsanitizer/ChangeLog: 2019-09-06 Matthew Malcomson * hwasan/hwasan.cc (CheckAddressSized): Use new sized SigTrap. (SigTrap): Record pointer in x0 for error report and add an overloaded version that takes both pointer and size. ############### Attachment also inlined for ease of reply ##########= ##### diff --git a/libsanitizer/hwasan/hwasan.cc b/libsanitizer/hwasan/hwasan.cc index 518cd11ff301f1d1cf6f5275ecffdb03d880d8d1..a2ad8f96d847d5c4395da668a40= b24f5331dcbd6 100644 --- a/libsanitizer/hwasan/hwasan.cc +++ b/libsanitizer/hwasan/hwasan.cc @@ -360,8 +360,8 @@ static void SigTrap(uptr p) { (void)p; // 0x900 is added to do not interfere with the kernel use of lower value= s of // brk immediate. - // FIXME: Add a constraint to put the pointer into x0, the same as x86 b= ranch. - asm("brk %0\n\t" ::"n"(0x900 + X)); + register uptr x0 asm("x0") =3D p; + asm("brk %1\n\t" ::"r"(x0), "n"(0x900 + X)); #elif defined(__x86_64__) // INT3 + NOP DWORD ptr [EAX + X] to pass X to our signal handler, 5 byt= es // total. The pointer is passed via rdi. @@ -379,6 +379,25 @@ static void SigTrap(uptr p) { // __builtin_unreachable(); } =20 +template +__attribute__((always_inline)) static void SigTrap(uptr p, uptr size) { +#if defined(__aarch64__) + register uptr x0 asm("x0") =3D p; + register uptr x1 asm("x1") =3D size; + asm("brk %2\n\t" ::"r"(x0), "r"(x1), "n"(0x900 + X)); +#elif defined(__x86_64__) + // Size is stored in rsi. + asm volatile( + "int3\n" + "nopl %c0(%%rax)\n" ::"n"(0x40 + X), + "D"(p), "S"(size)); +#else + __builtin_trap(); +#endif + // __builtin_unreachable(); +} + + enum class ErrorAction { Abort, Recover }; enum class AccessType { Load, Store }; =20 @@ -405,7 +424,7 @@ __attribute__((always_inline, nodebug)) static void Che= ckAddressSized(uptr p, for (tag_t *t =3D shadow_first; t <=3D shadow_last; ++t) if (UNLIKELY(ptr_tag !=3D *t)) { SigTrap<0x20 * (EA =3D=3D ErrorAction::Recover) + - 0x10 * (AT =3D=3D AccessType::Store) + 0xf>(p); + 0x10 * (AT =3D=3D AccessType::Store) + 0xf>(p, sz); if (EA =3D=3D ErrorAction::Abort) __builtin_unreachable(); } } --_002_VI1PR08MB547191A4325428FDFCB7628CE0BA0VI1PR08MB5471eurp_ Content-Type: text/plain; name="hwasan-implementation03.patch" Content-Description: hwasan-implementation03.patch Content-Disposition: attachment; filename="hwasan-implementation03.patch"; size=1854; creation-date="Fri, 06 Sep 2019 14:46:09 GMT"; modification-date="Fri, 06 Sep 2019 14:46:09 GMT" Content-ID: <1FF6C97C366A93439223602641D8BEA8@eurprd08.prod.outlook.com> Content-Transfer-Encoding: base64 Content-length: 2514 ZGlmZiAtLWdpdCBhL2xpYnNhbml0aXplci9od2FzYW4vaHdhc2FuLmNjIGIv bGlic2FuaXRpemVyL2h3YXNhbi9od2FzYW4uY2MKaW5kZXggNTE4Y2QxMWZm MzAxZjFkMWNmNmY1Mjc1ZWNmZmRiMDNkODgwZDhkMS4uYTJhZDhmOTZkODQ3 ZDVjNDM5NWRhNjY4YTQwYjI0ZjUzMzFkY2JkNiAxMDA2NDQKLS0tIGEvbGli c2FuaXRpemVyL2h3YXNhbi9od2FzYW4uY2MKKysrIGIvbGlic2FuaXRpemVy L2h3YXNhbi9od2FzYW4uY2MKQEAgLTM2MCw4ICszNjAsOCBAQCBzdGF0aWMg dm9pZCBTaWdUcmFwKHVwdHIgcCkgewogICAodm9pZClwOwogICAvLyAweDkw MCBpcyBhZGRlZCB0byBkbyBub3QgaW50ZXJmZXJlIHdpdGggdGhlIGtlcm5l bCB1c2Ugb2YgbG93ZXIgdmFsdWVzIG9mCiAgIC8vIGJyayBpbW1lZGlhdGUu Ci0gIC8vIEZJWE1FOiBBZGQgYSBjb25zdHJhaW50IHRvIHB1dCB0aGUgcG9p bnRlciBpbnRvIHgwLCB0aGUgc2FtZSBhcyB4ODYgYnJhbmNoLgotICBhc20o ImJyayAlMFxuXHQiIDo6Im4iKDB4OTAwICsgWCkpOworICByZWdpc3RlciB1 cHRyIHgwIGFzbSgieDAiKSA9IHA7CisgIGFzbSgiYnJrICUxXG5cdCIgOjoi ciIoeDApLCAibiIoMHg5MDAgKyBYKSk7CiAjZWxpZiBkZWZpbmVkKF9feDg2 XzY0X18pCiAgIC8vIElOVDMgKyBOT1AgRFdPUkQgcHRyIFtFQVggKyBYXSB0 byBwYXNzIFggdG8gb3VyIHNpZ25hbCBoYW5kbGVyLCA1IGJ5dGVzCiAgIC8v IHRvdGFsLiBUaGUgcG9pbnRlciBpcyBwYXNzZWQgdmlhIHJkaS4KQEAgLTM3 OSw2ICszNzksMjUgQEAgc3RhdGljIHZvaWQgU2lnVHJhcCh1cHRyIHApIHsK ICAgLy8gX19idWlsdGluX3VucmVhY2hhYmxlKCk7CiB9CiAKK3RlbXBsYXRl IDx1bnNpZ25lZCBYPgorX19hdHRyaWJ1dGVfXygoYWx3YXlzX2lubGluZSkp IHN0YXRpYyB2b2lkIFNpZ1RyYXAodXB0ciBwLCB1cHRyIHNpemUpIHsKKyNp ZiBkZWZpbmVkKF9fYWFyY2g2NF9fKQorICByZWdpc3RlciB1cHRyIHgwIGFz bSgieDAiKSA9IHA7CisgIHJlZ2lzdGVyIHVwdHIgeDEgYXNtKCJ4MSIpID0g c2l6ZTsKKyAgYXNtKCJicmsgJTJcblx0IiA6OiJyIih4MCksICJyIih4MSks ICJuIigweDkwMCArIFgpKTsKKyNlbGlmIGRlZmluZWQoX194ODZfNjRfXykK KyAgLy8gU2l6ZSBpcyBzdG9yZWQgaW4gcnNpLgorICBhc20gdm9sYXRpbGUo CisgICAgICAiaW50M1xuIgorICAgICAgIm5vcGwgJWMwKCUlcmF4KVxuIiA6 OiJuIigweDQwICsgWCksCisgICAgICAiRCIocCksICJTIihzaXplKSk7Cisj ZWxzZQorICBfX2J1aWx0aW5fdHJhcCgpOworI2VuZGlmCisgIC8vIF9fYnVp bHRpbl91bnJlYWNoYWJsZSgpOworfQorCisKIGVudW0gY2xhc3MgRXJyb3JB Y3Rpb24geyBBYm9ydCwgUmVjb3ZlciB9OwogZW51bSBjbGFzcyBBY2Nlc3NU eXBlIHsgTG9hZCwgU3RvcmUgfTsKIApAQCAtNDA1LDcgKzQyNCw3IEBAIF9f YXR0cmlidXRlX18oKGFsd2F5c19pbmxpbmUsIG5vZGVidWcpKSBzdGF0aWMg dm9pZCBDaGVja0FkZHJlc3NTaXplZCh1cHRyIHAsCiAgIGZvciAodGFnX3Qg KnQgPSBzaGFkb3dfZmlyc3Q7IHQgPD0gc2hhZG93X2xhc3Q7ICsrdCkKICAg ICBpZiAoVU5MSUtFTFkocHRyX3RhZyAhPSAqdCkpIHsKICAgICAgIFNpZ1Ry YXA8MHgyMCAqIChFQSA9PSBFcnJvckFjdGlvbjo6UmVjb3ZlcikgKwotICAg ICAgICAgICAgIDB4MTAgKiAoQVQgPT0gQWNjZXNzVHlwZTo6U3RvcmUpICsg MHhmPihwKTsKKyAgICAgICAgICAgICAweDEwICogKEFUID09IEFjY2Vzc1R5 cGU6OlN0b3JlKSArIDB4Zj4ocCwgc3opOwogICAgICAgaWYgKEVBID09IEVy cm9yQWN0aW9uOjpBYm9ydCkgX19idWlsdGluX3VucmVhY2hhYmxlKCk7CiAg ICAgfQogfQoK --_002_VI1PR08MB547191A4325428FDFCB7628CE0BA0VI1PR08MB5471eurp_--