From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from smarthost3.atos.net (smtppost.atos.net [193.56.114.176]) by sourceware.org (Postfix) with ESMTPS id B44893858C39 for ; Mon, 18 Oct 2021 07:55:14 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org B44893858C39 X-IronPort-AV: E=Sophos;i="5.85,381,1624312800"; d="scan'208,223";a="270411115" X-MGA-submission: =?us-ascii?q?MDFd3xafkdWph9nwvp9az1X4nkVwrjmlNciK4u?= =?us-ascii?q?CCEbZAqE4x5hZ6A0W1Ti1vgK9lFhqzbYh/I5a9lF84gclXQjYSvqXbjT?= =?us-ascii?q?vYF5rPLHgijLdQyjsebYijYzy/aomYZ9vhBzmvIqriKz1df27JY1Y1lJ?= =?us-ascii?q?QY?= Received: from mail.sis.atos.net (HELO GITEXCPRDMB13.ww931.my-it-solutions.net) ([10.89.28.143]) by smarthost3.atos.net with ESMTP/TLS/AES256-GCM-SHA384; 18 Oct 2021 09:55:12 +0200 Received: from GITEXCPRDMB14.ww931.my-it-solutions.net (10.89.28.144) by GITEXCPRDMB13.ww931.my-it-solutions.net (10.89.28.143) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2308.14; Mon, 18 Oct 2021 09:55:11 +0200 Received: from EUR01-DB5-obe.outbound.protection.outlook.com (172.16.214.172) by GITEXCPRDMB14.ww931.my-it-solutions.net (10.89.28.144) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2308.14 via Frontend Transport; Mon, 18 Oct 2021 09:55:11 +0200 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=iYxCYbDlRN3fL+QgNoBuwCNP3lmMLbdf0y3LpZTu3p19RZWErXYDGMmA5sQUIEIihZliztRgHrIzjhFqXt9zSYkXXqyyNS6NAPlfOM7nTAcRgZyZqTavrd16WYrHWqfgUo35XuWbcZnRYQYsNTZhPP/1SXa3r+nCAtlsB4fJqtsexGMCEvroS6Wmaj+anUG5FWs4yiAYlzVUg6brZXswUn4GtPdsfLKQptNn9Bv4Mc/PHZuzw/Lo6+WwOuZ3r9403Z9J4dVQzw4Z7pstGkEU+clHsMdE5Q9jSi4x7hK711axv4P9RjFghmln4Du3AprpPyq01AfDi3iDQ99dqr66iA== 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-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=TFNvAB5oVkogYk/FH4PXGW7hPwCkgQmjOdjDflR8Xoo=; b=RNhlhba8oXx/eJR32y+QUbChtLnh6gMx3QSX/oWF/SIVP4sE62g0t5PWHOsCLVuCbjWYEGmEZc6XUAdDxwJFIBbUe1dkG0EFxZrV0uuXV5s9mVaG43W4qVrHVR+8eSBU8919nkB8rLdVdDSRApZlED9RvVokJABmrGHucEk99dvg2r1LEd+b5lOh+XN7ThsbgcxI6DZvBJicx3VwelHoGEui0TqchuilxnqcJInL2ES7CaB2R/k0Re/SNw1NJlLfoCovomfvn0ZlKkSXetUIGR7FGaQroZZweZ5FwSjYHYgfQQaFmSdPlPoLdkj9Nm+EZYOBANvlmeAidOJ+MgGJSA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=atos.net; dmarc=pass action=none header.from=atos.net; dkim=pass header.d=atos.net; arc=none Received: from PA4PR02MB6686.eurprd02.prod.outlook.com (2603:10a6:102:ff::14) by PA4PR02MB6765.eurprd02.prod.outlook.com (2603:10a6:102:d3::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4608.16; Mon, 18 Oct 2021 07:55:10 +0000 Received: from PA4PR02MB6686.eurprd02.prod.outlook.com ([fe80::d85f:8147:a57e:92cb]) by PA4PR02MB6686.eurprd02.prod.outlook.com ([fe80::d85f:8147:a57e:92cb%5]) with mapi id 15.20.4608.018; Mon, 18 Oct 2021 07:55:10 +0000 From: "CHIGOT, CLEMENT" To: "gcc-patches@gcc.gnu.org" CC: David Edelsohn Subject: [PATCH] gcc: implement AIX-style constructors Thread-Topic: [PATCH] gcc: implement AIX-style constructors Thread-Index: AQHXw/UayPzaxZrHSUWl8igmK/p7lQ== Date: Mon, 18 Oct 2021 07:55:10 +0000 Message-ID: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: yes X-MS-TNEF-Correlator: msip_labels: MSIP_Label_e463cba9-5f6c-478d-9329-7b2295e4e8ed_Enabled=True; MSIP_Label_e463cba9-5f6c-478d-9329-7b2295e4e8ed_SiteId=33440fc6-b7c7-412c-bb73-0e70b0198d5a; MSIP_Label_e463cba9-5f6c-478d-9329-7b2295e4e8ed_SetDate=2021-10-18T07:56:45.362Z; MSIP_Label_e463cba9-5f6c-478d-9329-7b2295e4e8ed_Name=Atos For Internal Use - All Employees; MSIP_Label_e463cba9-5f6c-478d-9329-7b2295e4e8ed_ContentBits=0; MSIP_Label_e463cba9-5f6c-478d-9329-7b2295e4e8ed_Method=Standard; suggested_attachment_session_id: f0e7a3f7-3327-7051-bd01-b0e75061b8a6 x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 0712265f-abf0-485e-bbbc-08d9920c9c36 x-ms-traffictypediagnostic: PA4PR02MB6765: x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:5797; x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: 01SsSpOQNtpgiw7P2qe8AGgkwupZdPr6cKOCvvQyKLR01KhnZh2EsAO+jVEJq8ZHt/MywbmrK5sUxhWt5ES5m/MD68P1xDMNfOrPFF2/Dnge2C1GXEZvZVTpfvV2g1r4OELS3HTkbDWCl88hqJXJRuRnIXIchHwI+mWCva5qlxuC7T6MWAHfjff42xgG0SNmSoxe335faylMAt8GDEChdyMQ0GzE7rhXD/Fhi9JpG4KCeqI3KTTKp03KQsMEJqs4f9xVGIFsqBLCxzrkxAxYQvJvhHk/so79y7m+hUTSiaTDTbKpXg4jKEGNyUdI/SwXNCytIvI0Kkp3QgQ5d5D/iRo2uLoAlGs4jVN+ueK09eHPsw0EEUS36dQdAmbySA23UBEsYtqFI9O3H7FSze1LZmuVnsNkLG5oe3Jq9dE4u0KzSxLAKnCDIQdeEguIgbOtbSUwdyvchKsWRLwBBLGUmLaJXBzLR/JgJ91yhFnxqIR6DkQAi/7kNkj6il7M5n1B5AVjzVzcktZa4loeqY+8jF5v0Ci3iCeJ7cLmHtkY/yX7/6pE6C2ZRtSwFME7vSstasYIwJlOW7ouj0oRUBR0ymzsudoCOmsay/f/JuDNnCQU3wqqMWUafx5XSjb+tevEY20R9dW70cIaLe7XSFrSafWfDgy+2Nh6HLhKoOSXhkADy3KODWVgaN73l7xJVF8/WI+SoFPY3EXqEtUiV/Gxly8pk2LQ9DiFnUbJkUm5NGWJgvx4LcOqi/fISbrL5p1m x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:PA4PR02MB6686.eurprd02.prod.outlook.com; PTR:; CAT:NONE; SFS:(4636009)(366004)(8936002)(9686003)(71200400001)(5660300002)(55016002)(2906002)(38070700005)(7696005)(26005)(55236004)(82960400001)(186003)(66574015)(6506007)(6916009)(64756008)(91956017)(66446008)(66476007)(66556008)(52536014)(66946007)(99936003)(83380400001)(8676002)(508600001)(316002)(86362001)(38100700002)(122000001)(33656002)(76116006)(4326008); DIR:OUT; SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?iso-8859-1?Q?D7OYeqAZiJb1P8YShXBoB06IXugnuEUuG2kariWs0lKY1Kq0cFv41IoseQ?= =?iso-8859-1?Q?j9W7z6OVWWdoykGbKmyechVnFuSn1B1tzS6l3HE+WA76wIu6NJnRvd2k6r?= =?iso-8859-1?Q?T7XpLdbFSjx5NWjdezVti8n38Uqyh6ScPe6B7OXR5EOwpkms9zZSF7nlSE?= =?iso-8859-1?Q?wMXkikUeJBwM3Lg58iWBAI3nuYO+Rtsdvh351sZzEtcvbvQd47/Rl96QS3?= =?iso-8859-1?Q?vpJKBgr5Kh9ne/syRp0gHGKdShDgR/IqHvTYsT0sCREufKPzSw7NkWmorG?= =?iso-8859-1?Q?/ou31noBG92gsNEadmsgmYvGnJH8frzm/kixjqjAu6eT/1Xu/jF80kXX3o?= =?iso-8859-1?Q?zEAqztCu88gEFU7t5lJgi2PlOHoFpgsajeV2CZhlqacnY90UCkKoqoXU0a?= =?iso-8859-1?Q?0oi8KMBQhIY0FNspBGfRA9/bcF+EH8OZzC/Bv6AQXHLTDOtV0KF7FPeh16?= =?iso-8859-1?Q?EPeraY52/S84nsa8GSnRutW7O5f3K6FjlLXXQUKcZklyyCRHikQ01cupMu?= =?iso-8859-1?Q?Bm3PuxLU0j0uyasaqctgKHyyaBnjp6y040jwXh0B5GKuXIq/UU4nyP6NDq?= =?iso-8859-1?Q?JCnxE24GuAbw5X+h2msW7OJSGQroebNe447/k8W9FBlBTXpds82hzE+cAO?= =?iso-8859-1?Q?rI5tVRnUJbmHze4wyI5xEGZ5Qfsa3/doePFS748LIM+ub2zQ4/b3YQMUG/?= =?iso-8859-1?Q?88gHrfaBX8/RfNhkoyKhLyH/kJyrzDtK5JKXQ5R4+f6jfDw0e3A+ycYAqB?= =?iso-8859-1?Q?b9EbXak8CUkBFKeFC6I4iNw034YUt9LcvwhqMPdlA28/K3y6kZEpErT19M?= =?iso-8859-1?Q?XqzZVdhY6rfUm2WuGJTsZ3cXKNJzqZLBjK2hwsvC/tsHX0D1JOsECkH3nD?= =?iso-8859-1?Q?XKIaW/aLlKNvwh0wTD7rkcYkT6b6AUNydchi5zFCzHcbxnzb/jp4dPdl3V?= =?iso-8859-1?Q?4uhtGRtziJqWdlV45212lILF8nQqnazjDzvspsFBvegVDaw4634OmqUEqF?= =?iso-8859-1?Q?RNaGe3KaianlkmWrie0FOzg4rQKfyTf3g3CX0K3c3r6QqntaSQiqi8HNc0?= =?iso-8859-1?Q?IS6eJ+0Z8Xyri20dnoexlXAvTB4L/JxUzrqopbJPrwB1GBAO9v+i0+l1+v?= =?iso-8859-1?Q?youRCIz0opUn7neyu0AOYtH8STi3FVjEDurswjyki4nFr2ZWQgUBIsAS8B?= =?iso-8859-1?Q?64K/rryf4sXDWNUFLXu4HWeVMbNMia6THcmJDKh7tAGsNgr5hdC4AyNQ74?= =?iso-8859-1?Q?2O3+sKgGc5HDjGC2w7zpmbV/l12hpqRTA4sLwuS1Qn2lPrWfCPctCQ2iER?= =?iso-8859-1?Q?ZRNtcd0wx7IuQ3iWxXAl++anWLA6BI0YYdBjoULAcG7tIlo=3D?= x-ms-exchange-transport-forked: True Content-Type: multipart/mixed; boundary="_002_PA4PR02MB6686D2D6132441155E4B0CF9EABC9PA4PR02MB6686eurp_" MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: PA4PR02MB6686.eurprd02.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 0712265f-abf0-485e-bbbc-08d9920c9c36 X-MS-Exchange-CrossTenant-originalarrivaltime: 18 Oct 2021 07:55:10.6775 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 33440fc6-b7c7-412c-bb73-0e70b0198d5a X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: nXnutnbkFkIwsTnpa+ZF2bns62jtWtOFzRTMo32d1ELFnJ4Ge+V/BfQrEDIUCrSugCXep+KjuWXbPNMJ0f4UGA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PA4PR02MB6765 X-OriginatorOrg: atos.net X-Spam-Status: No, score=-8.3 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, FORGED_SPF_HELO, GIT_PATCH_0, KAM_SHORT, RCVD_IN_MSPIKE_H4, RCVD_IN_MSPIKE_WL, SPF_HELO_PASS, SPF_NONE, 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: Mon, 18 Oct 2021 07:55:18 -0000 --_002_PA4PR02MB6686D2D6132441155E4B0CF9EABC9PA4PR02MB6686eurp_ Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable AIX linker now supports constructors and destructors detection. For such=0A= functions to be detected, their name must starts with __sinit or __sterm.= =0A= and -bcdtors must be passed to linker calls. It will create "_cdtors"=0A= symbol which can be used to launch the initialization.=0A= =0A= This patch creates a new RS6000 flag "-mcdtors=3D".=0A= With "-mcdtors=3Daix", gcc will generate these new constructors/destructors= .=0A= With "-mcdtors=3Dgcc", which is currently the default, gcc will continue=0A= to generate "gcc" format for constructors (ie _GLOBAL__I and _GLOBAL__D=0A= symbols).=0A= Ideally, it would have been better to enable the AIX format by default=0A= instead of using collect2. However, the compatibility between the=0A= previously-built binaries and the new ones is too complex to be done.=0A= =0A= gcc/ChangeLog:=0A= 2021-10-04 =A0Cl=E9ment Chigot =A0=0A= =0A= =A0 =A0 =A0 =A0 * collect2.c (aixbcdtors_flags): New variable.=0A= =A0 =A0 =A0 =A0 (main): Use it to detect -bcdtors and remove -binitfini fla= g.=0A= =A0 =A0 =A0 =A0 (write_c_file_stat): Adapt to new AIX format.=0A= =A0 =A0 =A0 =A0 * config/rs6000/aix.h (FILE_SINIT_FORMAT): New define.=0A= =A0 =A0 =A0 =A0 (FILE_STERM_FORMAT): New define.=0A= =A0 =A0 =A0 =A0 (TARGET_FILE_FUNCTION_FORMAT): New define.=0A= =A0 =A0 =A0 =A0 * config/rs6000/aix64.opt: Add -mcdtors flag.=0A= =A0 =A0 =A0 =A0 * config/rs6000/aix71.h (LINK_SPEC_COMMON): Pass -bcdtors w= hen=0A= =A0 =A0 =A0 =A0 =A0 -mcdtors=3Daix is passed.=0A= =A0 =A0 =A0 =A0 * config/rs6000/aix72.h (LINK_SPEC_COMMON): Likewise.=0A= =A0 =A0 =A0 =A0 * config/rs6000/aix73.h (LINK_SPEC_COMMON): Likewise.=0A= =A0 =A0 =A0 =A0 * config/rs6000/rs6000-opts.h (enum rs6000_cdtors): New enu= m.=0A= =A0 =A0 =A0 =A0 * tree.c (get_file_function_name): Add=0A= =A0 =A0 =A0 =A0 =A0 TARGET_FILE_FUNCTION_FORMAT support.=0A= =0A= gcc/testsuite/ChangeLog:=0A= 2021-10-04 =A0Cl=E9ment Chigot =A0=0A= =0A= =A0 =A0 =A0 =A0 * gcc.target/powerpc/constructor-aix.c: New test.=0A= =0A= =0A= --_002_PA4PR02MB6686D2D6132441155E4B0CF9EABC9PA4PR02MB6686eurp_ Content-Type: text/x-patch; name="0001-gcc-implement-AIX-style-constructors.patch" Content-Description: 0001-gcc-implement-AIX-style-constructors.patch Content-Disposition: attachment; filename="0001-gcc-implement-AIX-style-constructors.patch"; size=15882; creation-date="Mon, 18 Oct 2021 07:54:00 GMT"; modification-date="Mon, 18 Oct 2021 07:54:00 GMT" Content-Transfer-Encoding: base64 RnJvbSBlMTI5Nzg4MGEyYWJlNTNkYjY0MjJiY2YyNWRjZDg4M2EyNjU4MjYwIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiA9P1VURi04P3E/Q2w9QzM9QTltZW50PTIwQ2hpZ290Pz0gPGNs ZW1lbnQuY2hpZ290QGF0b3MubmV0PgpEYXRlOiBNb24sIDQgT2N0IDIwMjEgMDk6MjQ6NDMgKzAy MDAKU3ViamVjdDogW1BBVENIXSBnY2M6IGltcGxlbWVudCBBSVgtc3R5bGUgY29uc3RydWN0b3Jz Ck1JTUUtVmVyc2lvbjogMS4wCkNvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1VVEYt OApDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA4Yml0CgpBSVggbGlua2VyIG5vdyBzdXBwb3J0 cyBjb25zdHJ1Y3RvcnMgYW5kIGRlc3RydWN0b3JzIGRldGVjdGlvbi4gRm9yIHN1Y2gKZnVuY3Rp b25zIHRvIGJlIGRldGVjdGVkLCB0aGVpciBuYW1lIG11c3Qgc3RhcnRzIHdpdGggX19zaW5pdCBv ciBfX3N0ZXJtLgphbmQgLWJjZHRvcnMgbXVzdCBiZSBwYXNzZWQgdG8gbGlua2VyIGNhbGxzLiBJ dCB3aWxsIGNyZWF0ZSAiX2NkdG9ycyIKc3ltYm9sIHdoaWNoIGNhbiBiZSB1c2VkIHRvIGxhdW5j aCB0aGUgaW5pdGlhbGl6YXRpb24uCgpUaGlzIHBhdGNoIGNyZWF0ZXMgYSBuZXcgUlM2MDAwIGZs YWcgIi1tY2R0b3JzPSIuCldpdGggIi1tY2R0b3JzPWFpeCIsIGdjYyB3aWxsIGdlbmVyYXRlIHRo ZXNlIG5ldyBjb25zdHJ1Y3RvcnMvZGVzdHJ1Y3RvcnMuCldpdGggIi1tY2R0b3JzPWdjYyIsIHdo aWNoIGlzIGN1cnJlbnRseSB0aGUgZGVmYXVsdCwgZ2NjIHdpbGwgY29udGludWUKdG8gZ2VuZXJh dGUgImdjYyIgZm9ybWF0IGZvciBjb25zdHJ1Y3RvcnMgKGllIF9HTE9CQUxfX0kgYW5kIF9HTE9C QUxfX0QKc3ltYm9scykuCklkZWFsbHksIGl0IHdvdWxkIGhhdmUgYmVlbiBiZXR0ZXIgdG8gZW5h YmxlIHRoZSBBSVggZm9ybWF0IGJ5IGRlZmF1bHQKaW5zdGVhZCBvZiB1c2luZyBjb2xsZWN0Mi4g SG93ZXZlciwgdGhlIGNvbXBhdGliaWxpdHkgYmV0d2VlbiB0aGUKcHJldmlvdXNseS1idWlsdCBi aW5hcmllcyBhbmQgdGhlIG5ldyBvbmVzIGlzIHRvbyBjb21wbGV4IHRvIGJlIGRvbmUuCgpnY2Mv Q2hhbmdlTG9nOgoyMDIxLTEwLTA0ICBDbMOpbWVudCBDaGlnb3QgIDxjbGVtZW50LmNoaWdvdEBh dG9zLm5ldD4KCgkqIGNvbGxlY3QyLmMgKGFpeGJjZHRvcnNfZmxhZ3MpOiBOZXcgdmFyaWFibGUu CgkobWFpbik6IFVzZSBpdCB0byBkZXRlY3QgLWJjZHRvcnMgYW5kIHJlbW92ZSAtYmluaXRmaW5p IGZsYWcuCgkod3JpdGVfY19maWxlX3N0YXQpOiBBZGFwdCB0byBuZXcgQUlYIGZvcm1hdC4KCSog Y29uZmlnL3JzNjAwMC9haXguaCAoRklMRV9TSU5JVF9GT1JNQVQpOiBOZXcgZGVmaW5lLgoJKEZJ TEVfU1RFUk1fRk9STUFUKTogTmV3IGRlZmluZS4KCShUQVJHRVRfRklMRV9GVU5DVElPTl9GT1JN QVQpOiBOZXcgZGVmaW5lLgoJKiBjb25maWcvcnM2MDAwL2FpeDY0Lm9wdDogQWRkIC1tY2R0b3Jz IGZsYWcuCgkqIGNvbmZpZy9yczYwMDAvYWl4NzEuaCAoTElOS19TUEVDX0NPTU1PTik6IFBhc3Mg LWJjZHRvcnMgd2hlbgoJICAtbWNkdG9ycz1haXggaXMgcGFzc2VkLgoJKiBjb25maWcvcnM2MDAw L2FpeDcyLmggKExJTktfU1BFQ19DT01NT04pOiBMaWtld2lzZS4KCSogY29uZmlnL3JzNjAwMC9h aXg3My5oIChMSU5LX1NQRUNfQ09NTU9OKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9yczYwMDAvcnM2 MDAwLW9wdHMuaCAoZW51bSByczYwMDBfY2R0b3JzKTogTmV3IGVudW0uCgkqIHRyZWUuYyAoZ2V0 X2ZpbGVfZnVuY3Rpb25fbmFtZSk6IEFkZAoJICBUQVJHRVRfRklMRV9GVU5DVElPTl9GT1JNQVQg c3VwcG9ydC4KCmdjYy90ZXN0c3VpdGUvQ2hhbmdlTG9nOgoyMDIxLTEwLTA0ICBDbMOpbWVudCBD aGlnb3QgIDxjbGVtZW50LmNoaWdvdEBhdG9zLm5ldD4KCgkqIGdjYy50YXJnZXQvcG93ZXJwYy9j b25zdHJ1Y3Rvci1haXguYzogTmV3IHRlc3QuCi0tLQogZ2NjL2NvbGxlY3QyLmMgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHwgOTEgKysrKysrKysrKysrKysrKystLQogZ2NjL2NvbmZp Zy9yczYwMDAvYWl4LmggICAgICAgICAgICAgICAgICAgICAgIHwgNTYgKysrKysrKysrKysrCiBn Y2MvY29uZmlnL3JzNjAwMC9haXg2NC5vcHQgICAgICAgICAgICAgICAgICAgfCAxNyArKysrCiBn Y2MvY29uZmlnL3JzNjAwMC9haXg3MS5oICAgICAgICAgICAgICAgICAgICAgfCAgMiArLQogZ2Nj L2NvbmZpZy9yczYwMDAvYWl4NzIuaCAgICAgICAgICAgICAgICAgICAgIHwgIDIgKy0KIGdjYy9j b25maWcvcnM2MDAwL2FpeDczLmggICAgICAgICAgICAgICAgICAgICB8ICAyICstCiBnY2MvY29u ZmlnL3JzNjAwMC9yczYwMDAtb3B0cy5oICAgICAgICAgICAgICAgfCAgOCArKwogLi4uL2djYy50 YXJnZXQvcG93ZXJwYy9jb25zdHJ1Y3Rvci1haXguYyAgICAgIHwgMTIgKysrCiBnY2MvdHJlZS5j ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgNSArCiA5IGZpbGVzIGNoYW5n ZWQsIDE4NCBpbnNlcnRpb25zKCspLCAxMSBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0 NCBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvcG93ZXJwYy9jb25zdHJ1Y3Rvci1haXguYwoKZGlm ZiAtLWdpdCBhL2djYy9jb2xsZWN0Mi5jIGIvZ2NjL2NvbGxlY3QyLmMKaW5kZXggNmY5MTMwNDFm MjYuLjU5NjU4Y2JhZGI3IDEwMDY0NAotLS0gYS9nY2MvY29sbGVjdDIuYworKysgYi9nY2MvY29s bGVjdDIuYwpAQCAtMTg2LDYgKzE4Niw3IEBAIHN0YXRpYyBpbnQgYWl4NjRfZmxhZzsJCQkvKiB0 cnVlIGlmIC1iNjQgKi8KIHN0YXRpYyBpbnQgYWl4cnRsX2ZsYWc7CQkJLyogdHJ1ZSBpZiAtYnJ0 bCAqLwogc3RhdGljIGludCBhaXhsYXp5X2ZsYWc7CQkvKiB0cnVlIGlmIC1ibGF6eSAqLwogc3Rh dGljIGludCB2aXNpYmlsaXR5X2ZsYWc7CQkvKiB0cnVlIGlmIC1mdmlzaWJpbGl0eSAqLworc3Rh dGljIGludCBhaXhiY2R0b3JzX2ZsYWc7ICAgICAgICAgICAgICAgIC8qIFRydWUgaWYgLWJjZHRv cnMgKi8KICNlbmRpZgogCiBlbnVtIGx0b19tb2RlX2QgewpAQCAtOTg0LDYgKzk4NSw4IEBAIG1h aW4gKGludCBhcmdjLCBjaGFyICoqYXJndikKIAkgIGFpeHJ0bF9mbGFnID0gMDsKIAllbHNlIGlm IChzdHJjbXAgKGFyZ3ZbaV0sICItYmxhenkiKSA9PSAwKQogCSAgYWl4bGF6eV9mbGFnID0gMTsK KwllbHNlIGlmIChzdHJjbXAgKGFyZ3ZbaV0sICItYmNkdG9ycyIpID09IDApCisJICBhaXhiY2R0 b3JzX2ZsYWcgPSAxOwogI2VuZGlmCiAgICAgICB9CiAKQEAgLTE3MzEsNyArMTczNCw5IEBAIG1h aW4gKGludCBhcmdjLCBjaGFyICoqYXJndikKICAgLyogVGVsbCB0aGUgbGlua2VyIHRoYXQgd2Ug aGF2ZSBpbml0aWFsaXplciBhbmQgZmluYWxpemVyIGZ1bmN0aW9ucy4gICovCiAjaWZkZWYgTERf SU5JVF9TV0lUQ0gKICNpZmRlZiBDT0xMRUNUX0VYUE9SVF9MSVNUCi0gICpsZDIrKyA9IGNvbmNh dCAoTERfSU5JVF9TV0lUQ0gsICI6IiwgaW5pdG5hbWUsICI6IiwgZmluaW5hbWUsIE5VTEwpOwor ICAvKiBEbyBub3QgZW1pdCAtYmluaXRmaW5pIHdoZW4gLWJjZHRvcnMgaXMgZW5hYmxlZC4gKi8K KyAgaWYgKCFhaXhiY2R0b3JzX2ZsYWcpCisgICAgKmxkMisrID0gY29uY2F0IChMRF9JTklUX1NX SVRDSCwgIjoiLCBpbml0bmFtZSwgIjoiLCBmaW5pbmFtZSwgTlVMTCk7CiAjZWxzZQogICAqbGQy KysgPSBMRF9JTklUX1NXSVRDSDsKICAgKmxkMisrID0gaW5pdG5hbWU7CkBAIC0yMDIwLDYgKzIw MjUsNyBAQCB3cml0ZV9jX2ZpbGVfc3RhdCAoRklMRSAqc3RyZWFtLCBjb25zdCBjaGFyICpuYW1l IEFUVFJJQlVURV9VTlVTRUQpCiB7CiAgIGNvbnN0IGNoYXIgKnAsICpxOwogICBjaGFyICpwcmVm aXgsICpyOworICBjaGFyICpyZWdmcmFtZV9uYW1lLCAqZGVyZWdmcmFtZV9uYW1lOwogICBpbnQg ZnJhbWVzID0gKGZyYW1lX3RhYmxlcy5udW1iZXIgPiAwKTsKIAogICAvKiBGaWd1cmUgb3V0IG5h bWUgb2Ygb3V0cHV0X2ZpbGUsIHN0cmlwcGluZyBvZmYgLnNvIHZlcnNpb24uICAqLwpAQCAtMjA2 Miw2ICsyMDY4LDIyIEBAIHdyaXRlX2NfZmlsZV9zdGF0IChGSUxFICpzdHJlYW0sIGNvbnN0IGNo YXIgKm5hbWUgQVRUUklCVVRFX1VOVVNFRCkKICAgYWl4X3NoYXJlZF9maW5pbmFtZSA9IGNvbmNh dCAoIl9HTE9CQUxfX0FJWERfIiwgcHJlZml4LCBOVUxMKTsKICNlbmRpZgogCisgIHJlZ2ZyYW1l X25hbWUgPSBjb25jYXQgKCJyZWdfZnJhbWUiLCBOVUxMLCBOVUxMKTsKKyAgZGVyZWdmcmFtZV9u YW1lID0gY29uY2F0ICgiZGVyZWdfZnJhbWUiLCBOVUxMLCBOVUxMKTsKKyNpZmRlZiBDT0xMRUNU X0VYUE9SVF9MSVNUCisgIC8qIEluIG9yZGVyIHRvIGJlIGRldGVjdGVkIGJ5IHRoZSBsaW5rZXIs IHNpbml0L3N0ZXJtIHN5bWJvbHMKKyAgICAgbXVzdCBiZSBleHRlcm5hbC4gVGh1cywgcmVnX2Zy YW1lIGFuZCBkZXJlZ19mcmFtZSBjYW4ndAorICAgICBiZSBzdGF0aWMgYW55bW9yZSBhbmQgdGhl aXIgbmFtZSBuZWVkcyB0byBiZSB1bmlxdWUuCisgICAgIEluIG9yZGVyIHRvIGVuc3VyZSB0aGF0 IGZyYW1lcyBhcmUgaW5pdGlhbGl6ZWQgYmVmb3JlIGFueQorICAgICBjb25zdHJ1Y3RvcnMsIHRo ZWlyIGNvbnN0cnVjdG9yIG11c3QgaGF2ZSB0aGUgaGlnaGVzdCBwcmlvcml0eQorICAgICAwLiAg Ki8KKyAgaWYgKGFpeGJjZHRvcnNfZmxhZykKKyAgICB7CisgICAgICByZWdmcmFtZV9uYW1lID0g Y29uY2F0ICgiX19zaW5pdDBfcmVnX2ZyYW1lXyIsIHByZWZpeCwgTlVMTCk7CisgICAgICBkZXJl Z2ZyYW1lX25hbWUgPSBjb25jYXQgKCJfX3N0ZXJtMF9kZXJlZ19mcmFtZV8iLCBwcmVmaXgsIE5V TEwpOworICAgIH0KKyNlbmRpZgorCiAgIGZyZWUgKHByZWZpeCk7CiAKICAgLyogV3JpdGUgdGhl IHRhYmxlcyBhcyBDIGNvZGUuICAqLwpAQCAtMjA3Myw5ICsyMDk1LDQ0IEBAIHdyaXRlX2NfZmls ZV9zdGF0IChGSUxFICpzdHJlYW0sIGNvbnN0IGNoYXIgKm5hbWUgQVRUUklCVVRFX1VOVVNFRCkK ICAgICAgbWVjaGFuaXNtcyBHQ0MgdXNlcyB0byBvcmRlciBjb25zdHJ1Y3RvcnMgYWNyb3NzIGRp ZmZlcmVudCBkZXBlbmRlbnQKICAgICAgc2hhcmVkIGxpYnJhcmllcyAoc2VlIGNvbmZpZy9yczYw MDAvYWl4LmgpLgogICAgKi8KLSAgZnByaW50ZiAoc3RyZWFtLCAic3RhdGljIGludCBjb3VudDtc biIpOwotICBmcHJpbnRmIChzdHJlYW0sICJ0eXBlZGVmIHZvaWQgZW50cnlfcHQoKTtcbiIpOwot ICB3cml0ZV9saXN0X3dpdGhfYXNtIChzdHJlYW0sICJleHRlcm4gZW50cnlfcHQgIiwgY29uc3Ry dWN0b3JzLmZpcnN0KTsKKyNpZmRlZiBDT0xMRUNUX0VYUE9SVF9MSVNUCisgIGlmICghYWl4YmNk dG9yc19mbGFnKQorICAgIHsKKyNlbmRpZgorICAgICAgZnByaW50ZiAoc3RyZWFtLCAic3RhdGlj IGludCBjb3VudDtcbiIpOworICAgICAgZnByaW50ZiAoc3RyZWFtLCAidHlwZWRlZiB2b2lkIGVu dHJ5X3B0KCk7XG4iKTsKKyAgICAgIHdyaXRlX2xpc3Rfd2l0aF9hc20gKHN0cmVhbSwgImV4dGVy biBlbnRyeV9wdCAiLCBjb25zdHJ1Y3RvcnMuZmlyc3QpOworI2lmZGVmIENPTExFQ1RfRVhQT1JU X0xJU1QKKyAgICB9CisjZW5kaWYKKworI2lmZGVmIENPTExFQ1RfRVhQT1JUX0xJU1QKKyAgaWYg KGFpeGJjZHRvcnNfZmxhZyAmJiAhc2hhcmVkX29iaikKKyAgICB7CisgICAgICAvKiBVc2UgX19D X3J1bnRpbWVfcHN0YXJ0dXAgdG8gcnVuIGN0b3JzIGFuZCByZWdpc3RlciBkdG9ycy4KKwkgVGhp cyB3aG9sZSBwYXJ0IHNob3VsZCBub3JtYWxseSBiZSBpbiBsaWJnY2MgYnV0IGFzCisJIEFJWCBj ZHRvcnMgZm9ybWF0IGlzIGN1cnJlbnRseSBub3QgdGhlIGRlZmF1bHQsIG1hbmFnZWQKKwkgdGhh dCBpbiBjb2xsZWN0Mi4gICovCisgICAgICBmcHJpbnRmIChzdHJlYW0sICJleHRlcm4gdm9pZCAo KiBfY2R0b3JzW10pICh2b2lkKTtcbiIpOworICAgICAgZnByaW50ZiAoc3RyZWFtLCAiZXh0ZXJu IHZvaWQgX19ydW5faW5pdGlhbF9jdG9ycyAodm9pZCAoKiopICh2b2lkKSk7XG4iKTsKKyAgICAg IGZwcmludGYgKHN0cmVhbSwgImV4dGVybiB2b2lkIF9fcnVuX2ZpbmFsX2R0b3JzICh2b2lkKTtc biIpOworICAgICAgZnByaW50ZiAoc3RyZWFtLCAidm9pZCBfQUlYX2luaXQodm9pZClcbiIpOwor ICAgICAgZnByaW50ZiAoc3RyZWFtLCAie1xuIik7CisgICAgICBmcHJpbnRmIChzdHJlYW0sICIg IF9fcnVuX2luaXRpYWxfY3RvcnMoJl9jZHRvcnNbMF0pO1xuIik7CisgICAgICBmcHJpbnRmIChz dHJlYW0sICIgIF9fcnVuX2ZpbmFsX2R0b3JzKCk7XG4iKTsKKyAgICAgIGZwcmludGYgKHN0cmVh bSwgIn1cbiIpOworICAgICAgZnByaW50ZiAoc3RyZWFtLCAidm9pZCAoKl9fQ19ydW50aW1lX3Bz dGFydHVwKSAodm9pZCkgPSBfQUlYX2luaXQ7XG4iKTsKKyAgICAgIGZwcmludGYgKHN0cmVhbSwg IlxuIik7CisKKyAgICAgIC8qIGNydGN4YSBpcyBjb21waWxlZCB3aXRob3V0IC1tY2R0b3JzPWFp eCBmbGFnIHRodXMgd2UgbXVzdAorCSBtYW51YWxseSBlbnN1cmUgdGhhdCBfX2luaXRfYWl4X2xp YmdjY19jeGFfYXRleGl0IGlzIGNhbGxlZAorCSB3aXRoIEFJWCBmb3JtYXQuICAqLworICAgICAg ZnByaW50ZiAoc3RyZWFtLCAidm9pZCBfX3N0ZXJtNjU1MzVfMF9faW5pdF9haXhfbGliZ2NjX2N4 YV9hdGV4aXQgKHZvaWQpXG4iKTsKKyAgICAgIGZwcmludGYgKHN0cmVhbSwgIntcbiIpOworICAg ICAgZnByaW50ZiAoc3RyZWFtLCAiICBfX2luaXRfYWl4X2xpYmdjY19jeGFfYXRleGl0ICgpO1xu Iik7CisgICAgICBmcHJpbnRmIChzdHJlYW0sICJ9XG4iKTsKKyAgICB9CisjZW5kaWYKIAogICBp ZiAoZnJhbWVzKQogICAgIHsKQEAgLTIxMDIsNyArMjE1OSwxMiBAQCB3cml0ZV9jX2ZpbGVfc3Rh dCAoRklMRSAqc3RyZWFtLCBjb25zdCBjaGFyICpuYW1lIEFUVFJJQlVURV9VTlVTRUQpCiAgICAg ICBmcHJpbnRmIChzdHJlYW0sICJleHRlcm4gdm9pZCAqX19nY2NfdW53aW5kX2RiYXNlO1xuIik7 CiAjZW5kaWYKIAotICAgICAgZnByaW50ZiAoc3RyZWFtLCAic3RhdGljIHZvaWQgcmVnX2ZyYW1l ICgpIHtcbiIpOworI2lmZGVmIENPTExFQ1RfRVhQT1JUX0xJU1QKKyAgICAgIGlmIChhaXhiY2R0 b3JzX2ZsYWcpCisJZnByaW50ZiAoc3RyZWFtLCAidm9pZCAlcyAoKSB7XG4iLCByZWdmcmFtZV9u YW1lKTsKKyAgICAgIGVsc2UKKyNlbmRpZgorCWZwcmludGYgKHN0cmVhbSwgInN0YXRpYyB2b2lk IHJlZ19mcmFtZSAoKSB7XG4iKTsKICAgICAgIGZwcmludGYgKHN0cmVhbSwgIlx0c3RhdGljIHN0 cnVjdCBvYmplY3Qgb2I7XG4iKTsKICNpZmRlZiBUQVJHRVRfQUlYX1ZFUlNJT04KICAgICAgIC8q IFVzZSBfX2djY191bndpbmRfZGJhc2UgYXMgdGhlIGJhc2UgYWRkcmVzcyBmb3IgZGF0YSBvbiBB SVguCkBAIC0yMTE0LDExICsyMTc2LDI0IEBAIHdyaXRlX2NfZmlsZV9zdGF0IChGSUxFICpzdHJl YW0sIGNvbnN0IGNoYXIgKm5hbWUgQVRUUklCVVRFX1VOVVNFRCkKICNlbmRpZgogICAgICAgZnBy aW50ZiAoc3RyZWFtLCAiXHR9XG4iKTsKIAotICAgICAgZnByaW50ZiAoc3RyZWFtLCAic3RhdGlj IHZvaWQgZGVyZWdfZnJhbWUgKCkge1xuIik7CisjaWZkZWYgQ09MTEVDVF9FWFBPUlRfTElTVAor ICAgICAgaWYgKGFpeGJjZHRvcnNfZmxhZykKKwlmcHJpbnRmIChzdHJlYW0sICJ2b2lkICVzICgp IHtcbiIsIGRlcmVnZnJhbWVfbmFtZSk7CisgICAgICBlbHNlCisjZW5kaWYKKwlmcHJpbnRmIChz dHJlYW0sICJzdGF0aWMgdm9pZCBkZXJlZ19mcmFtZSAoKSB7XG4iKTsKICAgICAgIGZwcmludGYg KHN0cmVhbSwgIlx0X19kZXJlZ2lzdGVyX2ZyYW1lX2luZm8gKGZyYW1lX3RhYmxlKTtcbiIpOwog ICAgICAgZnByaW50ZiAoc3RyZWFtLCAiXHR9XG4iKTsKICAgICB9CiAKKyNpZmRlZiBDT0xMRUNU X0VYUE9SVF9MSVNUCisgIC8qIEZpbGVzIGJ1aWx0IHdpdGggdGhlIG5ldyBBSVggY2R0b3JzIGZv cm1hdCBkb24ndCBuZWVkIHRvCisgICAgIGV4cGxpY2l0bHkgY2FsbCB0aGVtLgorICAgICBOT1RF OiBUaGlzIGJyZWFrcyBjb21wYXRpYmlsaXR5IHdpdGggcHJldmlvdXNseS1idWlsdCBmaWxlcy4g ICovCisgIGlmIChhaXhiY2R0b3JzX2ZsYWcpCisgICAgcmV0dXJuOworI2VuZGlmCisKICNpZmRl ZiBDT0xMRUNUX0VYUE9SVF9MSVNUCiAgIC8qIFNldCB2aXNpYmlsaXR5IG9mIGluaXRpYWxpemVy cyB0byBkZWZhdWx0LiAgKi8KICAgaWYgKHZpc2liaWxpdHlfZmxhZykKQEAgLTIxMzAsNyArMjIw NSw3IEBAIHdyaXRlX2NfZmlsZV9zdGF0IChGSUxFICpzdHJlYW0sIGNvbnN0IGNoYXIgKm5hbWUg QVRUUklCVVRFX1VOVVNFRCkKICAgICAgIGZwcmludGYgKHN0cmVhbSwgIlx0c3RhdGljIGVudHJ5 X3B0ICpjdG9yc1tdID0ge1xuIik7CiAgICAgICB3cml0ZV9saXN0IChzdHJlYW0sICJcdFx0Iiwg Y29uc3RydWN0b3JzLmZpcnN0KTsKICAgICAgIGlmIChmcmFtZXMpCi0JZnByaW50ZiAoc3RyZWFt LCAiXHRyZWdfZnJhbWUsXG4iKTsKKwlmcHJpbnRmIChzdHJlYW0sICJcdCVzLFxuIiwgcmVnZnJh bWVfbmFtZSk7CiAgICAgICBmcHJpbnRmIChzdHJlYW0sICJcdH07XG4iKTsKICAgICAgIGZwcmlu dGYgKHN0cmVhbSwgIlx0ZW50cnlfcHQgKipwO1xuIik7CiAgICAgICBmcHJpbnRmIChzdHJlYW0s ICJcdGlmIChjb3VudCsrICE9IDApIHJldHVybjtcbiIpOwpAQCAtMjE0Nyw3ICsyMjIyLDcgQEAg d3JpdGVfY19maWxlX3N0YXQgKEZJTEUgKnN0cmVhbSwgY29uc3QgY2hhciAqbmFtZSBBVFRSSUJV VEVfVU5VU0VEKQogICAgICAgZnByaW50ZiAoc3RyZWFtLCAiXHRzdGF0aWMgZW50cnlfcHQgKmR0 b3JzW10gPSB7XG4iKTsKICAgICAgIHdyaXRlX2xpc3QgKHN0cmVhbSwgIlx0XHQiLCBkZXN0cnVj dG9ycy5maXJzdCk7CiAgICAgICBpZiAoZnJhbWVzKQotCWZwcmludGYgKHN0cmVhbSwgIlx0ZGVy ZWdfZnJhbWUsXG4iKTsKKwlmcHJpbnRmIChzdHJlYW0sICJcdCVzLFxuIiwgZGVyZWdmcmFtZV9u YW1lKTsKICAgICAgIGZwcmludGYgKHN0cmVhbSwgIlx0fTtcbiIpOwogICAgICAgZnByaW50ZiAo c3RyZWFtLCAiXHRlbnRyeV9wdCAqKnA7XG4iKTsKICAgICAgIGZwcmludGYgKHN0cmVhbSwgIlx0 aWYgKC0tY291bnQgIT0gMCkgcmV0dXJuO1xuIik7CmRpZmYgLS1naXQgYS9nY2MvY29uZmlnL3Jz NjAwMC9haXguaCBiL2djYy9jb25maWcvcnM2MDAwL2FpeC5oCmluZGV4IDBmNGQ4Y2IyZGM4Li5k OWVkODhjYjQ1OSAxMDA2NDQKLS0tIGEvZ2NjL2NvbmZpZy9yczYwMDAvYWl4LmgKKysrIGIvZ2Nj L2NvbmZpZy9yczYwMDAvYWl4LmgKQEAgLTI4NCwzICsyODQsNTkgQEAKICNkZWZpbmUgU1VCVEFS R0VUX0RSSVZFUl9TRUxGX1NQRUNTCVwKICIle202NDotbWFpeDY0fSAlPG02NCIsCQkJXAogIiV7 bTMyOi1tYWl4MzJ9ICU8bTMyIgorCisvKiBTdXBwb3J0IGZvciBjZHRvcnMgZGV0ZWN0ZWQgYnkg QUlYIGxpbmtlci4KKyAgIFdpdGggLWJjZHRvcnMgZmxhZywgQUlYIGxpbmtlciBpcyBhYmxlIHRv IGhhbmRsZSBpbml0aWFsaXNlcnMKKyAgIGJ5IGl0c2VsZi4gRm9yIHRoYXQsIHRoZXNlIGluaXRh bGlzZXJzIG11c3QgYmUgbmFtZWQgd2l0aCB0aGUKKyAgIGZvbGxvd2luZyBzY2hlbWE6IF9fc2lu aXR7cHJpb3JpdHl9X3tuYW1lfS4gRm9yIGRlc3RydWN0b3JzLAorICAgX19zaW5pdCBpcyByZXBs YWNlZCBieSBfX3N0ZXJtLgorCisgICBGb3Igbm93LCB0aGlzIHBhcnQgaXMgZW5hYmxlZCBvbmx5 IHdoZW4gLW1jZHRvcnM9YWl4IGZsYWcgaXMKKyAgIHBhc3NlZCB0byBnY2MuCisKKyAgIFRoZSBU QVJHRVRfRklMRV9GVU5DVElPTl9GT1JNQVQgYWxsb3dzIHRvIGNoYW5nZSB0aGUgZGVmYXVsdCBu YW1lIG9mCisgICBnY2MgY29uc3RydWN0b3JzIGFuZCBkZXN0cnVjdG9ycyB0byBvbmUgd2hpY2gg d2lsbCBiZSB1bmRlcnN0YW5kIGJ5CisgICBBSVggbGlua2VyLgorCisgICBOT1RFOgorICAgc2lu aXQvc3Rlcm0gZnVuY3Rpb25zIHdpbGwgYmUgdHJpZ2dlcmVkIG9ubHkgaWYgLWJjZHRvcnMgaXMg cGFzc2VkCisgICB0byB0aGUgbGlua2VyIHdoZW4gYnVpbGRpbmcgdGhlIGJpbmFyeS4gRXZlbiBs aWJyYXJpZXMgYnVpbHQgd2l0aAorICAgLWJjZHRvcnMgd29uJ3QgdHJpZ2dlcmVkIHRob3NlIGZ1 bmN0aW9ucyBieSB0aGVtc2VsdmVzLgorICAgSWRlYWxseSwgaWYgb25lIGRheSBBSVggd2F5IGJl Y29tZSB0aGUgZGVmYXVsdCwgd2Ugd291bGQgbGlrZQorICAgdG8gZW5zdXJlIGZ1bGwgY29tcGF0 aWJpbGl0eSBiZXR3ZWVuIHByZXZpb3VzbHktbWFkZSBsaWJyYXJpZXMKKyAgIGFuZCBuZXcgb25l cy4gSG93ZXZlciwgdGhpcyBpcyBoYXJkbHkgcG9zc2libGUuCisgICBUaGUgbWFpbiByZWFzb24g d2h5IHRoaXMgaXNuJ3Qgd29ya2luZyBpcyB0aGF0IG9sZCBsaWJyYXJpZXMgbmVlZAorICAgdG8g YmUgYWJsZSB0byBjYWxsIGNvbnN0cnVjdG9ycyBvZiBuZXcgbGlicmFyaWVzIHVzaW5nIHRoZSBw cmV2aW91cworICAgd2F5LCBpZSB1c2luZyBHTE9CQUxfQUlYSSBzeW1ib2xzLiBCdXQgaWYgYW4g b2xkIGxpYnJhcnkgbG9hZGluZyBhCisgICBuZXcgbGlicmFyeSBpcyBjYWxsZWQgYnkgYSBuZXcg YmluYXJ5ICh0aHVzIHdpdGggLWJjZHRvcnMgZW5hYmxlZCksCisgICBpdCB3aWxsIHRyaWdnZXIg dGhlIG5ldyBsaWJyYXJ5J3MgY2R0b3JzIHR3aWNlLgorICAgVE9ETzogVGhlIG9ubHkgc29sdXRp b24gaXMgdG8gbW9kaWZ5IHRoZSB3cmFwcGVyIGNyZWF0ZWQgYnkgZ2NjCisgICBhcm91bmQgY29u c3RydWN0b3JzIGFuZCBkZXN0cnVjdG9ycyBzbyB0aGF0IGl0IGVuc3VyZXMgdGhhdCB0aGV5Cisg ICBhcmUgY2FsbGVkIG9ubHkgb25jZS4KKyovCisjZGVmaW5lIEZJTEVfU0lOSVRfRk9STUFUICJf X3Npbml0JXNfJXMiCisjZGVmaW5lIEZJTEVfU1RFUk1fRk9STUFUICJfX3N0ZXJtJXNfJXMiCisj ZGVmaW5lIFRBUkdFVF9GSUxFX0ZVTkNUSU9OX0ZPUk1BVChUWVBFLCBCVUYsIFNVQk5BTUUpCQkJ XAorICBkbwkJCQkJCQkJCVwKKyAgICB7CQkJCQkJCQkJXAorICAgICAgaWYgKHJzNjAwMF9jdXJy ZW50X2NkdG9ycyA9PSBDRFRPUlNfQUlYICYmIChUWVBFWzBdID09ICdJJykpCVwKKwl7CQkJCQkJ CQlcCisJICBCVUYgPSAoY2hhciAqKSBhbGxvY2EgKHNpemVvZiAoRklMRV9TSU5JVF9GT1JNQVQp CQlcCisJCQkJICsgc3RybGVuIChTVUJOQU1FKSArIHN0cmxlbiAoVFlQRSkgLSAyKTsgXAorCSAg c3ByaW50ZiAoQlVGLCBGSUxFX1NJTklUX0ZPUk1BVCwgVFlQRSArIDIsIFNVQk5BTUUpOwkJXAor CX0JCQkJCQkJCVwKKyAgICAgIGVsc2UgaWYgKHJzNjAwMF9jdXJyZW50X2NkdG9ycyA9PSBDRFRP UlNfQUlYICYmIChUWVBFWzBdID09ICdEJykpCVwKKwl7CQkJCQkJCQlcCisJICBCVUYgPSAoY2hh ciAqKSBhbGxvY2EgKHNpemVvZiAoRklMRV9TVEVSTV9GT1JNQVQpCQlcCisJCQkJICsgc3RybGVu IChTVUJOQU1FKSArIHN0cmxlbiAoVFlQRSkgLSAyKTsgXAorCSAgc3ByaW50ZiAoQlVGLCBGSUxF X1NURVJNX0ZPUk1BVCwgVFlQRSArIDIsIFNVQk5BTUUpOwkJXAorCX0JCQkJCQkJCVwKKyAgICAg IGVsc2UJCQkJCQkJCVwKKwl7CQkJCQkJCQlcCisJICBCVUYgPSAoY2hhciAqKSBhbGxvY2EgKHNp emVvZiAoRklMRV9GVU5DVElPTl9GT1JNQVQpCQlcCisJCQkJICsgc3RybGVuIChTVUJOQU1FKSAr IHN0cmxlbiAoVFlQRSkpOwlcCisJICBzcHJpbnRmIChCVUYsIEZJTEVfRlVOQ1RJT05fRk9STUFU LCBUWVBFLCBTVUJOQU1FKTsJCVwKKwl9CQkJCQkJCQlcCisgICAgfQkJCQkJCQkJCVwKKyAgd2hp bGUoMCkKKwpkaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9yczYwMDAvYWl4NjQub3B0IGIvZ2NjL2Nv bmZpZy9yczYwMDAvYWl4NjQub3B0CmluZGV4IDE1ZDg2M2ZhMGEyLi41MDhlNzlmMTdmOSAxMDA2 NDQKLS0tIGEvZ2NjL2NvbmZpZy9yczYwMDAvYWl4NjQub3B0CisrKyBiL2djYy9jb25maWcvcnM2 MDAwL2FpeDY0Lm9wdApAQCAtNTksMyArNTksMjAgQEAgRHJpdmVyCiAKIG0zMgogRHJpdmVyCisK K21jZHRvcnM9CitUYXJnZXQgUmVqZWN0TmVnYXRpdmUgSm9pbmVkIEVudW0ocnM2MDAwX2NkdG9y cykgVmFyKHJzNjAwMF9jdXJyZW50X2NkdG9ycykKK1NlbGVjdCBjb25zdHJ1Y3RvcnMgZm9ybWF0 LgorCitFbnVtCitOYW1lKHJzNjAwMF9jZHRvcnMpIFR5cGUoZW51bSByczYwMDBfY2R0b3JzKQor S25vd24gY29uc3RydWN0b3JzIGZvcm1hdCAoZm9yIHVzZSB3aXRoIHRoZSAtbWNkdG9ycz0gb3B0 aW9uKToKKworRW51bVZhbHVlCitFbnVtKHJzNjAwMF9jZHRvcnMpIFN0cmluZyhhaXgpIFZhbHVl KENEVE9SU19BSVgpCisKK0VudW1WYWx1ZQorRW51bShyczYwMDBfY2R0b3JzKSBTdHJpbmcoZ2Nj KSBWYWx1ZShDRFRPUlNfR0NDKQorCitUYXJnZXRWYXJpYWJsZQorZW51bSByczYwMDBfY2R0b3Jz IHJzNjAwMF9jdXJyZW50X2NkdG9ycyA9IENEVE9SU19HQ0MKXCBObyBuZXdsaW5lIGF0IGVuZCBv ZiBmaWxlCmRpZmYgLS1naXQgYS9nY2MvY29uZmlnL3JzNjAwMC9haXg3MS5oIGIvZ2NjL2NvbmZp Zy9yczYwMDAvYWl4NzEuaAppbmRleCA1Nzg1ZTY3M2Q0Yi4uNTE3YmZjMDIwZjAgMTAwNjQ0Ci0t LSBhL2djYy9jb25maWcvcnM2MDAwL2FpeDcxLmgKKysrIGIvZ2NjL2NvbmZpZy9yczYwMDAvYWl4 NzEuaApAQCAtMTc2LDcgKzE3Niw3IEBAIGRvIHsJCQkJCQkJCQlcCiAjZGVmaW5lIExJTktfU1BF QzY0ICItYjY0IgogI2RlZmluZSBMSU5LX1NQRUNfQ09NTU9OICItYnBUOjB4MTAwMDAwMDAgLWJw RDoweDIwMDAwMDAwICV7IXI6LWJ0ZXh0cm99XAogICAgJXtzdGF0aWM6LWJuc28gJShsaW5rX3N5 c2NhbGxzKSB9ICV7c2hhcmVkOi1iTTpTUkUgJXshZTotYm5vZW50cnl9fVwKLSAgICV7bXBlOi1i aW5pdGZpbmk6cG9lX3JlbW90ZV9tYWlufSAiCisgICAle21wZTotYmluaXRmaW5pOnBvZV9yZW1v dGVfbWFpbn0gJXttY2R0b3JzPWFpeDotYmNkdG9yc30iCiAKICN1bmRlZiBTVEFSVEZJTEVfU1BF QwogI2lmIERFRkFVTFRfQVJDSDY0X1AKZGlmZiAtLWdpdCBhL2djYy9jb25maWcvcnM2MDAwL2Fp eDcyLmggYi9nY2MvY29uZmlnL3JzNjAwMC9haXg3Mi5oCmluZGV4IDViNzNmMDU4MzE4Li43NTk4 M2IxYTk3OSAxMDA2NDQKLS0tIGEvZ2NjL2NvbmZpZy9yczYwMDAvYWl4NzIuaAorKysgYi9nY2Mv Y29uZmlnL3JzNjAwMC9haXg3Mi5oCkBAIC0xNzcsNyArMTc3LDcgQEAgZG8gewkJCQkJCQkJCVwK ICNkZWZpbmUgTElOS19TUEVDNjQgIi1iNjQiCiAjZGVmaW5lIExJTktfU1BFQ19DT01NT04gIi1i cFQ6MHgxMDAwMDAwMCAtYnBEOjB4MjAwMDAwMDAgJXshcjotYnRleHRyb31cCiAgICAle3N0YXRp YzotYm5zbyAlKGxpbmtfc3lzY2FsbHMpIH0gJXtzaGFyZWQ6LWJNOlNSRSAleyFlOi1ibm9lbnRy eX19XAotICAgJXttcGU6LWJpbml0ZmluaTpwb2VfcmVtb3RlX21haW59ICIKKyAgICV7bXBlOi1i aW5pdGZpbmk6cG9lX3JlbW90ZV9tYWlufSAle21jZHRvcnM9YWl4Oi1iY2R0b3JzfSIKIAogI3Vu ZGVmIFNUQVJURklMRV9TUEVDCiAjaWYgREVGQVVMVF9BUkNINjRfUApkaWZmIC0tZ2l0IGEvZ2Nj L2NvbmZpZy9yczYwMDAvYWl4NzMuaCBiL2djYy9jb25maWcvcnM2MDAwL2FpeDczLmgKaW5kZXgg YTI5YmE4YjZjZmEuLjVmODdhMjliNDlmIDEwMDY0NAotLS0gYS9nY2MvY29uZmlnL3JzNjAwMC9h aXg3My5oCisrKyBiL2djYy9jb25maWcvcnM2MDAwL2FpeDczLmgKQEAgLTE3OCw3ICsxNzgsNyBA QCBkbyB7CQkJCQkJCQkJXAogI2RlZmluZSBMSU5LX1NQRUM2NCAiLWI2NCIKICNkZWZpbmUgTElO S19TUEVDX0NPTU1PTiAiLWJwVDoweDEwMDAwMDAwIC1icEQ6MHgyMDAwMDAwMCAleyFyOi1idGV4 dHJvfVwKICAgICV7c3RhdGljOi1ibnNvICUobGlua19zeXNjYWxscykgfSAle3NoYXJlZDotYk06 U1JFICV7IWU6LWJub2VudHJ5fX1cCi0gICAle21wZTotYmluaXRmaW5pOnBvZV9yZW1vdGVfbWFp bn0gIgorICAgJXttcGU6LWJpbml0ZmluaTpwb2VfcmVtb3RlX21haW59ICV7bWNkdG9ycz1haXg6 LWJjZHRvcnN9IgogCiAjdW5kZWYgU1RBUlRGSUxFX1NQRUMKICNpZiBERUZBVUxUX0FSQ0g2NF9Q CmRpZmYgLS1naXQgYS9nY2MvY29uZmlnL3JzNjAwMC9yczYwMDAtb3B0cy5oIGIvZ2NjL2NvbmZp Zy9yczYwMDAvcnM2MDAwLW9wdHMuaAppbmRleCA1MWQ2YzY1NDg0Mi4uYWI3OGYzMWRjOWQgMTAw NjQ0Ci0tLSBhL2djYy9jb25maWcvcnM2MDAwL3JzNjAwMC1vcHRzLmgKKysrIGIvZ2NjL2NvbmZp Zy9yczYwMDAvcnM2MDAwLW9wdHMuaApAQCAtMTQ3LDYgKzE0NywxNCBAQCBlbnVtIHN0YWNrX3By b3RlY3Rvcl9ndWFyZCB7CiAgIFNTUF9HTE9CQUwJCQkvKiBnbG9iYWwgY2FuYXJ5ICovCiB9Owog CisvKiBDb25zdHJ1Y3RvcnMgZm9ybWF0IGZvciBBSVgzMgorICAgYWl4OiBBSVggZm9ybWF0IChf X3Npbml0L19fc3Rlcm0pCisgICBnY2M6IEdDQyBmb3JtYXQgKF9HTE9CQUxfX0kvX0dMT0JBTF9f RikgKi8KK2VudW0gcnM2MDAwX2NkdG9ycyB7CisgIENEVE9SU19BSVgsCisgIENEVE9SU19HQ0MK K307CisKIC8qIE5vIGVudW1lcmF0aW9uIGlzIGRlZmluZWQgdG8gaW5kZXggdGhlIC1tY3B1PSB2 YWx1ZXMgKGVudHJpZXMgaW4KICAgIHByb2Nlc3Nvcl90YXJnZXRfdGFibGUpLCB3aXRoIHRoZSB0 eXBlIGludCBiZWluZyB1c2VkIGluc3RlYWQsIGJ1dAogICAgd2UgbmVlZCB0byBkaXN0aW5ndWlz aCB0aGUgc3BlY2lhbCAibmF0aXZlIiB2YWx1ZS4gICovCmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1 aXRlL2djYy50YXJnZXQvcG93ZXJwYy9jb25zdHJ1Y3Rvci1haXguYyBiL2djYy90ZXN0c3VpdGUv Z2NjLnRhcmdldC9wb3dlcnBjL2NvbnN0cnVjdG9yLWFpeC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IDAwMDAwMDAwMDAwLi42NTIyMmE1ZTIzOQotLS0gL2Rldi9udWxsCisrKyBiL2djYy90 ZXN0c3VpdGUvZ2NjLnRhcmdldC9wb3dlcnBjL2NvbnN0cnVjdG9yLWFpeC5jCkBAIC0wLDAgKzEs MTIgQEAKKy8qIHsgZGctZG8gcnVuIHsgdGFyZ2V0IHBvd2VycGMqLSotYWl4KiB9IH0gKi8KKy8q IHsgZGctb3B0aW9ucyAiLW1jZHRvcnM9YWl4IiB9ICovCisKK2ludCBpOworCit2b2lkIGhlbGxv ICh2b2lkKSBfX2F0dHJpYnV0ZV9fICgoY29uc3RydWN0b3IpKTsKK3ZvaWQgaGVsbG8gKHZvaWQp IHsgaSA9IDE7IH0KKworaW50IG1haW4gKHZvaWQpIHsKKyAgaWYgKGkgIT0gMSkKKyAgICByZXR1 cm4gMTsKK30KZGlmZiAtLWdpdCBhL2djYy90cmVlLmMgYi9nY2MvdHJlZS5jCmluZGV4IDQ4NmNk YjBlN2M3Li43MGJhYzBiMTk0MyAxMDA2NDQKLS0tIGEvZ2NjL3RyZWUuYworKysgYi9nY2MvdHJl ZS5jCkBAIC04NjMzLDYgKzg2MzMsMTAgQEAgZ2V0X2ZpbGVfZnVuY3Rpb25fbmFtZSAoY29uc3Qg Y2hhciAqdHlwZSkKICAgICB9CiAKICAgY2xlYW5fc3ltYm9sX25hbWUgKHEpOworCisjaWZkZWYg VEFSR0VUX0ZJTEVfRlVOQ1RJT05fRk9STUFUCisgIFRBUkdFVF9GSUxFX0ZVTkNUSU9OX0ZPUk1B VCh0eXBlLCBidWYsIHApOworI2Vsc2UKICAgYnVmID0gKGNoYXIgKikgYWxsb2NhIChzaXplb2Yg KEZJTEVfRlVOQ1RJT05fRk9STUFUKSArIHN0cmxlbiAocCkKIAkJCSArIHN0cmxlbiAodHlwZSkp OwogCkBAIC04NjQxLDYgKzg2NDUsNyBAQCBnZXRfZmlsZV9mdW5jdGlvbl9uYW1lIChjb25zdCBj aGFyICp0eXBlKQogICAgICB0aGUgcHJvZ3JhbSkgcmF0aGVyIHRoYW4gdGhlIGZpbGUgbmFtZSAo d2hpY2ggaW1wb3NlcyBleHRyYQogICAgICBjb25zdHJhaW50cykuICAqLwogICBzcHJpbnRmIChi dWYsIEZJTEVfRlVOQ1RJT05fRk9STUFULCB0eXBlLCBwKTsKKyNlbmRpZgogCiAgIHJldHVybiBn ZXRfaWRlbnRpZmllciAoYnVmKTsKIH0KLS0gCjIuMzMuMAoK --_002_PA4PR02MB6686D2D6132441155E4B0CF9EABC9PA4PR02MB6686eurp_--