From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from NAM02-BN1-obe.outbound.protection.outlook.com (mail-bn1nam07on2097.outbound.protection.outlook.com [40.107.212.97]) by sourceware.org (Postfix) with ESMTPS id C9187385782E for ; Thu, 16 Sep 2021 09:26:08 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org C9187385782E ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Cw/7lTiCo8aZm6k7BtwmJDAFAcbnJzE3GFwA8phL1mHnBbPtGy7aQrg49nUFFLHSpLPkggfTWXUZeNBV3kOa+Q5Bqxh3bKw4p2c/emeaXUuJMQvaMqkt+X7d1788UjWO/nsXMrDoE5fQ+koZkh1LpEccbfAm3c9gG4RKJ2tPRFWcJLlc85UyDGKrBElbsdnjqxR2elsX/Jc9t/X2NhpUlKJPyO/aiCtJ10T2gyekNjOY1BEOmWwtdKUgGAMVM0QJC2HjRVjQShf6Poc0/8WL5lB7eY9en5MAw4rpI/NEe2ngI2fzu/ODmAfOtjbkw1Je2QmNTPczMSE8TPugXgcB4g== 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; bh=We9ymk3CnGKqix2hbELtlKj+ifoL/JqDiJ0rD6NFjmY=; b=lTlMrLzAYjIgHMPZMFGmEJ4lnlyjIRroFOtwXCaDcNmur5JPzysYtok7nw04Gd8onOxaIUf219XGFajnCpzGNWfRt+sDjhKbyzGPBdWqZjMnR4rAY6fxmPy3g0z0EVEWkNDMRPj77gttzGD7txr2mXkOyoeveFjga0gGpgy9q4xtzYRJff1ytVaF08ei/KkD5i3coEtRzxCEDQMCW0gT24AwWSydbEvPsxUlFK0z2Z4AORIH8Q20CYO9rirav8Zv6RxCvr0ZDulThz4taGznzy0tadlI17b+r7FNsjgHfq04UMhfJz6COf3H2xojazZ1y+z6p8lupmNblIe//qnrBg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=os.amperecomputing.com; dmarc=pass action=none header.from=os.amperecomputing.com; dkim=pass header.d=os.amperecomputing.com; arc=none Received: from SN6PR01MB4958.prod.exchangelabs.com (2603:10b6:805:c1::15) by SN6PR01MB4607.prod.exchangelabs.com (2603:10b6:805:d0::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4500.16; Thu, 16 Sep 2021 09:26:08 +0000 Received: from SN6PR01MB4958.prod.exchangelabs.com ([fe80::3ce8:b43d:e19b:e1af]) by SN6PR01MB4958.prod.exchangelabs.com ([fe80::3ce8:b43d:e19b:e1af%3]) with mapi id 15.20.4523.015; Thu, 16 Sep 2021 09:26:08 +0000 From: Feng Xue OS To: Jan Hubicka , "mjambor@suse.cz" , Richard Biener , "gcc-patches@gcc.gnu.org" Subject: [PATCH/RFC 2/2] WPD: Enable whole program devirtualization at LTRANS Thread-Topic: [PATCH/RFC 2/2] WPD: Enable whole program devirtualization at LTRANS Thread-Index: AQHXqtstc2tmvlAGAkC/mchfh4NdjQ== Date: Thu, 16 Sep 2021 09:26:08 +0000 Message-ID: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: yes X-MS-TNEF-Correlator: suggested_attachment_session_id: cafa1751-a977-91b5-b562-287285f59582 x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 2d161c5c-28cd-4647-5071-08d978f403db x-ms-traffictypediagnostic: SN6PR01MB4607: x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:10000; x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: 6l2s0GzMADl590HwY7DRNHfq9vsRqGcLivdgYDu/gyAveNyrsJdGMemsw7CIlEWNTtHezkJI05eiSsl29623ClyBQA6eNRQ+BKtTJIEzgo8QExpxN7W9ekFMp6JaL2/xNqbjJm5fT223S81CopA2aPJlLpIeYWymRsQhu2FKHWJKy221PSg2rtgOHJUTr6Tka1yPcAyxdySee1d9panmvW/hOWdCxD0z5ykp7wYNOqSQpGy/6C9IpPybjs1B/kK6FU3Hi/Qu1bSbIMtah43BaRVhu8ts/s66LUUvQ4rnXBpJYslHOlf3EMYP6lnsRJAUA2lfw4y2q27JOTygQ+g5W9KYx50EVSSC4C9wINSK8zYlMgCyD/0pZTUCk2ywsgdoNfaB2vgen7QhdLUGhvBmVTkSaoYKdMMcQcL9gJGMSjhbxp1dez3PxM1jw7OIqacIgDCof5XAw5PKgYCvIT3Rx+sWDQUVOSCNXh8UQCDtjllKUNhAHwS7wek9twSKZD5qOKXV/0LwHpDd79TQVRq43d1LLVe0tkC+SNh0/Zl0FqR2adsxWUA1zbTZ2/LbBsRgxk5TqRAHjVOGGeDSZcnhMINiTNlj2Rcv85eGkR50DG+3EAyWbMEiGDggFGrkjhNd5XvauS5KuxClcuwwlHS0omJQwb+J2ybtn++0N5xGw5pVpy1I4en/Wdg3+1ZvbktyXshT7zyTZ8U6R0jedZ7jxw== x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:SN6PR01MB4958.prod.exchangelabs.com; PTR:; CAT:NONE; SFS:(4636009)(346002)(39850400004)(376002)(136003)(396003)(366004)(26005)(478600001)(71200400001)(38070700005)(66476007)(186003)(122000001)(5660300002)(33656002)(316002)(99936003)(6506007)(52536014)(86362001)(38100700002)(64756008)(66556008)(66446008)(8676002)(83380400001)(66616009)(55016002)(9686003)(66946007)(110136005)(76116006)(91956017)(2906002)(107886003)(7696005)(8936002)(4326008); DIR:OUT; SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?iso-8859-1?Q?ixY+N9jJRkkS9y+y4I5T5+LuHSyuNejzxl8AHD/itMi8Fh8C6kVwVxnGDZ?= =?iso-8859-1?Q?EIRy+6N/oK7WupwlLISoZ/mygRCa1VlJRDBBOQE9OtySa7i6TH2RwrfSrH?= =?iso-8859-1?Q?70aM86iKA4lRqdOnvmBU6TpYJC12UUwaPj3AKhDsSHTeOcmLB/xEZbuwSE?= =?iso-8859-1?Q?Y4VVSv56NPeDwTTSDPyjr32pdBdqPsACm6JPIzHdyzW81x7uZFkKWBZVWI?= =?iso-8859-1?Q?on2Bh+Vz1/0+tlTw4dw0HW1zBehTQssz7Bn+eQsF6e4iyb5KplA3SUHehv?= =?iso-8859-1?Q?rRyOxY4sU0ma/0AwU6Zpa7Gk+vyXotTXH5UxDEG5+AjYyfSI2vOVGQCS+5?= =?iso-8859-1?Q?vWZxwu7bDY7gwo91uQQXot3vZaAKP2eS/Dp734ALfPk7MOtsbUmWIBVSRg?= =?iso-8859-1?Q?cmbnkmJkR0NRo2WgKGrJ1L4laIEU6FiXb9jCQGJv2PYFERVthD+D/A9N69?= =?iso-8859-1?Q?l3e/o4Ve45m+DVxkBFmW5UQupRt5ea0PbpFfwK6xAxUI8WCcgbQ33IODLY?= =?iso-8859-1?Q?1/tGYt/7u0wcNCRYM05aDScuCSdTqamOn3kAjR8LMwZxSx7w+WHKr0YqrL?= =?iso-8859-1?Q?NrdAOXMyHE19NK3uk3KFqPLImVlv/oRzw5sodZOiUz3j0T8+Z3Hn8dGdSc?= =?iso-8859-1?Q?u2ydpFjpbC/y0QfPaaxmafGJNd1YQKz8RHWVOpIII5pqJaQpI0m6sezHaW?= =?iso-8859-1?Q?5SQFzTQlMZF7nWqGinHpO/wi8YXN3sx1/8l+QdXplyiOQCPN0m1lpOJ/WA?= =?iso-8859-1?Q?jvPSmgYjsFMcw/TWMp4vGjdxWqpaDUin+AF8Dd5IRXjjtNtJYTkyb31xRZ?= =?iso-8859-1?Q?qTvV1nKMLIY1BnH6YsVpk9kZMDVWXAxx1T11HHFvHS6Jd+xdf12hTphkyz?= =?iso-8859-1?Q?AWh3To9wuzGf6wicml9+xqxrbNIPzw4DRb4zKiPn0fXI+eGwuulBLkbQHt?= =?iso-8859-1?Q?nOTpVn12xmCDE6bVPjiw7pdQQ+vPiVD98yfGoj7KZeWxQ28xJVcfmQdG9/?= =?iso-8859-1?Q?thRo4agP4g+sKxLj/opiyzKpe28E4CX+JSIymaMXU8oEmXs03pGSuIEz1B?= =?iso-8859-1?Q?rc114HIvopJkx+ublHvzOr4whNszPXy0/Ch9U4UoWt/PbJkqhPSEpdyagq?= =?iso-8859-1?Q?5/p4Mb5eqS+7tucOdHpLNWXxCyT7Ncp/nxuH2uqo0DM26m+30F3j2i8Qn+?= =?iso-8859-1?Q?Qj/zdsH5piab11zk3KWMpqw7PpGFr1R9QmrKugNXW+islWWFDDxohJMfvw?= =?iso-8859-1?Q?/K11597/n4LFAWGcOb7bkiouZG4HyVnzh6Ny6NQwiqPo/lqx/9wm12OhQp?= =?iso-8859-1?Q?OG+AsIlEGjaxABE1pvrxCAd6NGViFI5idDhrnhdyYnkqbOQ=3D?= Content-Type: multipart/mixed; boundary="_002_SN6PR01MB4958F6ADBBACC864FFD0B896F7DC9SN6PR01MB4958prod_" MIME-Version: 1.0 X-OriginatorOrg: os.amperecomputing.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: SN6PR01MB4958.prod.exchangelabs.com X-MS-Exchange-CrossTenant-Network-Message-Id: 2d161c5c-28cd-4647-5071-08d978f403db X-MS-Exchange-CrossTenant-originalarrivaltime: 16 Sep 2021 09:26:08.0864 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 3bc2b170-fd94-476d-b0ce-4229bdc904a7 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: I8uLQO0MTNRMK9hya0cMnAyb7SYOEiJLoTNcwFIgCt/NtWQKECwBpjOvr3wOeEFp1YB14sulBmrAynYH9RNqfMjUS1deRhED/Z3yWkT/DmE= X-MS-Exchange-Transport-CrossTenantHeadersStamped: SN6PR01MB4607 X-Spam-Status: No, score=-11.0 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, GIT_PATCH_0, RCVD_IN_DNSWL_NONE, RCVD_IN_MSPIKE_H2, SPF_HELO_PASS, SPF_PASS, TXREP autolearn=ham autolearn_force=no version=3.4.4 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on server2.sourceware.org X-BeenThere: gcc-patches@gcc.gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gcc-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 16 Sep 2021 09:26:11 -0000 --_002_SN6PR01MB4958F6ADBBACC864FFD0B896F7DC9SN6PR01MB4958prod_ Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable This patch is to extend applicability of full devirtualization to LTRANS s= tage.=0A= Normally, whole program assumption would not hold when WPA splits=0A= whole compilation into more than one LTRANS partitions. To avoid informatio= n=0A= lost for WPD at LTRANS, we will record all vtable nodes and related member= =0A= function references into each partition.=0A= =0A= Bootstrapped/regtested on x86_64-linux and aarch64-linux.=0A= =0A= Thanks,=0A= Feng=0A= =0A= ----=0A= 2021-09-07 Feng Xue =0A= =0A= gcc/=0A= * tree.h (TYPE_CXX_LOCAL): New macro for type using=0A= base.nothrow_flag.=0A= * tree-core.h (tree_base): Update comment on using=0A= base.nothrow_flag to represent TYPE_CXX_LOCAL.=0A= * ipa-devirt.c (odr_type_d::whole_program_local): Removed.=0A= (odr_type_d::whole_program_local_p): Check TYPE_CXX_LOCAL flag=0A= on type, and enable WPD at LTRANS when flag_devirtualize_fully=0A= is true.=0A= (get_odr_type): Remove setting whole_program_local flag on type.=0A= (identify_whole_program_local_types): Replace whole_program_local= =0A= in odr_type_d by TYPE_CXX_LOCAL on type.=0A= (maybe_record_node): Enable WPD at LTRANS when=0A= flag_devirtualize_fully is true.=0A= * ipa.c (can_remove_vtable_if_no_refs_p): Retain vtables at LTRANS= =0A= stage under full devirtualization.=0A= * lto-cgraph.c (compute_ltrans_boundary): Add all defined vtables= =0A= to boundary of each LTRANS partition.=0A= * lto-streamer-out.c (get_symbol_initial_value): Streaming out=0A= initial value of vtable even its class is optimized away.=0A= * lto-lang.c (lto_post_options): Disable full devirtualization=0A= if flag_ltrans_devirtualize is false.=0A= * tree-streamer-in.c (unpack_ts_base_value_fields): unpack value=0A= of TYPE_CXX_LOCAL for a type from streaming data.=0A= * tree-streamer-out.c (pack_ts_base_value_fields): pack value=0A= ofTYPE_CXX_LOCAL for a type into streaming data.=0A= ---=0A= --_002_SN6PR01MB4958F6ADBBACC864FFD0B896F7DC9SN6PR01MB4958prod_ Content-Type: text/x-patch; name="0002-WPD-Enable-whole-program-devirtualization-at-LTRANS.patch" Content-Description: 0002-WPD-Enable-whole-program-devirtualization-at-LTRANS.patch Content-Disposition: attachment; filename="0002-WPD-Enable-whole-program-devirtualization-at-LTRANS.patch"; size=11190; creation-date="Thu, 16 Sep 2021 09:21:23 GMT"; modification-date="Thu, 16 Sep 2021 09:21:23 GMT" Content-Transfer-Encoding: base64 RnJvbSAzYWYzMmI5YWFkZmYyM2QzMzk3NTBhZGE0NTQxMzg2YjNkMzU4ZWRjIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBGZW5nIFh1ZSA8Znh1ZUBvcy5hbXBlcmVjb21wdXRpbmcuY29t PgpEYXRlOiBNb24sIDYgU2VwIDIwMjEgMjA6MzQ6NTAgKzA4MDAKU3ViamVjdDogW1BBVENIIDIv Ml0gV1BEOiBFbmFibGUgd2hvbGUgcHJvZ3JhbSBkZXZpcnR1YWxpemF0aW9uIGF0IExUUkFOUwoK V2hvbGUgcHJvZ3JhbSBhc3N1bXB0aW9uIHdvdWxkIG5vdCBob2xkIHdoZW4gV1BBIHNwbGl0cyB3 aG9sZSBjb21waWxhdGlvbgppbnRvIG1vcmUgdGhhbiBvbmUgTFRSQU5TIHBhcnRpdGlvbnMuIFRv IGF2b2lkIGluZm9ybWF0aW9uIGxvc3QgZm9yIFdQRAphdCBMVFJBTlMsIHdlIHdpbGwgcmVjb3Jk IGFsbCB2dGFibGUgbm9kZXMgYW5kIHJlbGF0ZWQgbWVtYmVyIGZ1bmN0aW9uCnJlZmVyZW5jZXMg aW50byBlYWNoIHBhcnRpdGlvbi4KCjIwMjEtMDktMDcgIEZlbmcgWHVlICA8Znh1ZUBvcy5hbXBl cmVjb21wdXRpbmcuY29tPgoKZ2NjLwoJKiB0cmVlLmggKFRZUEVfQ1hYX0xPQ0FMKTogTmV3IG1h Y3JvIGZvciB0eXBlIHVzaW5nCgliYXNlLm5vdGhyb3dfZmxhZy4KICAgICAgIAkqIHRyZWUtY29y ZS5oICh0cmVlX2Jhc2UpOiBVcGRhdGUgY29tbWVudCBvbiB1c2luZwoJYmFzZS5ub3Rocm93X2Zs YWcgdG8gcmVwcmVzZW50IFRZUEVfQ1hYX0xPQ0FMLgoJKiBpcGEtZGV2aXJ0LmMgKG9kcl90eXBl X2Q6Ondob2xlX3Byb2dyYW1fbG9jYWwpOiBSZW1vdmVkLgogICAgICAgIChvZHJfdHlwZV9kOjp3 aG9sZV9wcm9ncmFtX2xvY2FsX3ApOiBDaGVjayBUWVBFX0NYWF9MT0NBTCBmbGFnCglvbiB0eXBl LCBhbmQgZW5hYmxlIFdQRCBhdCBMVFJBTlMgd2hlbiBmbGFnX2RldmlydHVhbGl6ZV9mdWxseQoJ aXMgdHJ1ZS4KICAgICAgICAoZ2V0X29kcl90eXBlKTogUmVtb3ZlIHNldHRpbmcgd2hvbGVfcHJv Z3JhbV9sb2NhbCBmbGFnIG9uIHR5cGUuCiAgICAgICAgKGlkZW50aWZ5X3dob2xlX3Byb2dyYW1f bG9jYWxfdHlwZXMpOiBSZXBsYWNlIHdob2xlX3Byb2dyYW1fbG9jYWwKCWluIG9kcl90eXBlX2Qg YnkgVFlQRV9DWFhfTE9DQUwgb24gdHlwZS4KICAgICAgICAobWF5YmVfcmVjb3JkX25vZGUpOiBF bmFibGUgV1BEIGF0IExUUkFOUyB3aGVuCglmbGFnX2RldmlydHVhbGl6ZV9mdWxseQlpcyB0cnVl LgogICAgICAgICogaXBhLmMgKGNhbl9yZW1vdmVfdnRhYmxlX2lmX25vX3JlZnNfcCk6IFJldGFp biB2dGFibGVzIGF0IExUUkFOUwoJc3RhZ2UgdW5kZXIgZnVsbCBkZXZpcnR1YWxpemF0aW9uLgog ICAgICAgICogbHRvLWNncmFwaC5jIChjb21wdXRlX2x0cmFuc19ib3VuZGFyeSk6IEFkZCBhbGwg ZGVmaW5lZCB2dGFibGVzCgl0byBib3VuZGFyeSBvZiBlYWNoIExUUkFOUyBwYXJ0aXRpb24uCgkq IGx0by1zdHJlYW1lci1vdXQuYyAoZ2V0X3N5bWJvbF9pbml0aWFsX3ZhbHVlKTogU3RyZWFtaW5n IG91dAoJaW5pdGlhbAl2YWx1ZSBvZiB2dGFibGUgZXZlbiBpdHMgY2xhc3MgaXMgb3B0aW1pemVk IGF3YXkuCgkqIGx0by1sYW5nLmMgKGx0b19wb3N0X29wdGlvbnMpOiBEaXNhYmxlIGZ1bGwgZGV2 aXJ0dWFsaXphdGlvbgoJaWYgZmxhZ19sdHJhbnNfZGV2aXJ0dWFsaXplIGlzIGZhbHNlLgoJKiB0 cmVlLXN0cmVhbWVyLWluLmMgKHVucGFja190c19iYXNlX3ZhbHVlX2ZpZWxkcyk6IHVucGFjayB2 YWx1ZQoJb2YgVFlQRV9DWFhfTE9DQUwgZm9yIGEgdHlwZSBmcm9tIHN0cmVhbWluZyBkYXRhLgoJ KiB0cmVlLXN0cmVhbWVyLW91dC5jIChwYWNrX3RzX2Jhc2VfdmFsdWVfZmllbGRzKTogcGFjayB2 YWx1ZQoJb2ZUWVBFX0NYWF9MT0NBTCBmb3IgYSB0eXBlIGludG8gc3RyZWFtaW5nIGRhdGEuCi0t LQogZ2NjL2lwYS1kZXZpcnQuYyAgICAgICAgfCAyOSArKysrKysrKysrKysrKysrKystLS0tLS0t LS0tLQogZ2NjL2lwYS5jICAgICAgICAgICAgICAgfCAgNyArKysrKystCiBnY2MvbHRvLWNncmFw aC5jICAgICAgICB8IDE4ICsrKysrKysrKysrKysrKysrKwogZ2NjL2x0by1zdHJlYW1lci1vdXQu YyAgfCAxMiArKysrKysrKysrKy0KIGdjYy9sdG8vbHRvLWxhbmcuYyAgICAgIHwgIDYgKysrKysr CiBnY2MvdHJlZS1jb3JlLmggICAgICAgICB8ICAzICsrKwogZ2NjL3RyZWUtc3RyZWFtZXItaW4u YyAgfCAxMSArKysrKysrKy0tLQogZ2NjL3RyZWUtc3RyZWFtZXItb3V0LmMgfCAxMSArKysrKysr Ky0tLQogZ2NjL3RyZWUuaCAgICAgICAgICAgICAgfCAgNSArKysrKwogOSBmaWxlcyBjaGFuZ2Vk LCA4MyBpbnNlcnRpb25zKCspLCAxOSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9nY2MvaXBh LWRldmlydC5jIGIvZ2NjL2lwYS1kZXZpcnQuYwppbmRleCBmY2IwOTdkNzE1Ni4uNjVlOWViYmZi NTkgMTAwNjQ0Ci0tLSBhL2djYy9pcGEtZGV2aXJ0LmMKKysrIGIvZ2NjL2lwYS1kZXZpcnQuYwpA QCAtMjE2LDggKzIxNiw2IEBAIHN0cnVjdCBHVFkoKCkpIG9kcl90eXBlX2QKICAgaW50IGlkOwog ICAvKiBJcyBpdCBpbiBhbm9ueW1vdXMgbmFtZXNwYWNlPyAqLwogICBib29sIGFub255bW91c19u YW1lc3BhY2U7Ci0gIC8qIFNldCB3aGVuIHR5cGUgaXMgbm90IHVzZWQgb3V0c2lkZSBvZiBwcm9n cmFtLiAgKi8KLSAgYm9vbCB3aG9sZV9wcm9ncmFtX2xvY2FsOwogICAvKiBEaWQgd2UgcmVwb3J0 IE9EUiB2aW9sYXRpb24gaGVyZT8gICovCiAgIGJvb2wgb2RyX3Zpb2xhdGVkOwogICAvKiBTZXQg d2hlbiB2aXJ0dWFsIHRhYmxlIHdpdGhvdXQgUlRUSSBwcmV2YWlsZWQgdGFibGUgd2l0aC4gICov CkBAIC0yOTAsMTAgKzI4OCwxOCBAQCBnZXRfdHlwZV92dGFibGUgKHRyZWUgdHlwZSkKIGJvb2wK IG9kcl90eXBlX2Q6Ondob2xlX3Byb2dyYW1fbG9jYWxfcCAoKQogewotICBpZiAoZmxhZ19sdHJh bnMpCisgIGlmIChmbGFnX2x0cmFucyAmJiAhZmxhZ19kZXZpcnR1YWxpemVfZnVsbHkpCiAgICAg cmV0dXJuIGZhbHNlOwogCi0gIHJldHVybiB3aG9sZV9wcm9ncmFtX2xvY2FsOworICBpZiAoaW5f bHRvX3ApCisgICAgcmV0dXJuIFRZUEVfQ1hYX0xPQ0FMICh0eXBlKTsKKworICAvKiBBbHRob3Vn aCBhIGxvY2FsIGNsYXNzIGlzIGFsd2F5cyBjb25zaWRlcmVkIGFzIHdob2xlIHByb2dyYW0gbG9j YWwgaW4KKyAgICAgTEdFTiBzdGFnZSwgYnV0IG1heSBub3QgaW4gTFRPIHN0YWdlIGlmIG11bHRp cGxlIGR1cGxpY2F0ZWQgcHJpbWFyeQorICAgICB2dGFibGVzIGFyZSBhdHRhY2hlZCB0byB0aGUg Y2xhc3MgZHVlIHRvIEMrKyBwcml2YXRpemluZyB2aWEgLWZuby13ZWFrLgorICAgICBUaHVzLCB3 ZSBjYW4gbm90IHNldCBUWVBFX0NYWF9MT0NBTCBmbGFnIGZvciBsb2NhbCBjbGFzcyBhdCBMR0VO IHN0YWdlCisgICAgIHdoZW4gYnVpbGRpbmcgT1JEIHR5cGUuICAqLworICByZXR1cm4gYW5vbnlt b3VzX25hbWVzcGFjZSB8fCBkZWNsX2Z1bmN0aW9uX2NvbnRleHQgKFRZUEVfTkFNRSAodHlwZSkp OwogfQogCiAvKiBSZXR1cm4gVFJVRSBpZiBPRFIgdHlwZSBtYXkgaGF2ZSBhbnkgaW5zdGFuY2Uu ICAqLwpAQCAtMjAwNywxMSArMjAxMyw2IEBAIGdldF9vZHJfdHlwZSAodHJlZSB0eXBlLCBib29s IGluc2VydCkKICAgICAgIGVsc2UKIAl2YWwtPmFub255bW91c19uYW1lc3BhY2UgPSAwOwogCi0g ICAgICBpZiAoIWluX2x0b19wCi0JICAmJiAodmFsLT5hbm9ueW1vdXNfbmFtZXNwYWNlCi0JICAg ICAgfHwgZGVjbF9mdW5jdGlvbl9jb250ZXh0IChUWVBFX05BTUUgKHR5cGUpKSkpCi0JdmFsLT53 aG9sZV9wcm9ncmFtX2xvY2FsID0gdHJ1ZTsKLQogICAgICAgYnVpbGRfYmFzZXMgPSBDT01QTEVU RV9UWVBFX1AgKHZhbC0+dHlwZSk7CiAgICAgICBpbnNlcnRfdG9fb2RyX2FycmF5ID0gdHJ1ZTsK ICAgICAgICpzbG90ID0gdmFsOwpAQCAtMjYwMiw5ICsyNjAzLDE1IEBAIGlkZW50aWZ5X3dob2xl X3Byb2dyYW1fbG9jYWxfdHlwZXMgKHZvaWQpCiAKIAkgIGlmIChtdWx0aV92dGFibGVfcCkKIAkg ICAgY29udGludWU7CisKKwkgIC8qIE1hcmsgYWxsIGVxdWl2YWxlbnQgdHlwZXMgaW4gdGhlIE9E UiB0eXBlIGFzIHdob2xlIHByb2dyYW0gbG9jYWwsCisJICAgICBiZWNhdXNlIHJlcHJlc2VudGF0 aXZlIHR5cGUgb2YgdGhlIE9EUiB0eXBlIGF0IExUUkFOUyBtaWdodCBub3QKKwkgICAgIGJlIHRo ZSBvbmUgYXQgV1BBLiAgKi8KKwkgIEZPUl9FQUNIX1ZFQ19FTFQgKCoodHlwZS0+dHlwZXMpLCBp LCBlcXVpdl90eXBlKQorCSAgICBUWVBFX0NYWF9MT0NBTCAoZXF1aXZfdHlwZSkgPSAxOwogCX0K IAotICAgICAgdHlwZS0+d2hvbGVfcHJvZ3JhbV9sb2NhbCA9IHRydWU7CisgICAgICBUWVBFX0NY WF9MT0NBTCAodHlwZS0+dHlwZSkgPSAxOwogICAgIH0KIAogICBkZWxldGUgbm9fcnR0aV9maWxl czsKQEAgLTI3MjEsNyArMjcyOCw3IEBAIG1heWJlX3JlY29yZF9ub2RlICh2ZWMgPGNncmFwaF9u b2RlICo+ICZub2RlcywKICAgICAgQ3VycmVudGx5IHdlIGlnbm9yZSB0aGVzZSBmdW5jdGlvbnMg aW4gc3BlY3VsYXRpdmUgZGV2aXJ0dWFsaXphdGlvbi4KICAgICAgPz8/IE1heWJlIGl0IHdvdWxk IG1ha2Ugc2Vuc2UgdG8gYmUgbW9yZSBhZ2dyZXNzaXZlIGZvciBMVE8gZXZlbgogICAgICBlbHNl d2hlcmUuICAqLwotICBpZiAoIWZsYWdfbHRyYW5zCisgIGlmICgoIWZsYWdfbHRyYW5zIHx8IGZs YWdfZGV2aXJ0dWFsaXplX2Z1bGx5KQogICAgICAgJiYgIXB1cmVfdmlydHVhbAogICAgICAgJiYg dHlwZV9pbl9hbm9ueW1vdXNfbmFtZXNwYWNlX3AgKERFQ0xfQ09OVEVYVCAodGFyZ2V0KSkKICAg ICAgICYmICghdGFyZ2V0X25vZGUKZGlmZiAtLWdpdCBhL2djYy9pcGEuYyBiL2djYy9pcGEuYwpp bmRleCA2ZTIwMGE5MDZiNS4uNTJkNmE5ZTYzYmUgMTAwNjQ0Ci0tLSBhL2djYy9pcGEuYworKysg Yi9nY2MvaXBhLmMKQEAgLTI2OCw3ICsyNjgsNyBAQCBjYW5fcmVtb3ZlX3Z0YWJsZV9pZl9ub19y ZWZzX3AgKHZhcnBvb2xfbm9kZSAqdm5vZGUpCiAgIGlmICghZmxhZ19kZXZpcnR1YWxpemVfZnVs bHkpCiAgICAgcmV0dXJuIHRydWU7CiAKLSAgaWYgKERFQ0xfRVhURVJOQUwgKHZub2RlLT5kZWNs KSkKKyAgaWYgKERFQ0xfRVhURVJOQUwgKHZub2RlLT5kZWNsKSAmJiAhdm5vZGUtPmluX290aGVy X3BhcnRpdGlvbikKICAgICByZXR1cm4gdHJ1ZTsKIAogICAvKiBXZSB3aWxsIGZvcmNlIGdlbmVy YXRpbmcgdnRhYmxlcyBpbiBMR0VOIHN0YWdlIGV2ZW4gdGhleSBhcmUgInVudXNlZCIsCkBAIC0y NzYsNiArMjc2LDExIEBAIGNhbl9yZW1vdmVfdnRhYmxlX2lmX25vX3JlZnNfcCAodmFycG9vbF9u b2RlICp2bm9kZSkKICAgaWYgKCFpbl9sdG9fcCAmJiBmbGFnX2dlbmVyYXRlX2x0bykKICAgICBy ZXR1cm4gZmFsc2U7CiAKKyAgLyogQWxsIHZ0YWJsZXMgc2VlbiBhdCBMVFJBTlMgc3RhZ2UgYXJl IHJlc3VsdCBvZiBkZWFkIGNsYXNzIGVsaW1pbmF0aW9uCisgICAgIGF0IFdQQSwgbm8gbmVlZCB0 byBwcnVuZSB0aGVtIGZ1cnRoZXIuICAqLworICBpZiAoZmxhZ19sdHJhbnMpCisgICAgcmV0dXJu IGZhbHNlOworCiAgIHJldHVybiB0cnVlOwogfQogCmRpZmYgLS1naXQgYS9nY2MvbHRvLWNncmFw aC5jIGIvZ2NjL2x0by1jZ3JhcGguYwppbmRleCA3YzNlMjc2YThlYS4uMTJjODJlZWJjM2YgMTAw NjQ0Ci0tLSBhL2djYy9sdG8tY2dyYXBoLmMKKysrIGIvZ2NjL2x0by1jZ3JhcGguYwpAQCAtODU5 LDYgKzg1OSwyNCBAQCBjb21wdXRlX2x0cmFuc19ib3VuZGFyeSAobHRvX3N5bXRhYl9lbmNvZGVy X3QgaW5fZW5jb2RlcikKICAgICAgIGx0b19zZXRfc3ltdGFiX2VuY29kZXJfZW5jb2RlX2luaXRp YWxpemVyIChlbmNvZGVyLCB2bm9kZSk7CiAgICAgICBjcmVhdGVfcmVmZXJlbmNlcyAoZW5jb2Rl ciwgdm5vZGUpOwogICAgIH0KKworICAvKiBBZGQgYWxsIGRlZmluZWQgdnRhYmxlcyB0byBzdHJl YW1pbmcgZW5jb2Rlciwgc28gdGhhdCB3ZSBjb3VsZAorICAgICByZWNvbnN0cnVjdCB3aG9sZSB0 eXBlIGluaGVyaXRhbmNlIGdyYXBoIGluIExUUkFOUyBhcyB3aGF0IGl0IHdhcyBpbgorICAgICBX UEEgdG8gZW5hYmxlIGxhdGUgZnVsbCBkZXZpcnR1YWxpemF0aW9uLgorCisgICAgIFRPRE86IEZv ciBhIHBhcnRpdGlvbiwgb25seSBuZWVkIHRvIGVuY29kZSBhIHN1YnNldCBvZiB2dGFibGVzLCBu b3QKKyAgICAgYWxsIG9mIHRoZW0uICAqLworICBpZiAoZmxhZ19kZXZpcnR1YWxpemVfZnVsbHkg JiYgZmxhZ19sdHJhbnNfZGV2aXJ0dWFsaXplICYmIGZsYWdfd3BhKQorICAgIHsKKyAgICAgIHZh cnBvb2xfbm9kZSAqdm5vZGU7CisKKyAgICAgIEZPUl9FQUNIX0RFRklORURfVkFSSUFCTEUgKHZu b2RlKQorCWlmIChERUNMX1ZJUlRVQUxfUCAodm5vZGUtPmRlY2wpICYmICFERUNMX0VYVEVSTkFM ICh2bm9kZS0+ZGVjbCkKKwkgICAgJiYgVFlQRV9DWFhfTE9DQUwgKERFQ0xfQ09OVEVYVCAodm5v ZGUtPmRlY2wpKQorCSAgICAmJiBsdG9fc3ltdGFiX2VuY29kZXJfbG9va3VwIChlbmNvZGVyLCB2 bm9kZSkgPT0gTENDX05PVF9GT1VORCkKKwkgIGx0b19zeW10YWJfZW5jb2Rlcl9lbmNvZGUgKGVu Y29kZXIsIHZub2RlKTsKKyAgICB9CisKICAgLyogUGlja2xlIGluIGFsc28gdGhlIGluaXRpYWxp emVyIG9mIGFsbCByZWZlcmVuY2VkIHJlYWRvbmx5IHZhcmlhYmxlcwogICAgICB0byBoZWxwIGZv bGRpbmcuICBDb25zdGFudCBwb29sIHZhcmlhYmxlcyBhcmUgbm90IHNoYXJlZCwgc28gd2UgbXVz dAogICAgICBwaWNrbGUgdGhvc2UgdG9vLiAgKi8KZGlmZiAtLWdpdCBhL2djYy9sdG8tc3RyZWFt ZXItb3V0LmMgYi9nY2MvbHRvLXN0cmVhbWVyLW91dC5jCmluZGV4IDY0M2Q5Mjc1YTk1Li5jOGRk MmFlZTdiNCAxMDA2NDQKLS0tIGEvZ2NjL2x0by1zdHJlYW1lci1vdXQuYworKysgYi9nY2MvbHRv LXN0cmVhbWVyLW91dC5jCkBAIC00MzcsNyArNDM3LDE3IEBAIGdldF9zeW1ib2xfaW5pdGlhbF92 YWx1ZSAobHRvX3N5bXRhYl9lbmNvZGVyX3QgZW5jb2RlciwgdHJlZSBleHByKQogCSBzY2FsYXIg dmFsdWVzLiAgKi8KICAgICAgIGlmICghKHZub2RlID0gdmFycG9vbF9ub2RlOjpnZXQgKGV4cHIp KQogCSAgfHwgIWx0b19zeW10YWJfZW5jb2Rlcl9lbmNvZGVfaW5pdGlhbGl6ZXJfcCAoZW5jb2Rl ciwgdm5vZGUpKQotICAgICAgICBpbml0aWFsID0gZXJyb3JfbWFya19ub2RlOworCXsKKwkgIC8q IEV2ZW4gd2hlbiBhIGNsYXNzIGlzIG9wdGltaXplZCBhd2F5LCBkZXZpcnR1YWxpemF0aW9uIGF0 IExUUkFOUworCSAgICAgc3RpbGwgbmVlZCB0byBleHRyYWN0IG1lbWJlciB2aXJ0dWFsIGZ1bmN0 aW9ucyBmcm9tIGluaXRpYWwgdmFsdWUKKwkgICAgIG9mIHZ0YWJsZS4gICovCisJICBpZiAoZmxh Z19kZXZpcnR1YWxpemVfZnVsbHkgJiYgZmxhZ19sdHJhbnNfZGV2aXJ0dWFsaXplCisJICAgICAg JiYgZmxhZ193cGEgJiYgREVDTF9WSVJUVUFMX1AgKGV4cHIpICYmICFERUNMX0VYVEVSTkFMIChl eHByKSkKKwkgICAgcmV0dXJuIGluaXRpYWw7CisKKwkgIGluaXRpYWwgPSBlcnJvcl9tYXJrX25v ZGU7CisJfQorCiAgICAgICBpZiAoaW5pdGlhbCAhPSBlcnJvcl9tYXJrX25vZGUpCiAJewogCSAg bG9uZyBtYXhfc2l6ZSA9IDMwOwpkaWZmIC0tZ2l0IGEvZ2NjL2x0by9sdG8tbGFuZy5jIGIvZ2Nj L2x0by9sdG8tbGFuZy5jCmluZGV4IDkyZjQ5OTY0M2I1Li5hYjM3YTVlNmM2MCAxMDA2NDQKLS0t IGEvZ2NjL2x0by9sdG8tbGFuZy5jCisrKyBiL2djYy9sdG8vbHRvLWxhbmcuYwpAQCAtODcwLDYg Kzg3MCwxMiBAQCBsdG9fcG9zdF9vcHRpb25zIChjb25zdCBjaGFyICoqcGZpbGVuYW1lIEFUVFJJ QlVURV9VTlVTRUQpCiAgICAgICAvKiBEdXJpbmcgTFRSQU5TLCB3ZSBhcmUgbm90IGxvb2tpbmcg YXQgdGhlIHdob2xlIHByb2dyYW0sIG9ubHkKIAkgYSBzdWJzZXQgb2YgdGhlIHdob2xlIGNhbGxn cmFwaC4gICovCiAgICAgICBmbGFnX3dob2xlX3Byb2dyYW0gPSAwOworCisgICAgICAvKiBTaW5j ZSBmdWxsIGRldmlydHVhbGl6YXRpb24gYXQgTFRSQU5TIHJlcXVpcmVzIHN0cmVhbWluZyBleHRy YSBkYXRhCisJIG9uIHZ0YWJsZXMsIGl0IG9ubHkgdGFrZXMgZWZmZWN0IHdoZW4gZmxhZ19sdHJh bnNfZGV2aXJ0dWFsaXplIGlzCisJIGFsc28gb24uICAqLworICAgICAgaWYgKCFmbGFnX2x0cmFu c19kZXZpcnR1YWxpemUpCisJZmxhZ19kZXZpcnR1YWxpemVfZnVsbHkgPSAwOwogICAgIH0KIAog ICBpZiAoZmxhZ193cGEpCmRpZmYgLS1naXQgYS9nY2MvdHJlZS1jb3JlLmggYi9nY2MvdHJlZS1j b3JlLmgKaW5kZXggMTkyZTFkNTFmYzIuLjM4MmNjMDk3YmE4IDEwMDY0NAotLS0gYS9nY2MvdHJl ZS1jb3JlLmgKKysrIGIvZ2NjL3RyZWUtY29yZS5oCkBAIC0xMzU4LDYgKzEzNTgsOSBAQCBzdHJ1 Y3QgR1RZKCgpKSB0cmVlX2Jhc2UgewogICAgICAgIERFQ0xfTk9OQUxJQVNFRCBpbgogCSAgVkFS X0RFQ0wKIAorICAgICAgIFRZUEVfQ1hYX0xPQ0FMIGluCisJICAgYWxsIHR5cGVzCisKICAgIGRl cHJlY2F0ZWRfZmxhZzoKIAogICAgICAgIFRSRUVfREVQUkVDQVRFRCBpbgpkaWZmIC0tZ2l0IGEv Z2NjL3RyZWUtc3RyZWFtZXItaW4uYyBiL2djYy90cmVlLXN0cmVhbWVyLWluLmMKaW5kZXggODQ4 OTgxYWEyMGIuLjQyZGU5M2EzNjY4IDEwMDY0NAotLS0gYS9nY2MvdHJlZS1zdHJlYW1lci1pbi5j CisrKyBiL2djYy90cmVlLXN0cmVhbWVyLWluLmMKQEAgLTEyOSwxMCArMTI5LDE1IEBAIHVucGFj a190c19iYXNlX3ZhbHVlX2ZpZWxkcyAoc3RydWN0IGJpdHBhY2tfZCAqYnAsIHRyZWUgZXhwcikK ICAgICBicF91bnBhY2tfdmFsdWUgKGJwLCAxKTsKICAgVFJFRV9BU01fV1JJVFRFTiAoZXhwcikg PSAodW5zaWduZWQpIGJwX3VucGFja192YWx1ZSAoYnAsIDEpOwogICBpZiAoVFlQRV9QIChleHBy KSkKLSAgICBUWVBFX0FSVElGSUNJQUwgKGV4cHIpID0gKHVuc2lnbmVkKSBicF91bnBhY2tfdmFs dWUgKGJwLCAxKTsKKyAgICB7CisgICAgICBUWVBFX0FSVElGSUNJQUwgKGV4cHIpID0gKHVuc2ln bmVkKSBicF91bnBhY2tfdmFsdWUgKGJwLCAxKTsKKyAgICAgIFRZUEVfQ1hYX0xPQ0FMIChleHBy KSA9ICh1bnNpZ25lZCkgYnBfdW5wYWNrX3ZhbHVlIChicCwgMSk7CisgICAgfQogICBlbHNlCi0g ICAgVFJFRV9OT19XQVJOSU5HIChleHByKSA9ICh1bnNpZ25lZCkgYnBfdW5wYWNrX3ZhbHVlIChi cCwgMSk7Ci0gIFRSRUVfTk9USFJPVyAoZXhwcikgPSAodW5zaWduZWQpIGJwX3VucGFja192YWx1 ZSAoYnAsIDEpOworICAgIHsKKyAgICAgIFRSRUVfTk9fV0FSTklORyAoZXhwcikgPSAodW5zaWdu ZWQpIGJwX3VucGFja192YWx1ZSAoYnAsIDEpOworICAgICAgVFJFRV9OT1RIUk9XIChleHByKSA9 ICh1bnNpZ25lZCkgYnBfdW5wYWNrX3ZhbHVlIChicCwgMSk7CisgICAgfQogICBUUkVFX1NUQVRJ QyAoZXhwcikgPSAodW5zaWduZWQpIGJwX3VucGFja192YWx1ZSAoYnAsIDEpOwogICBpZiAoVFJF RV9DT0RFIChleHByKSAhPSBUUkVFX0JJTkZPKQogICAgIFRSRUVfUFJJVkFURSAoZXhwcikgPSAo dW5zaWduZWQpIGJwX3VucGFja192YWx1ZSAoYnAsIDEpOwpkaWZmIC0tZ2l0IGEvZ2NjL3RyZWUt c3RyZWFtZXItb3V0LmMgYi9nY2MvdHJlZS1zdHJlYW1lci1vdXQuYwppbmRleCAxZjljZTUyZDU0 MS4uMGZmMDNiNzgzOGMgMTAwNjQ0Ci0tLSBhL2djYy90cmVlLXN0cmVhbWVyLW91dC5jCisrKyBi L2djYy90cmVlLXN0cmVhbWVyLW91dC5jCkBAIC0xMDIsMTAgKzEwMiwxNSBAQCBwYWNrX3RzX2Jh c2VfdmFsdWVfZmllbGRzIChzdHJ1Y3QgYml0cGFja19kICpicCwgdHJlZSBleHByKQogICBicF9w YWNrX3ZhbHVlIChicCwgKFRSRUVfQ09ERSAoZXhwcikgIT0gU1NBX05BTUUKIAkJICAgICAgPyAw IDogVFJFRV9BU01fV1JJVFRFTiAoZXhwcikpLCAxKTsKICAgaWYgKFRZUEVfUCAoZXhwcikpCi0g ICAgYnBfcGFja192YWx1ZSAoYnAsIFRZUEVfQVJUSUZJQ0lBTCAoZXhwciksIDEpOworICAgIHsK KyAgICAgIGJwX3BhY2tfdmFsdWUgKGJwLCBUWVBFX0FSVElGSUNJQUwgKGV4cHIpLCAxKTsKKyAg ICAgIGJwX3BhY2tfdmFsdWUgKGJwLCBUWVBFX0NYWF9MT0NBTCAoZXhwciksIDEpOworICAgIH0K ICAgZWxzZQotICAgIGJwX3BhY2tfdmFsdWUgKGJwLCBUUkVFX05PX1dBUk5JTkcgKGV4cHIpLCAx KTsKLSAgYnBfcGFja192YWx1ZSAoYnAsIFRSRUVfTk9USFJPVyAoZXhwciksIDEpOworICAgIHsK KyAgICAgIGJwX3BhY2tfdmFsdWUgKGJwLCBUUkVFX05PX1dBUk5JTkcgKGV4cHIpLCAxKTsKKyAg ICAgIGJwX3BhY2tfdmFsdWUgKGJwLCBUUkVFX05PVEhST1cgKGV4cHIpLCAxKTsKKyAgICB9CiAg IGJwX3BhY2tfdmFsdWUgKGJwLCBUUkVFX1NUQVRJQyAoZXhwciksIDEpOwogICBpZiAoVFJFRV9D T0RFIChleHByKSAhPSBUUkVFX0JJTkZPKQogICAgIGJwX3BhY2tfdmFsdWUgKGJwLCBUUkVFX1BS SVZBVEUgKGV4cHIpLCAxKTsKZGlmZiAtLWdpdCBhL2djYy90cmVlLmggYi9nY2MvdHJlZS5oCmlu ZGV4IDBhZDVmYWVhZjkzLi44ZmNjMmZjMzkyMiAxMDA2NDQKLS0tIGEvZ2NjL3RyZWUuaAorKysg Yi9nY2MvdHJlZS5oCkBAIC0yMzAzLDYgKzIzMDMsMTEgQEAgZXh0ZXJuIHRyZWUgdmVjdG9yX2Vs ZW1lbnRfYml0c190cmVlIChjb25zdF90cmVlKTsKICNkZWZpbmUgVFlQRV9GSU5BTF9QKE5PREUp IFwKICAgKFJFQ09SRF9PUl9VTklPTl9DSEVDSyAoTk9ERSktPmJhc2UuZGVmYXVsdF9kZWZfZmxh ZykKIAorLyogSWYgbm9uemVybywgaXQgaW5kaWNhdGVzIHRoYXQgYSBDKysgdHlwZSAobWFpbmx5 IHBvbHltb3JwaGljIGNsYXNzKSBtYXkKKyAgIGJlIHJlZmVyZW5jZWQgb3V0c2lkZSB0aGUgcHJv Z3JhbSBiZWluZyBjb21waWxlZC4gVGhpcyBpcyB1c2VkIGluIEMrKworICAgZGV2aXJ0dWFsaXph dGlvbi4gICovCisjZGVmaW5lIFRZUEVfQ1hYX0xPQ0FMKE5PREUpIChUWVBFX0NIRUNLIChOT0RF KS0+YmFzZS5ub3Rocm93X2ZsYWcpCisKIC8qIFRoZSBkZWJ1ZyBvdXRwdXQgZnVuY3Rpb25zIHVz ZSB0aGUgc3ltdGFiIHVuaW9uIGZpZWxkIHRvIHN0b3JlCiAgICBpbmZvcm1hdGlvbiBzcGVjaWZp YyB0byB0aGUgZGVidWdnaW5nIGZvcm1hdC4gIFRoZSBkaWZmZXJlbnQgZGVidWcKICAgIG91dHB1 dCBob29rcyBzdG9yZSBkaWZmZXJlbnQgdHlwZXMgaW4gdGhlIHVuaW9uIGZpZWxkLiAgVGhlc2Ug dGhyZWUKLS0gCjIuMTcuMQoK --_002_SN6PR01MB4958F6ADBBACC864FFD0B896F7DC9SN6PR01MB4958prod_--