From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 57729 invoked by alias); 6 Sep 2019 14:46:35 -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 57518 invoked by uid 89); 6 Sep 2019 14:46:33 -0000 Authentication-Results: sourceware.org; auth=none X-Spam-SWARE-Status: No, score=-23.2 required=5.0 tests=AWL,BAYES_00,GIT_PATCH_0,GIT_PATCH_1,GIT_PATCH_2,GIT_PATCH_3,KAM_LOTSOFHASH,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-eopbgr30060.outbound.protection.outlook.com (HELO EUR03-AM5-obe.outbound.protection.outlook.com) (40.107.3.60) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Fri, 06 Sep 2019 14:46:29 +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=sxLI1GhjjxqZzUfzFEh6HhqoI/LZ1MseZuAAUWbi5ec=; b=6MaRvoj+AMQaXNvSjc/Jw/p7c8NKfX5ndMRP6s7qfiMCB/q1C8VAkTm9xSSjig20tDCPVx3FhDdDGAi7TUkJ2FZG0DofjYEWEpVPj5uCrhUDJCvljlWJ4IQ5+No8/U2VH1K74KXt2BK7K6ksOHVISszNTdABqvoTupyhBD71VFE= Received: from HE1PR0802CA0024.eurprd08.prod.outlook.com (2603:10a6:3:bd::34) by AM4PR08MB2851.eurprd08.prod.outlook.com (2603:10a6:205:d::33) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2220.18; Fri, 6 Sep 2019 14:46:24 +0000 Received: from DB5EUR03FT003.eop-EUR03.prod.protection.outlook.com (2a01:111:f400:7e0a::202) by HE1PR0802CA0024.outlook.office365.com (2603:10a6:3:bd::34) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2241.14 via Frontend Transport; Fri, 6 Sep 2019 14:46:24 +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 DB5EUR03FT003.mail.protection.outlook.com (10.152.20.157) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2241.14 via Frontend Transport; Fri, 6 Sep 2019 14:46:22 +0000 Received: ("Tessian outbound f83cc93ed55d:v27"); Fri, 06 Sep 2019 14:46:19 +0000 X-CheckRecipientChecked: true X-CR-MTA-CID: 483f52c09a69a9a0 X-CR-MTA-TID: 64aa7808 Received: from 93fd9dc78205.2 (cr-mta-lb-1.cr-mta-net [104.47.13.58]) by 64aa7808-outbound-1.mta.getcheckrecipient.com id 2BA72975-92C4-48F1-A418-50BAC06FC1DB.1; Fri, 06 Sep 2019 14:46:14 +0000 Received: from EUR04-HE1-obe.outbound.protection.outlook.com (mail-he1eur04lp2058.outbound.protection.outlook.com [104.47.13.58]) by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id 93fd9dc78205.2 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384); Fri, 06 Sep 2019 14:46:14 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=cr6jYvdb8/au0AwwLAiWi4hDw5BUq8PQoIwBbG7KA9UF0B5ygLONFWIKRpio8m/0UZDfqn496gQVRSyQpeBz6IApkujQY570CyJXwWmaRoDFQdTlNUeYMx6gFTAInd2zWmxKDIwVjES3RhVBtVIseMvP440F3C08XnWjx+7Z4lI0EbWlHQdLcftq3DHbZ4tZik8u3c436zbR7xgqlJehkGH0Vs0N9j3tmTdiM9HaPSOpopH0JUciAuq4omrcMG4/hppZcAPoS9z2PUv5sfCw45dh93Gt+A9czAvsA9fgEJaJNj0eGDIN5xU7oAqCtADzdDM3iAOxYFluBnoJJAuZMA== 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=sxLI1GhjjxqZzUfzFEh6HhqoI/LZ1MseZuAAUWbi5ec=; b=hIaBsZUIgsnPz7fZx04S9DL7y35MJOrLGtNLCnIecFPhdO+ejv3Nzv70k3imUPsSJX9c9W4oEEO7dghqzFQspUDwY/l0H4IBDFto/pdmcRGV4u5zsDJTcBdnlyqas++yLAgNL0neNZhIFyf3Qywg/xxFHCc31Y70OV2+K26z7rbR9hNu0NVdSXotNhohszmt6PwQSwL9GsrgONSYEHyuSfayRt7RRsMpnEbl7MfLvcekJmKJTfmIlLOm2MQFoek2diquALmT+RjuqMFoDN9mqzCR5UMHby30JgfD7eu0akN+AgFHerUjYNKpw62M+Vc+h46w0+IVETorX91N3HM7dA== 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=sxLI1GhjjxqZzUfzFEh6HhqoI/LZ1MseZuAAUWbi5ec=; b=6MaRvoj+AMQaXNvSjc/Jw/p7c8NKfX5ndMRP6s7qfiMCB/q1C8VAkTm9xSSjig20tDCPVx3FhDdDGAi7TUkJ2FZG0DofjYEWEpVPj5uCrhUDJCvljlWJ4IQ5+No8/U2VH1K74KXt2BK7K6ksOHVISszNTdABqvoTupyhBD71VFE= 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:12 +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:12 +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 6/X][libsanitizer] Add -fsanitize=hwaddress flags Date: Fri, 06 Sep 2019 14:47: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)(14444005)(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: vufznCsvaZwHl0kIhuT0lJKp2Vz9RpbFEdxRRvAwFt7lzHndwtoq7FHmTs3WyBlGdBpLFGbjwM9D1sYhM3/FpEHUZXA+E/mDdpyShfFAFCyFMRpck267x6xHrSzSfkJjuKAjQIIZO4h+vLXBlgSCrS3zKMPqiN+D9rlcKZri0e7K7shnfFcGeqhlTlYHiEdycToLZgeiTVrMfH8RwtIChlW8V4CtsjLMBL1NpGn+04nvkSsE0veDbSNGzcSHCVr+VjzlekCf+YYnOMboJeSDFoKuy3IRJeB9qYrS915gaiZLIbFdpbLXfzP6yw1MS+2PobdtKlfganiMxam/QPVmkNRyfFbRE0/tEqmfxclcWTRZCO/B/HtQNTHx7fRp5NjEA10Xb9IFlUHlxEJvePJvgY3nTG+U6EIqtwQkbaxzEc8= x-ms-exchange-transport-forked: True Content-Type: multipart/mixed; boundary="_002_VI1PR08MB547101F7AC1C7A531A4AB22BE0BA0VI1PR08MB5471eurp_" 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: DB5EUR03FT003.eop-EUR03.prod.protection.outlook.com X-MS-Office365-Filtering-Correlation-Id-Prvs: 2ed49b5b-8153-477e-284f-08d732d8f5f0 X-IsSubscribed: yes X-SW-Source: 2019-09/txt/msg00401.txt.bz2 --_002_VI1PR08MB547101F7AC1C7A531A4AB22BE0BA0VI1PR08MB5471eurp_ Content-Type: text/plain; charset="us-ascii" Content-ID: <869485E0C0B97E4BAD0EBEDDE6B0052C@eurprd08.prod.outlook.com> Content-Transfer-Encoding: quoted-printable Content-length: 7670 This flag can't be used at the same time as any of the other sanitizers. We add an equivalent flag to -static-libasan in -static-libhwasan to ensure static linking. gcc/ChangeLog: 2019-09-06 Matthew Malcomson * common.opt (static-libhwasan): New cli option. * config/gnu-user.h (LIBHWASAN_EARLY_SPEC): hwasan equivalent of asan command line flags. * flag-types.h (enum sanitize_code): SANITIZE_HWADDRESS member. * gcc.c (STATIC_LIBHWASAN_LIBS): New macro. (LIBHWASAN_SPEC): New macro. (LIBHWASAN_EARLY_SPEC): New macro. (SANITIZER_EARLY_SPEC): Update to include hwasan. (SANITIZER_SPEC): Update to include hwasan. (sanitize_spec_function): Use hwasan. * opts.c (finish_options): Add conflict between hwasan and tsan, also between hwasan and asan. (sanitizer_opts): New option structure for -fsanitize=3Dhwaddress. ############### Attachment also inlined for ease of reply ##########= ##### diff --git a/gcc/common.opt b/gcc/common.opt index d342c4f3749a39df086236162636f14f91bcd8a0..527aada305097b54c927fd094e3= ab82220459c2c 100644 --- a/gcc/common.opt +++ b/gcc/common.opt @@ -3273,6 +3273,9 @@ Driver static-libasan Driver =20 +static-libhwasan +Driver + static-libtsan Driver =20 diff --git a/gcc/config/gnu-user.h b/gcc/config/gnu-user.h index 055a4f0afeca4a6339fd156db1bf1daf1aae0994..1e4b921afb62f22892aee0ca37e= 96983112a8134 100644 --- a/gcc/config/gnu-user.h +++ b/gcc/config/gnu-user.h @@ -129,14 +129,18 @@ see the files COPYING3 and COPYING.RUNTIME respective= ly. If not, see /* Link -lasan early on the command line. For -static-libasan, don't link it for -shared link, the executable should be compiled with -static-lib= asan in that case, and for executable link with --{,no-}whole-archive around - it to force everything into the executable. And similarly for -ltsan - and -llsan. */ + it to force everything into the executable. And similarly for -ltsan, + -lhwasan, and -llsan. */ #if defined(HAVE_LD_STATIC_DYNAMIC) #undef LIBASAN_EARLY_SPEC #define LIBASAN_EARLY_SPEC "%{!shared:libasan_preinit%O%s} " \ "%{static-libasan:%{!shared:" \ LD_STATIC_OPTION " --whole-archive -lasan --no-whole-archive " \ LD_DYNAMIC_OPTION "}}%{!static-libasan:-lasan}" +#undef LIBHWASAN_EARLY_SPEC +#define LIBHWASAN_EARLY_SPEC "%{static-libhwasan:%{!shared:" \ + LD_STATIC_OPTION " --whole-archive -lhwasan --no-whole-archive " \ + LD_DYNAMIC_OPTION "}}%{!static-libhwasan:-lhwasan}" #undef LIBTSAN_EARLY_SPEC #define LIBTSAN_EARLY_SPEC "%{!shared:libtsan_preinit%O%s} " \ "%{static-libtsan:%{!shared:" \ diff --git a/gcc/flag-types.h b/gcc/flag-types.h index a2103282d469db31ad157a87572068d943061c8c..fcc3dd45862b1b64b38a13702f7= 840ba461aea20 100644 --- a/gcc/flag-types.h +++ b/gcc/flag-types.h @@ -256,6 +256,7 @@ enum sanitize_code { SANITIZE_BUILTIN =3D 1UL << 25, SANITIZE_POINTER_COMPARE =3D 1UL << 26, SANITIZE_POINTER_SUBTRACT =3D 1UL << 27, + SANITIZE_HWADDRESS =3D 1UL << 28, SANITIZE_SHIFT =3D SANITIZE_SHIFT_BASE | SANITIZE_SHIFT_EXPONENT, SANITIZE_UNDEFINED =3D SANITIZE_SHIFT | SANITIZE_DIVIDE | SANITIZE_UNREA= CHABLE | SANITIZE_VLA | SANITIZE_NULL | SANITIZE_RETURN diff --git a/gcc/gcc.c b/gcc/gcc.c index 7ebdf1f225b49769af3047c852ad3b72d6912fc0..c3d939af1a0fac87a8de95dff39= 60f2175aecf6d 100644 --- a/gcc/gcc.c +++ b/gcc/gcc.c @@ -708,6 +708,24 @@ proper position among the other output files. */ #define LIBASAN_EARLY_SPEC "" #endif =20 +#ifndef LIBHWASAN_SPEC +#define STATIC_LIBHWASAN_LIBS \ + " %{static-libhwasan|static:%:include(libsanitizer.spec)%(link_libhwasan= )}" +#ifdef LIBHWASAN_EARLY_SPEC +#define LIBHWASAN_SPEC STATIC_LIBHWASAN_LIBS +#elif defined(HAVE_LD_STATIC_DYNAMIC) +#define LIBHWASAN_SPEC "%{static-libhwasan:" LD_STATIC_OPTION \ + "} -lhwasan %{static-libhwasan:" LD_DYNAMIC_OPTION "}" \ + STATIC_LIBHWASAN_LIBS +#else +#define LIBHWASAN_SPEC "-lhwasan" STATIC_LIBHWASAN_LIBS +#endif +#endif + +#ifndef LIBHWASAN_EARLY_SPEC +#define LIBHWASAN_EARLY_SPEC "" +#endif + #ifndef LIBTSAN_SPEC #define STATIC_LIBTSAN_LIBS \ " %{static-libtsan|static:%:include(libsanitizer.spec)%(link_libtsan)}" @@ -982,6 +1000,7 @@ proper position among the other output files. */ #ifndef SANITIZER_EARLY_SPEC #define SANITIZER_EARLY_SPEC "\ %{!nostdlib:%{!r:%{!nodefaultlibs:%{%:sanitize(address):" LIBASAN_EARLY_SP= EC "} \ + %{%:sanitize(hwaddress):" LIBHWASAN_EARLY_SPEC "} \ %{%:sanitize(thread):" LIBTSAN_EARLY_SPEC "} \ %{%:sanitize(leak):" LIBLSAN_EARLY_SPEC "}}}}" #endif @@ -991,6 +1010,8 @@ proper position among the other output files. */ #define SANITIZER_SPEC "\ %{!nostdlib:%{!r:%{!nodefaultlibs:%{%:sanitize(address):" LIBASAN_SPEC "\ %{static:%ecannot specify -static with -fsanitize=3Daddress}}\ + %{%:sanitize(hwaddress):" LIBHWASAN_SPEC "\ + %{static:%ecannot specify -static with -fsanitize=3Dhwaddress}}\ %{%:sanitize(thread):" LIBTSAN_SPEC "\ %{static:%ecannot specify -static with -fsanitize=3Dthread}}\ %{%:sanitize(undefined):" LIBUBSAN_SPEC "}\ @@ -9387,6 +9408,8 @@ sanitize_spec_function (int argc, const char **argv) =20 if (strcmp (argv[0], "address") =3D=3D 0) return (flag_sanitize & SANITIZE_USER_ADDRESS) ? "" : NULL; + if (strcmp (argv[0], "hwaddress") =3D=3D 0) + return (flag_sanitize & SANITIZE_HWADDRESS) ? "" : NULL; if (strcmp (argv[0], "kernel-address") =3D=3D 0) return (flag_sanitize & SANITIZE_KERNEL_ADDRESS) ? "" : NULL; if (strcmp (argv[0], "thread") =3D=3D 0) diff --git a/gcc/opts.c b/gcc/opts.c index 879ab17c3620ca6e002b46f4f833ed2b4c0f5432..aedb1db6c00a139f575a3415590= 06d9c3871d233 100644 --- a/gcc/opts.c +++ b/gcc/opts.c @@ -1174,6 +1174,20 @@ finish_options (struct gcc_options *opts, struct gcc= _options *opts_set, error_at (loc, "%<-fsanitize=3Dleak%> is incompatible with %<-fsanitize=3Dthread%>= "); =20 + /* HWASan and ASan conflict with each other. */ + if ((opts->x_flag_sanitize & SANITIZE_ADDRESS) + && (opts->x_flag_sanitize & SANITIZE_HWADDRESS)) + error_at (loc, + "%<-fsanitize=3Dhwaddress%> is incompatible with both" + "%<-fsanitize=3Daddress%> and %<-fsanitize=3Dkernel-address%>"); + + /* And with TSan. */ + if ((opts->x_flag_sanitize & SANITIZE_HWADDRESS) + && (opts->x_flag_sanitize & SANITIZE_THREAD)) + error_at (loc, + "%<-fsanitize=3Dhwaddress%> is incompatible with " + "%<-fsanitize=3Dthread%>"); + /* Check error recovery for -fsanitize-recover option. */ for (int i =3D 0; sanitizer_opts[i].name !=3D NULL; ++i) if ((opts->x_flag_sanitize_recover & sanitizer_opts[i].flag) @@ -1193,7 +1207,8 @@ finish_options (struct gcc_options *opts, struct gcc_= options *opts_set, =20 /* Enable -fsanitize-address-use-after-scope if address sanitizer is enabled. */ - if ((opts->x_flag_sanitize & SANITIZE_USER_ADDRESS) + if (((opts->x_flag_sanitize & SANITIZE_USER_ADDRESS) + || (opts->x_flag_sanitize & SANITIZE_HWADDRESS)) && !opts_set->x_flag_sanitize_address_use_after_scope) opts->x_flag_sanitize_address_use_after_scope =3D true; =20 @@ -1752,6 +1767,8 @@ const struct sanitizer_opts_s sanitizer_opts[] =3D #define SANITIZER_OPT(name, flags, recover) \ { #name, flags, sizeof #name - 1, recover } SANITIZER_OPT (address, (SANITIZE_ADDRESS | SANITIZE_USER_ADDRESS), true= ), + // TODO Look into this properly + SANITIZER_OPT (hwaddress, (SANITIZE_HWADDRESS), false), SANITIZER_OPT (kernel-address, (SANITIZE_ADDRESS | SANITIZE_KERNEL_ADDRE= SS), true), SANITIZER_OPT (pointer-compare, SANITIZE_POINTER_COMPARE, true), --_002_VI1PR08MB547101F7AC1C7A531A4AB22BE0BA0VI1PR08MB5471eurp_ Content-Type: text/plain; name="hwasan-implementation05.patch" Content-Description: hwasan-implementation05.patch Content-Disposition: attachment; filename="hwasan-implementation05.patch"; size=6622; creation-date="Fri, 06 Sep 2019 14:46:11 GMT"; modification-date="Fri, 06 Sep 2019 14:46:11 GMT" Content-ID: Content-Transfer-Encoding: base64 Content-length: 8980 ZGlmZiAtLWdpdCBhL2djYy9jb21tb24ub3B0IGIvZ2NjL2NvbW1vbi5vcHQK aW5kZXggZDM0MmM0ZjM3NDlhMzlkZjA4NjIzNjE2MjYzNmYxNGY5MWJjZDhh MC4uNTI3YWFkYTMwNTA5N2I1NGM5MjdmZDA5NGUzYWI4MjIyMDQ1OWMyYyAx MDA2NDQKLS0tIGEvZ2NjL2NvbW1vbi5vcHQKKysrIGIvZ2NjL2NvbW1vbi5v cHQKQEAgLTMyNzMsNiArMzI3Myw5IEBAIERyaXZlcgogc3RhdGljLWxpYmFz YW4KIERyaXZlcgogCitzdGF0aWMtbGliaHdhc2FuCitEcml2ZXIKKwogc3Rh dGljLWxpYnRzYW4KIERyaXZlcgogCmRpZmYgLS1naXQgYS9nY2MvY29uZmln L2dudS11c2VyLmggYi9nY2MvY29uZmlnL2dudS11c2VyLmgKaW5kZXggMDU1 YTRmMGFmZWNhNGE2MzM5ZmQxNTZkYjFiZjFkYWYxYWFlMDk5NC4uMWU0Yjky MWFmYjYyZjIyODkyYWVlMGNhMzdlOTY5ODMxMTJhODEzNCAxMDA2NDQKLS0t IGEvZ2NjL2NvbmZpZy9nbnUtdXNlci5oCisrKyBiL2djYy9jb25maWcvZ251 LXVzZXIuaApAQCAtMTI5LDE0ICsxMjksMTggQEAgc2VlIHRoZSBmaWxlcyBD T1BZSU5HMyBhbmQgQ09QWUlORy5SVU5USU1FIHJlc3BlY3RpdmVseS4gIElm IG5vdCwgc2VlCiAvKiBMaW5rIC1sYXNhbiBlYXJseSBvbiB0aGUgY29tbWFu ZCBsaW5lLiAgRm9yIC1zdGF0aWMtbGliYXNhbiwgZG9uJ3QgbGluawogICAg aXQgZm9yIC1zaGFyZWQgbGluaywgdGhlIGV4ZWN1dGFibGUgc2hvdWxkIGJl IGNvbXBpbGVkIHdpdGggLXN0YXRpYy1saWJhc2FuCiAgICBpbiB0aGF0IGNh c2UsIGFuZCBmb3IgZXhlY3V0YWJsZSBsaW5rIHdpdGggLS17LG5vLX13aG9s ZS1hcmNoaXZlIGFyb3VuZAotICAgaXQgdG8gZm9yY2UgZXZlcnl0aGluZyBp bnRvIHRoZSBleGVjdXRhYmxlLiAgQW5kIHNpbWlsYXJseSBmb3IgLWx0c2Fu Ci0gICBhbmQgLWxsc2FuLiAgKi8KKyAgIGl0IHRvIGZvcmNlIGV2ZXJ5dGhp bmcgaW50byB0aGUgZXhlY3V0YWJsZS4gIEFuZCBzaW1pbGFybHkgZm9yIC1s dHNhbiwKKyAgIC1saHdhc2FuLCBhbmQgLWxsc2FuLiAgKi8KICNpZiBkZWZp bmVkKEhBVkVfTERfU1RBVElDX0RZTkFNSUMpCiAjdW5kZWYgTElCQVNBTl9F QVJMWV9TUEVDCiAjZGVmaW5lIExJQkFTQU5fRUFSTFlfU1BFQyAiJXshc2hh cmVkOmxpYmFzYW5fcHJlaW5pdCVPJXN9ICIgXAogICAiJXtzdGF0aWMtbGli YXNhbjoleyFzaGFyZWQ6IiBcCiAgIExEX1NUQVRJQ19PUFRJT04gIiAtLXdo b2xlLWFyY2hpdmUgLWxhc2FuIC0tbm8td2hvbGUtYXJjaGl2ZSAiIFwKICAg TERfRFlOQU1JQ19PUFRJT04gIn19JXshc3RhdGljLWxpYmFzYW46LWxhc2Fu fSIKKyN1bmRlZiBMSUJIV0FTQU5fRUFSTFlfU1BFQworI2RlZmluZSBMSUJI V0FTQU5fRUFSTFlfU1BFQyAiJXtzdGF0aWMtbGliaHdhc2FuOiV7IXNoYXJl ZDoiIFwKKyAgTERfU1RBVElDX09QVElPTiAiIC0td2hvbGUtYXJjaGl2ZSAt bGh3YXNhbiAtLW5vLXdob2xlLWFyY2hpdmUgIiBcCisgIExEX0RZTkFNSUNf T1BUSU9OICJ9fSV7IXN0YXRpYy1saWJod2FzYW46LWxod2FzYW59IgogI3Vu ZGVmIExJQlRTQU5fRUFSTFlfU1BFQwogI2RlZmluZSBMSUJUU0FOX0VBUkxZ X1NQRUMgIiV7IXNoYXJlZDpsaWJ0c2FuX3ByZWluaXQlTyVzfSAiIFwKICAg IiV7c3RhdGljLWxpYnRzYW46JXshc2hhcmVkOiIgXApkaWZmIC0tZ2l0IGEv Z2NjL2ZsYWctdHlwZXMuaCBiL2djYy9mbGFnLXR5cGVzLmgKaW5kZXggYTIx MDMyODJkNDY5ZGIzMWFkMTU3YTg3NTcyMDY4ZDk0MzA2MWM4Yy4uZmNjM2Rk NDU4NjJiMWI2NGIzOGExMzcwMmY3ODQwYmE0NjFhZWEyMCAxMDA2NDQKLS0t IGEvZ2NjL2ZsYWctdHlwZXMuaAorKysgYi9nY2MvZmxhZy10eXBlcy5oCkBA IC0yNTYsNiArMjU2LDcgQEAgZW51bSBzYW5pdGl6ZV9jb2RlIHsKICAgU0FO SVRJWkVfQlVJTFRJTiA9IDFVTCA8PCAyNSwKICAgU0FOSVRJWkVfUE9JTlRF Ul9DT01QQVJFID0gMVVMIDw8IDI2LAogICBTQU5JVElaRV9QT0lOVEVSX1NV QlRSQUNUID0gMVVMIDw8IDI3LAorICBTQU5JVElaRV9IV0FERFJFU1MgPSAx VUwgPDwgMjgsCiAgIFNBTklUSVpFX1NISUZUID0gU0FOSVRJWkVfU0hJRlRf QkFTRSB8IFNBTklUSVpFX1NISUZUX0VYUE9ORU5ULAogICBTQU5JVElaRV9V TkRFRklORUQgPSBTQU5JVElaRV9TSElGVCB8IFNBTklUSVpFX0RJVklERSB8 IFNBTklUSVpFX1VOUkVBQ0hBQkxFCiAJCSAgICAgICB8IFNBTklUSVpFX1ZM QSB8IFNBTklUSVpFX05VTEwgfCBTQU5JVElaRV9SRVRVUk4KZGlmZiAtLWdp dCBhL2djYy9nY2MuYyBiL2djYy9nY2MuYwppbmRleCA3ZWJkZjFmMjI1YjQ5 NzY5YWYzMDQ3Yzg1MmFkM2I3MmQ2OTEyZmMwLi5jM2Q5MzlhZjFhMGZhYzg3 YThkZTk1ZGZmMzk2MGYyMTc1YWVjZjZkIDEwMDY0NAotLS0gYS9nY2MvZ2Nj LmMKKysrIGIvZ2NjL2djYy5jCkBAIC03MDgsNiArNzA4LDI0IEBAIHByb3Bl ciBwb3NpdGlvbiBhbW9uZyB0aGUgb3RoZXIgb3V0cHV0IGZpbGVzLiAgKi8K ICNkZWZpbmUgTElCQVNBTl9FQVJMWV9TUEVDICIiCiAjZW5kaWYKIAorI2lm bmRlZiBMSUJIV0FTQU5fU1BFQworI2RlZmluZSBTVEFUSUNfTElCSFdBU0FO X0xJQlMgXAorICAiICV7c3RhdGljLWxpYmh3YXNhbnxzdGF0aWM6JTppbmNs dWRlKGxpYnNhbml0aXplci5zcGVjKSUobGlua19saWJod2FzYW4pfSIKKyNp ZmRlZiBMSUJIV0FTQU5fRUFSTFlfU1BFQworI2RlZmluZSBMSUJIV0FTQU5f U1BFQyBTVEFUSUNfTElCSFdBU0FOX0xJQlMKKyNlbGlmIGRlZmluZWQoSEFW RV9MRF9TVEFUSUNfRFlOQU1JQykKKyNkZWZpbmUgTElCSFdBU0FOX1NQRUMg IiV7c3RhdGljLWxpYmh3YXNhbjoiIExEX1NUQVRJQ19PUFRJT04gXAorCQkg ICAgICJ9IC1saHdhc2FuICV7c3RhdGljLWxpYmh3YXNhbjoiIExEX0RZTkFN SUNfT1BUSU9OICJ9IiBcCisJCSAgICAgU1RBVElDX0xJQkhXQVNBTl9MSUJT CisjZWxzZQorI2RlZmluZSBMSUJIV0FTQU5fU1BFQyAiLWxod2FzYW4iIFNU QVRJQ19MSUJIV0FTQU5fTElCUworI2VuZGlmCisjZW5kaWYKKworI2lmbmRl ZiBMSUJIV0FTQU5fRUFSTFlfU1BFQworI2RlZmluZSBMSUJIV0FTQU5fRUFS TFlfU1BFQyAiIgorI2VuZGlmCisKICNpZm5kZWYgTElCVFNBTl9TUEVDCiAj ZGVmaW5lIFNUQVRJQ19MSUJUU0FOX0xJQlMgXAogICAiICV7c3RhdGljLWxp YnRzYW58c3RhdGljOiU6aW5jbHVkZShsaWJzYW5pdGl6ZXIuc3BlYyklKGxp bmtfbGlidHNhbil9IgpAQCAtOTgyLDYgKzEwMDAsNyBAQCBwcm9wZXIgcG9z aXRpb24gYW1vbmcgdGhlIG90aGVyIG91dHB1dCBmaWxlcy4gICovCiAjaWZu ZGVmIFNBTklUSVpFUl9FQVJMWV9TUEVDCiAjZGVmaW5lIFNBTklUSVpFUl9F QVJMWV9TUEVDICJcCiAleyFub3N0ZGxpYjoleyFyOiV7IW5vZGVmYXVsdGxp YnM6JXslOnNhbml0aXplKGFkZHJlc3MpOiIgTElCQVNBTl9FQVJMWV9TUEVD ICJ9IFwKKyAgICAleyU6c2FuaXRpemUoaHdhZGRyZXNzKToiIExJQkhXQVNB Tl9FQVJMWV9TUEVDICJ9IFwKICAgICAleyU6c2FuaXRpemUodGhyZWFkKToi IExJQlRTQU5fRUFSTFlfU1BFQyAifSBcCiAgICAgJXslOnNhbml0aXplKGxl YWspOiIgTElCTFNBTl9FQVJMWV9TUEVDICJ9fX19IgogI2VuZGlmCkBAIC05 OTEsNiArMTAxMCw4IEBAIHByb3BlciBwb3NpdGlvbiBhbW9uZyB0aGUgb3Ro ZXIgb3V0cHV0IGZpbGVzLiAgKi8KICNkZWZpbmUgU0FOSVRJWkVSX1NQRUMg IlwKICV7IW5vc3RkbGliOiV7IXI6JXshbm9kZWZhdWx0bGliczoleyU6c2Fu aXRpemUoYWRkcmVzcyk6IiBMSUJBU0FOX1NQRUMgIlwKICAgICAle3N0YXRp YzolZWNhbm5vdCBzcGVjaWZ5IC1zdGF0aWMgd2l0aCAtZnNhbml0aXplPWFk ZHJlc3N9fVwKKyAgICAleyU6c2FuaXRpemUoaHdhZGRyZXNzKToiIExJQkhX QVNBTl9TUEVDICJcCisJJXtzdGF0aWM6JWVjYW5ub3Qgc3BlY2lmeSAtc3Rh dGljIHdpdGggLWZzYW5pdGl6ZT1od2FkZHJlc3N9fVwKICAgICAleyU6c2Fu aXRpemUodGhyZWFkKToiIExJQlRTQU5fU1BFQyAiXAogICAgICV7c3RhdGlj OiVlY2Fubm90IHNwZWNpZnkgLXN0YXRpYyB3aXRoIC1mc2FuaXRpemU9dGhy ZWFkfX1cCiAgICAgJXslOnNhbml0aXplKHVuZGVmaW5lZCk6IiBMSUJVQlNB Tl9TUEVDICJ9XApAQCAtOTM4Nyw2ICs5NDA4LDggQEAgc2FuaXRpemVfc3Bl Y19mdW5jdGlvbiAoaW50IGFyZ2MsIGNvbnN0IGNoYXIgKiphcmd2KQogCiAg IGlmIChzdHJjbXAgKGFyZ3ZbMF0sICJhZGRyZXNzIikgPT0gMCkKICAgICBy ZXR1cm4gKGZsYWdfc2FuaXRpemUgJiBTQU5JVElaRV9VU0VSX0FERFJFU1Mp ID8gIiIgOiBOVUxMOworICBpZiAoc3RyY21wIChhcmd2WzBdLCAiaHdhZGRy ZXNzIikgPT0gMCkKKyAgICByZXR1cm4gKGZsYWdfc2FuaXRpemUgJiBTQU5J VElaRV9IV0FERFJFU1MpID8gIiIgOiBOVUxMOwogICBpZiAoc3RyY21wIChh cmd2WzBdLCAia2VybmVsLWFkZHJlc3MiKSA9PSAwKQogICAgIHJldHVybiAo ZmxhZ19zYW5pdGl6ZSAmIFNBTklUSVpFX0tFUk5FTF9BRERSRVNTKSA/ICIi IDogTlVMTDsKICAgaWYgKHN0cmNtcCAoYXJndlswXSwgInRocmVhZCIpID09 IDApCmRpZmYgLS1naXQgYS9nY2Mvb3B0cy5jIGIvZ2NjL29wdHMuYwppbmRl eCA4NzlhYjE3YzM2MjBjYTZlMDAyYjQ2ZjRmODMzZWQyYjRjMGY1NDMyLi5h ZWRiMWRiNmMwMGExMzlmNTc1YTM0MTU1OTAwNmQ5YzM4NzFkMjMzIDEwMDY0 NAotLS0gYS9nY2Mvb3B0cy5jCisrKyBiL2djYy9vcHRzLmMKQEAgLTExNzQs NiArMTE3NCwyMCBAQCBmaW5pc2hfb3B0aW9ucyAoc3RydWN0IGdjY19vcHRp b25zICpvcHRzLCBzdHJ1Y3QgZ2NjX29wdGlvbnMgKm9wdHNfc2V0LAogICAg IGVycm9yX2F0IChsb2MsCiAJICAgICAgIiU8LWZzYW5pdGl6ZT1sZWFrJT4g aXMgaW5jb21wYXRpYmxlIHdpdGggJTwtZnNhbml0aXplPXRocmVhZCU+Iik7 CiAKKyAgLyogSFdBU2FuIGFuZCBBU2FuIGNvbmZsaWN0IHdpdGggZWFjaCBv dGhlci4gICovCisgIGlmICgob3B0cy0+eF9mbGFnX3Nhbml0aXplICYgU0FO SVRJWkVfQUREUkVTUykKKyAgICAgICYmIChvcHRzLT54X2ZsYWdfc2FuaXRp emUgJiBTQU5JVElaRV9IV0FERFJFU1MpKQorICAgIGVycm9yX2F0IChsb2Ms CisJICAgICAgIiU8LWZzYW5pdGl6ZT1od2FkZHJlc3MlPiBpcyBpbmNvbXBh dGlibGUgd2l0aCBib3RoIgorCSAgICAgICIlPC1mc2FuaXRpemU9YWRkcmVz cyU+IGFuZCAlPC1mc2FuaXRpemU9a2VybmVsLWFkZHJlc3MlPiIpOworCisg IC8qIEFuZCB3aXRoIFRTYW4uICAqLworICBpZiAoKG9wdHMtPnhfZmxhZ19z YW5pdGl6ZSAmIFNBTklUSVpFX0hXQUREUkVTUykKKyAgICAgICYmIChvcHRz LT54X2ZsYWdfc2FuaXRpemUgJiBTQU5JVElaRV9USFJFQUQpKQorICAgIGVy cm9yX2F0IChsb2MsCisJICAgICAgIiU8LWZzYW5pdGl6ZT1od2FkZHJlc3Ml PiBpcyBpbmNvbXBhdGlibGUgd2l0aCAiCisJICAgICAgIiU8LWZzYW5pdGl6 ZT10aHJlYWQlPiIpOworCiAgIC8qIENoZWNrIGVycm9yIHJlY292ZXJ5IGZv ciAtZnNhbml0aXplLXJlY292ZXIgb3B0aW9uLiAgKi8KICAgZm9yIChpbnQg aSA9IDA7IHNhbml0aXplcl9vcHRzW2ldLm5hbWUgIT0gTlVMTDsgKytpKQog ICAgIGlmICgob3B0cy0+eF9mbGFnX3Nhbml0aXplX3JlY292ZXIgJiBzYW5p dGl6ZXJfb3B0c1tpXS5mbGFnKQpAQCAtMTE5Myw3ICsxMjA3LDggQEAgZmlu aXNoX29wdGlvbnMgKHN0cnVjdCBnY2Nfb3B0aW9ucyAqb3B0cywgc3RydWN0 IGdjY19vcHRpb25zICpvcHRzX3NldCwKIAogICAvKiBFbmFibGUgLWZzYW5p dGl6ZS1hZGRyZXNzLXVzZS1hZnRlci1zY29wZSBpZiBhZGRyZXNzIHNhbml0 aXplciBpcwogICAgICBlbmFibGVkLiAgKi8KLSAgaWYgKChvcHRzLT54X2Zs YWdfc2FuaXRpemUgJiBTQU5JVElaRV9VU0VSX0FERFJFU1MpCisgIGlmICgo KG9wdHMtPnhfZmxhZ19zYW5pdGl6ZSAmIFNBTklUSVpFX1VTRVJfQUREUkVT UykKKyAgICAgICB8fCAob3B0cy0+eF9mbGFnX3Nhbml0aXplICYgU0FOSVRJ WkVfSFdBRERSRVNTKSkKICAgICAgICYmICFvcHRzX3NldC0+eF9mbGFnX3Nh bml0aXplX2FkZHJlc3NfdXNlX2FmdGVyX3Njb3BlKQogICAgIG9wdHMtPnhf ZmxhZ19zYW5pdGl6ZV9hZGRyZXNzX3VzZV9hZnRlcl9zY29wZSA9IHRydWU7 CiAKQEAgLTE3NTIsNiArMTc2Nyw4IEBAIGNvbnN0IHN0cnVjdCBzYW5pdGl6 ZXJfb3B0c19zIHNhbml0aXplcl9vcHRzW10gPQogI2RlZmluZSBTQU5JVEla RVJfT1BUKG5hbWUsIGZsYWdzLCByZWNvdmVyKSBcCiAgICAgeyAjbmFtZSwg ZmxhZ3MsIHNpemVvZiAjbmFtZSAtIDEsIHJlY292ZXIgfQogICBTQU5JVEla RVJfT1BUIChhZGRyZXNzLCAoU0FOSVRJWkVfQUREUkVTUyB8IFNBTklUSVpF X1VTRVJfQUREUkVTUyksIHRydWUpLAorICAvLyBUT0RPIExvb2sgaW50byB0 aGlzIHByb3Blcmx5CisgIFNBTklUSVpFUl9PUFQgKGh3YWRkcmVzcywgKFNB TklUSVpFX0hXQUREUkVTUyksIGZhbHNlKSwKICAgU0FOSVRJWkVSX09QVCAo a2VybmVsLWFkZHJlc3MsIChTQU5JVElaRV9BRERSRVNTIHwgU0FOSVRJWkVf S0VSTkVMX0FERFJFU1MpLAogCQkgdHJ1ZSksCiAgIFNBTklUSVpFUl9PUFQg KHBvaW50ZXItY29tcGFyZSwgU0FOSVRJWkVfUE9JTlRFUl9DT01QQVJFLCB0 cnVlKSwKCg== --_002_VI1PR08MB547101F7AC1C7A531A4AB22BE0BA0VI1PR08MB5471eurp_--