From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from EUR03-DBA-obe.outbound.protection.outlook.com (mail-dbaeur03on2055.outbound.protection.outlook.com [40.107.104.55]) by sourceware.org (Postfix) with ESMTPS id 94C633858D28 for ; Wed, 18 Jan 2023 17:18:47 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 94C633858D28 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=arm.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=arm.com 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=Q8Hiz3Je+WQj61yl2zAW7wO/dvctGDxw8b18RzSmoWc=; b=OCt45NHNbmjrMT5VZvLCGO+Jp7r8Lb28ydh4f30E09TAQnO53JYYyX0z517qLq0hCiKLKBX+pHP9urf9lik1h7Y6VES4874zJL3RcMi1OD8Yrc0HALFZCVs4erfjddK8QOrye0Pa4NtfTV6pgqdV+1YKQDzfRD2ZIXr2kv4mpbQ= Received: from AS9PR06CA0626.eurprd06.prod.outlook.com (2603:10a6:20b:46e::35) by AS2PR08MB8477.eurprd08.prod.outlook.com (2603:10a6:20b:55b::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5986.23; Wed, 18 Jan 2023 17:18:45 +0000 Received: from AM7EUR03FT014.eop-EUR03.prod.protection.outlook.com (2603:10a6:20b:46e:cafe::ac) by AS9PR06CA0626.outlook.office365.com (2603:10a6:20b:46e::35) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6002.19 via Frontend Transport; Wed, 18 Jan 2023 17:18:45 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 63.35.35.123) smtp.mailfrom=arm.com; dkim=pass (signature was verified) header.d=armh.onmicrosoft.com;dmarc=pass action=none header.from=arm.com; Received-SPF: Pass (protection.outlook.com: domain of arm.com designates 63.35.35.123 as permitted sender) receiver=protection.outlook.com; client-ip=63.35.35.123; helo=64aa7808-outbound-1.mta.getcheckrecipient.com; pr=C Received: from 64aa7808-outbound-1.mta.getcheckrecipient.com (63.35.35.123) by AM7EUR03FT014.mail.protection.outlook.com (100.127.140.163) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6002.13 via Frontend Transport; Wed, 18 Jan 2023 17:18:45 +0000 Received: ("Tessian outbound baf1b7a96f25:v132"); Wed, 18 Jan 2023 17:18:45 +0000 X-CR-MTA-TID: 64aa7808 Received: from 20c94f12864b.2 by 64aa7808-outbound-1.mta.getcheckrecipient.com id AD59D786-5723-4993-ABB9-40796609B191.1; Wed, 18 Jan 2023 17:18:39 +0000 Received: from EUR03-VI1-obe.outbound.protection.outlook.com by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id 20c94f12864b.2 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384); Wed, 18 Jan 2023 17:18:39 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=dkpIBqIveseznUhEgLFrn+IUFdApiBlDR2Jlh/3K8zW4ZqlzvOTy8R5MXT+iPkfX1+hEzQWK+0MALbpJjrBrfVj1CkXsKOHa7A53f+uVNMjO95o5Tuja2TXjcbG0BGLXkztJ9CHKYP/upAeSXdz/ASvx/AektyN1GPiT26IimhOlNFvOl7sMnl9wE9cCScKIfoXkR1OhswiXDtPl5kblncmlyzwKwceGRDOO/MrSvwW+UBDwAiw79LG1jmrFKVioFc/Wd0x9tGhM6T5Fol21ErSwaU0IdOq1jB7A7efPK+OMW1+GSib5FStoEGfVUopRC4vlsxSB6hpnTyGEUOzeBA== 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=Q8Hiz3Je+WQj61yl2zAW7wO/dvctGDxw8b18RzSmoWc=; b=EwM7vM3GagvwUiG+UU3UZtSJ6+fdbmXYah+bEq+mi/p5ZwYHrZzQM/ddlV30K6bhooP5Pbq/Wz+fMuSNgla+1MxKvU60It7Yj+2zoPXrFL/8OZwAIMHdUxdD/Iz0Ci80oZJ88EFbCX5wqkajtfjI0RtuN/QAGLWVt0LToYnULqvBbY2/i95pWXD+pT01spgsoItdXU6GAwRGOMnjZOWh9oUOpErIpkwjUmcoiQDfMSuyEjxziPdk42qiQs48shwcOTSh3GK9+84w7irHPr0DmR93EPbZdft8dE2IhJ6wDgqtb2KT5WXSdHlT7kAbcmz86KnWut1ZvyAsl/92YthhGg== 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=Q8Hiz3Je+WQj61yl2zAW7wO/dvctGDxw8b18RzSmoWc=; b=OCt45NHNbmjrMT5VZvLCGO+Jp7r8Lb28ydh4f30E09TAQnO53JYYyX0z517qLq0hCiKLKBX+pHP9urf9lik1h7Y6VES4874zJL3RcMi1OD8Yrc0HALFZCVs4erfjddK8QOrye0Pa4NtfTV6pgqdV+1YKQDzfRD2ZIXr2kv4mpbQ= Received: from VE1PR08MB4893.eurprd08.prod.outlook.com (2603:10a6:802:aa::13) by AS4PR08MB7685.eurprd08.prod.outlook.com (2603:10a6:20b:504::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5986.23; Wed, 18 Jan 2023 17:18:36 +0000 Received: from VE1PR08MB4893.eurprd08.prod.outlook.com ([fe80::56ad:4b03:54ee:f36a]) by VE1PR08MB4893.eurprd08.prod.outlook.com ([fe80::56ad:4b03:54ee:f36a%4]) with mapi id 15.20.6002.024; Wed, 18 Jan 2023 17:18:35 +0000 From: Srinath Parvathaneni To: gcc Patches CC: Richard Earnshaw Subject: [GCC][PATCH 13/15, v6] arm: Add support for dwarf debug directives and pseudo hard-register for PAC feature. Thread-Topic: [GCC][PATCH 13/15, v6] arm: Add support for dwarf debug directives and pseudo hard-register for PAC feature. Thread-Index: AdkrYKg6Ip4cXDB6TNecRRbSwRiPgQ== Date: Wed, 18 Jan 2023 17:18:34 +0000 Message-ID: Accept-Language: en-GB, en-US Content-Language: en-US X-MS-Has-Attach: yes X-MS-TNEF-Correlator: x-ts-tracking-id: E5652B673D850F45BC9F8F91F169EE08.0 x-checkrecipientchecked: true Authentication-Results-Original: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=arm.com; x-ms-traffictypediagnostic: VE1PR08MB4893:EE_|AS4PR08MB7685:EE_|AM7EUR03FT014:EE_|AS2PR08MB8477:EE_ X-MS-Office365-Filtering-Correlation-Id: 005ddfb3-6664-4a0a-e87c-08daf9780dff x-checkrecipientrouted: true nodisclaimer: true X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam-Untrusted: BCL:0; X-Microsoft-Antispam-Message-Info-Original: 2ntzdO+XeIvOPptH/teWBXbtWQ3CJ7DO7Eg2Jhbgg3wdSH/sOAzQSEdlavxO15xTebNZBtJHFJWOQcyFeVRxeYR/WXjs0LP+yCgvsWuZes4H0HeYpTRtV7iSLh/Z5ZzYVilqmezmqIl3yBCKN8NTWgRaXh/T0vcOC8ygo0e/Bksg3AvA00Bb0peALQSEwwlJHuou8dmbIOX272bz0+8FWZSZlaEzVpjRvJ+Iak8XDbypeeC2XyywtSNsrnoi/UpKC0BFdInnyyCSJzFfg4z7jId/CTQCvEx1wOeiwSN0UjmTmRb1aNqkFXKcgGAYuJEgpxveNnSVkqHfJ0fRkwi52BrsZPRa+4m2uSn+sGe/6Ae39uK9JV5EUusCxwaDTj2Iz0roofFVhW1ixNZXpqVwlEzRNMRR0LptNESJyBQQHDqOgoLYOxvo6kRr3u1JgZ0UcWtkhyUayoisC9tcwa45gHyZ0EU/ChGW0l0NBKKD1Tr0PZqLSoiIavdNuLIN9uKu+sSmLMawU3vARH1uLGX9VT/JJrBAwsKAyE2v2Yoh/s5A4bbEf3+x2Y/oBhTkLAGZGkEP0bKRsuuBkWpUaiv7VwO/NHJKVsAZrpLEsdc+n1z+NF2L4cSjqYIWLHbxPvd3V2jw983a3tJRbrHzu1kGsKqtNX4kVYnn1be4mesLb4xshk2pxUHMXtKfjcaMkHmFLroKEVDioevPq7Bm+TQDVTiSuejw17t+TxDE13q+3wimsN4TN4aTQaQIHXEFBqeT/kivnLKhcg+N7oWpcGjxtw== X-Forefront-Antispam-Report-Untrusted: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:VE1PR08MB4893.eurprd08.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230022)(4636009)(39860400002)(346002)(136003)(396003)(366004)(376002)(451199015)(38100700002)(2906002)(6506007)(122000001)(99936003)(38070700005)(84970400001)(83380400001)(5660300002)(8936002)(52536014)(86362001)(33656002)(41300700001)(186003)(9686003)(966005)(478600001)(26005)(76116006)(66556008)(66946007)(8676002)(66476007)(64756008)(4326008)(66446008)(316002)(71200400001)(6916009)(55016003)(7696005);DIR:OUT;SFP:1101; Content-Type: multipart/mixed; boundary="_002_VE1PR08MB4893BF19D401DD903BE753269BC79VE1PR08MB4893eurp_" MIME-Version: 1.0 X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS4PR08MB7685 Original-Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=arm.com; X-EOPAttributedMessage: 0 X-MS-Exchange-Transport-CrossTenantHeadersStripped: AM7EUR03FT014.eop-EUR03.prod.protection.outlook.com X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id-Prvs: 53e8771d-5f14-4cdc-bdde-08daf97807ed X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: ymOXdAV7dTqNxh3qBVBYfWK2igsexjbvp+ERjErQ3IVnYfX5SfsBvYX8RQDR+EKrN5OPbJzAORKi7icXjPbI/cDCopJVTMx7vxMeA1deY4s4admkAo8J2YWWMtYqEj9PWDoKVRjS8AUL/a/Jl+f1IMWzRWbxsih+bn6hYUJga02Z86yHYJH/9bE2wmtawEwlErw2kcajmKXhFBHEga+XTU6/bOs62tGA78CYsWBjKEFr39kM2WAHZAw0QdAs8f4CLJGbGBRBI3zB2u/UnwOZ+wid4MmWpj5Ey9Vb+IVzhCauRysOB+dIrz3A5dg2crq4gdMq1q/STKbKtYgs+dvAU5pAiTNCRr0v4LRYgGBZ1QGy3hbMRmVSpU6GFcNyF7bWW7qdisabuF2Yhf2GGP1ufYK+Me8ZWZdgNDqV5CJ98m4QaH3NuUGU3ExdJbedYW6WPhzLaw3FZD0MZYinbBNdB5YdW17WRmrDjRaAwPWWs6OuakIiMz5jub+d1EQOtCmGrtwt9CPY+5CgeBgahNae5GOXyWWBt3bZAeWYv/Ef7hM5nY/AeBzDpILkViyYmXjySPksqu5zy5sUB/2g5cwv9Cy3mBvV0CSS4qEry12ZP4MPBPM2YVsWOss8tTWSepQjaAwedz7Zqdmqb6RiJCBpZnFB42mWToFx4aNGYLojOzxm9b5Tqm0/JZgWdJQCq2t12dWtaQhql0KG3iDXkY7+IgVhAnDmXm/NuAbVBncL1jecM2UPZf/VNQNnCbiZOS0og0M64tRsECEeNE6TcPMwLQ== X-Forefront-Antispam-Report: CIP:63.35.35.123;CTRY:IE;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:64aa7808-outbound-1.mta.getcheckrecipient.com;PTR:ec2-63-35-35-123.eu-west-1.compute.amazonaws.com;CAT:NONE;SFS:(13230022)(4636009)(136003)(396003)(376002)(346002)(39860400002)(451199015)(46966006)(36840700001)(40470700004)(99936003)(7696005)(186003)(8676002)(966005)(6506007)(478600001)(9686003)(26005)(41300700001)(52536014)(4326008)(47076005)(235185007)(5660300002)(8936002)(2906002)(36860700001)(84970400001)(70586007)(70206006)(83380400001)(82740400003)(33656002)(55016003)(40480700001)(40460700003)(82310400005)(81166007)(356005)(86362001)(6916009)(336012)(316002);DIR:OUT;SFP:1101; X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 18 Jan 2023 17:18:45.1832 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 005ddfb3-6664-4a0a-e87c-08daf9780dff X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d;Ip=[63.35.35.123];Helo=[64aa7808-outbound-1.mta.getcheckrecipient.com] X-MS-Exchange-CrossTenant-AuthSource: AM7EUR03FT014.eop-EUR03.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS2PR08MB8477 X-Spam-Status: No, score=-7.4 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,KAM_DMARC_NONE,KAM_SHORT,RCVD_IN_DNSWL_NONE,RCVD_IN_MSPIKE_H2,SPF_HELO_NONE,SPF_NONE,TXREP,UNPARSEABLE_RELAY autolearn=no autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: --_002_VE1PR08MB4893BF19D401DD903BE753269BC79VE1PR08MB4893eurp_ Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable Hello, This patch teaches the DWARF support in gcc about RA_AUTH_CODE pseudo hard-= register and also=20 updates the ".save", ".cfi_register", ".cfi_offset", ".cfi_restore" directi= ves accordingly. This patch also adds support to emit ".pacspval" directive when "pac ip, lr= , sp" instruction in generated in the assembly. RA_AUTH_CODE register number is 107 and it's dwarf register number is 143. Applying this patch on top of PACBTI series posted here https://gcc.gnu.org/pipermail/gcc-patches/2022-August/599658.html and when = compiling the following test.c with "-march=3Darmv8.1-m.main+mve+pacbti -mbranch-protection=3Dpac-r= et -mthumb -mfloat-abi=3Dhard fasynchronous-unwind-tables -g -O0 -S" command line options, the assembly o= utput after this patch looks like below: $cat test.c void fun1(int a); void fun(int a,...) { fun1(a); } int main() { fun (10); return 0; } $ arm-none-eabi-gcc -march=3Darmv8.1-m.main+mve+pacbti -mbranch-protection= =3Dpac-ret -mthumb -mfloat-abi=3Dhard -fasynchronous-unwind-tables -g -O0 -S test.s Assembly output: ... fun: ... .pacspval pac ip, lr, sp .cfi_register 143, 12 push {r3, r7, ip, lr} .save {r3, r7, ra_auth_code, lr} ... .cfi_offset 143, -24 ... .cfi_restore 143 ... aut ip, lr, sp bx lr ... main: ... .pacspval pac ip, lr, sp .cfi_register 143, 12 push {r3, r7, ip, lr} .save {r3, r7, ra_auth_code, lr} ... .cfi_offset 143, -8 ... .cfi_restore 143 ... aut ip, lr, sp bx lr ... Regression tested on arm-none-eabi target and found no regressions. Ok for master? Regards, Srinath. 2023-01-18 Srinath Parvathaneni * config/arm/aout.h (ra_auth_code): Add entry in enum. (emit_multi_reg_push): Add RA_AUTH_CODE register to dwarf frame expression. (arm_emit_multi_reg_pop): Restore RA_AUTH_CODE register. (arm_expand_prologue): Update frame related information and reg not= es for pac/pacbit insn. (arm_regno_class): Check for pac pseudo reigster. (arm_dbx_register_number): Assign ra_auth_code register number in d= warf. (arm_init_machine_status): Set pacspval_needed to zero. (arm_debugger_regno): Check for PAC register. (arm_unwind_emit_sequence): Print .save directive with ra_auth_code register. (arm_unwind_emit_set): Add entry for IP_REGNUM in switch case. (arm_unwind_emit): Update REG_CFA_REGISTER case._ * config/arm/arm.h (FIRST_PSEUDO_REGISTER): Modify. (DWARF_PAC_REGNUM): Define. (IS_PAC_REGNUM): Likewise. (enum reg_class): Add PAC_REG entry. (machine_function): Add pacbti_needed state to structure. * config/arm/arm.md (RA_AUTH_CODE): Define. gcc/testsuite/ChangeLog: 2023-01-18 Srinath Parvathaneni * g++.target/arm/pac-1.C: New test. * gcc.target/arm/pac-15.c: Likewise. --_002_VE1PR08MB4893BF19D401DD903BE753269BC79VE1PR08MB4893eurp_ Content-Type: application/octet-stream; name="pacbti_dwarf.patch" Content-Description: pacbti_dwarf.patch Content-Disposition: attachment; filename="pacbti_dwarf.patch"; size=15008; creation-date="Wed, 18 Jan 2023 17:15:15 GMT"; modification-date="Wed, 18 Jan 2023 17:18:34 GMT" Content-Transfer-Encoding: base64 ZGlmZiAtLWdpdCBhL2djYy9jb25maWcvYXJtL2FvdXQuaCBiL2djYy9jb25maWcvYXJtL2FvdXQu aAppbmRleCBjZmI4ZGI1MmM1OWZiNTE3ODE3OGEyYmI0MTlmMGZmYzUxMDc3ZWQzLi45MmY4NDRk Y2Y5Yjg3ODE0YzM5YzM2NjJjYmVkOWQzMTZmYjAyMjhkIDEwMDY0NAotLS0gYS9nY2MvY29uZmln L2FybS9hb3V0LmgKKysrIGIvZ2NjL2NvbmZpZy9hcm0vYW91dC5oCkBAIC03NCw3ICs3NCw4IEBA CiAgICJ3cjgiLCAgICJ3cjkiLCAgICJ3cjEwIiwgICJ3cjExIiwJCQkJXAogICAid3IxMiIsICAi d3IxMyIsICAid3IxNCIsICAid3IxNSIsCQkJCVwKICAgIndjZ3IwIiwgIndjZ3IxIiwgIndjZ3Iy IiwgIndjZ3IzIiwJCQkJXAotICAiY2MiLCAidmZwY2MiLCAic2ZwIiwgImFmcCIsICJhcHNycSIs ICJhcHNyZ2UiLCAicDAiCQlcCisgICJjYyIsICJ2ZnBjYyIsICJzZnAiLCAiYWZwIiwgImFwc3Jx IiwgImFwc3JnZSIsICJwMCIsCQlcCisgICJyYV9hdXRoX2NvZGUiCQkJCQkJXAogfQogI2VuZGlm CiAKZGlmZiAtLWdpdCBhL2djYy9jb25maWcvYXJtL2FybS5oIGIvZ2NjL2NvbmZpZy9hcm0vYXJt LmgKaW5kZXggNWY3YzQwODA1ZDNmZTk3MmI2MWE1ODdmNmJkZDBjNjY4YzFjNjgzZC4uYzkwY2Iw NDExZTVjMTI2Y2ZmZGNkMTA2ZTZhZjVhNDU4ZGUwNjIxNyAxMDA2NDQKLS0tIGEvZ2NjL2NvbmZp Zy9hcm0vYXJtLmgKKysrIGIvZ2NjL2NvbmZpZy9hcm0vYXJtLmgKQEAgLTgxNiw3ICs4MTYsOCBA QCBleHRlcm4gY29uc3QgaW50IGFybV9hcmNoX2NkZV9jb3Byb2NfYml0c1tdOwogCXMxNi1zMzEJ ICAgICAgUwlWRlAgdmFyaWFibGUgKGFrYSBkOC1kMTUpLgogCXZmcGNjCQlOb3QgYSByZWFsIHJl Z2lzdGVyLiAgUmVwcmVzZW50cyB0aGUgVkZQIGNvbmRpdGlvbgogCQkJY29kZSBmbGFncy4KLQl2 cHIJCVVzZWQgdG8gcmVwcmVzZW50IE1WRSBWUFIgcHJlZGljYXRpb24uICAqLworCXZwcgkJVXNl ZCB0byByZXByZXNlbnQgTVZFIFZQUiBwcmVkaWNhdGlvbi4KKwlyYV9hdXRoX2NvZGUJUHNldWRv IHJlZ2lzdGVyIHRvIHNhdmUgUEFDLiAgKi8KIAogLyogVGhlIHN0YWNrIGJhY2t0cmFjZSBzdHJ1 Y3R1cmUgaXMgYXMgZm9sbG93czoKICAgZnAgcG9pbnRzIHRvIGhlcmU6ICB8ICBzYXZlIGNvZGUg cG9pbnRlciAgfCAgICAgIFtmcF0KQEAgLTg1Nyw3ICs4NTgsNyBAQCBleHRlcm4gY29uc3QgaW50 IGFybV9hcmNoX2NkZV9jb3Byb2NfYml0c1tdOwogICAxLDEsMSwxLDEsMSwxLDEsCQlcCiAgIDEs MSwxLDEsCQkJXAogICAvKiBTcGVjaWFscy4gICovCQlcCi0gIDEsMSwxLDEsMSwxLDEJCQlcCisg IDEsMSwxLDEsMSwxLDEsMQkJXAogfQogCiAvKiAxIGZvciByZWdpc3RlcnMgbm90IGF2YWlsYWJs ZSBhY3Jvc3MgZnVuY3Rpb24gY2FsbHMuCkBAIC04ODcsNyArODg4LDcgQEAgZXh0ZXJuIGNvbnN0 IGludCBhcm1fYXJjaF9jZGVfY29wcm9jX2JpdHNbXTsKICAgMSwxLDEsMSwxLDEsMSwxLAkJXAog ICAxLDEsMSwxLAkJCVwKICAgLyogU3BlY2lhbHMuICAqLwkJXAotICAxLDEsMSwxLDEsMSwxCQkJ XAorICAxLDEsMSwxLDEsMSwxLDEJCVwKIH0KIAogI2lmbmRlZiBTVUJUQVJHRVRfQ09ORElUSU9O QUxfUkVHSVNURVJfVVNBR0UKQEAgLTEwNjMsMTAgKzEwNjQsMTIgQEAgZXh0ZXJuIGNvbnN0IGlu dCBhcm1fYXJjaF9jZGVfY29wcm9jX2JpdHNbXTsKICAgICYmIChMQVNUX1ZGUF9SRUdOVU0gLSAo UkVHTlVNKSA+PSAyICogKE4pIC0gMSkpCiAKIC8qIFRoZSBudW1iZXIgb2YgaGFyZCByZWdpc3Rl cnMgaXMgMTYgQVJNICsgMSBDQyArIDEgU0ZQICsgMSBBRlAKLSAgICsgMSBBUFNSUSArIDEgQVBT UkdFICsgMSBWUFIuICAqLworICAgKyAxIEFQU1JRICsgMSBBUFNSR0UgKyAxIFZQUiArIDEgUHNl dWRvIHJlZ2lzdGVyIHRvIHNhdmUgUEFDLiAgKi8KIC8qIEludGVsIFdpcmVsZXNzIE1NWCBUZWNo bm9sb2d5IHJlZ2lzdGVycyBhZGQgMTYgKyA0IG1vcmUuICAqLwogLyogVkZQIChWRlAzKSBhZGRz IDMyICg2NCkgKyAxIFZGUENDLiAgKi8KLSNkZWZpbmUgRklSU1RfUFNFVURPX1JFR0lTVEVSICAg MTA3CisjZGVmaW5lIEZJUlNUX1BTRVVET19SRUdJU1RFUiAgIDEwOAorCisjZGVmaW5lIERXQVJG X1BBQ19SRUdOVU0gMTQzCiAKICNkZWZpbmUgREVCVUdHRVJfUkVHTk8oUkVHTk8pIGFybV9kZWJ1 Z2dlcl9yZWdubyAoUkVHTk8pCiAKQEAgLTEyNTMsMTIgKzEyNTYsMTUgQEAgZXh0ZXJuIGludCBh cm1fcmVnc19pbl9zZXF1ZW5jZVtdOwogICBDQ19SRUdOVU0sIFZGUENDX1JFR05VTSwJCQlcCiAg IEZSQU1FX1BPSU5URVJfUkVHTlVNLCBBUkdfUE9JTlRFUl9SRUdOVU0sCVwKICAgU1BfUkVHTlVN LCBQQ19SRUdOVU0sIEFQU1JRX1JFR05VTSwJCVwKLSAgQVBTUkdFX1JFR05VTSwgVlBSX1JFR05V TQkJCVwKKyAgQVBTUkdFX1JFR05VTSwgVlBSX1JFR05VTSwgUkFfQVVUSF9DT0RFCVwKIH0KIAog I2RlZmluZSBJU19WUFJfUkVHTlVNKFJFR05VTSkgXAogICAoKFJFR05VTSkgPT0gVlBSX1JFR05V TSkKIAorI2RlZmluZSBJU19QQUNfUkVHTlVNKFJFR05VTSkgXAorICAoKFJFR05VTSkgPT0gUkFf QVVUSF9DT0RFKQorCiAvKiBVc2UgZGlmZmVyZW50IHJlZ2lzdGVyIGFsbG9jIG9yZGVyaW5nIGZv ciBUaHVtYi4gICovCiAjZGVmaW5lIEFESlVTVF9SRUdfQUxMT0NfT1JERVIgYXJtX29yZGVyX3Jl Z3NfZm9yX2xvY2FsX2FsbG9jICgpCiAKQEAgLTEyOTcsNiArMTMwMyw3IEBAIGVudW0gcmVnX2Ns YXNzCiAgIFNGUF9SRUcsCiAgIEFGUF9SRUcsCiAgIFZQUl9SRUcsCisgIFBBQ19SRUcsCiAgIEdF TkVSQUxfQU5EX1ZQUl9SRUdTLAogICBBTExfUkVHUywKICAgTElNX1JFR19DTEFTU0VTCkBAIC0x MzI3LDYgKzEzMzQsNyBAQCBlbnVtIHJlZ19jbGFzcwogICAiU0ZQX1JFRyIsCQlcCiAgICJBRlBf UkVHIiwJCVwKICAgIlZQUl9SRUciLAkJXAorICAiUEFDX1JFRyIsCQlcCiAgICJHRU5FUkFMX0FO RF9WUFJfUkVHUyIsIFwKICAgIkFMTF9SRUdTIgkJXAogfQpAQCAtMTM1Niw2ICsxMzY0LDcgQEAg ZW51bSByZWdfY2xhc3MKICAgeyAweDAwMDAwMDAwLCAweDAwMDAwMDAwLCAweDAwMDAwMDAwLCAw eDAwMDAwMDQwIH0sIC8qIFNGUF9SRUcgKi8JXAogICB7IDB4MDAwMDAwMDAsIDB4MDAwMDAwMDAs IDB4MDAwMDAwMDAsIDB4MDAwMDAwODAgfSwgLyogQUZQX1JFRyAqLwlcCiAgIHsgMHgwMDAwMDAw MCwgMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwgMHgwMDAwMDQwMCB9LCAvKiBWUFJfUkVHLiAgKi8J XAorICB7IDB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsIDB4MDAwMDA4MDAgfSwg LyogUEFDX1JFRy4gICovCVwKICAgeyAweDAwMDA1RkZGLCAweDAwMDAwMDAwLCAweDAwMDAwMDAw LCAweDAwMDAwNDAwIH0sIC8qIEdFTkVSQUxfQU5EX1ZQUl9SRUdTLiAgKi8gXAogICB7IDB4RkZG RjdGRkYsIDB4RkZGRkZGRkYsIDB4RkZGRkZGRkYsIDB4MDAwMDA0MEYgfSAgLyogQUxMX1JFR1Mu ICAqLwlcCiB9CkBAIC0xNjIxLDYgKzE2MzAsOSBAQCB0eXBlZGVmIHN0cnVjdCBHVFkoKCkpIG1h Y2hpbmVfZnVuY3Rpb24KICAgLyogVGhlIG51bWJlciBvZiBieXRlcyB1c2VkIHRvIHN0b3JlIHRo ZSBzdGF0aWMgY2hhaW4gcmVnaXN0ZXIgb24gdGhlCiAgICAgIHN0YWNrLCBhYm92ZSB0aGUgc3Rh Y2sgZnJhbWUuICAqLwogICBpbnQgc3RhdGljX2NoYWluX3N0YWNrX2J5dGVzOworICAvKiBTZXQg dG8gMSB3aGVuIHBvaW50ZXIgYXV0aGVudGljYXRpb24gb3BlcmF0aW9uIHVzZXMgdmFsdWUgb2Yg U1Agb3RoZXIKKyAgICAgdGhhbiB0aGUgaW5jb21pbmcgc3RhY2sgcG9pbnRlciB2YWx1ZS4gICov CisgIGludCBwYWNzcHZhbF9uZWVkZWQ7CiB9CiBtYWNoaW5lX2Z1bmN0aW9uOwogI2VuZGlmCmRp ZmYgLS1naXQgYS9nY2MvY29uZmlnL2FybS9hcm0uY2MgYi9nY2MvY29uZmlnL2FybS9hcm0uY2MK aW5kZXggMGYxMDVmNjBjMDgzYjc5MDZkMDcwNTY3ODBiZTBiYzNkMGZkZTQ1MC4uNzdjZjUwZmUy YWQ1NzRlN2Q5ZDBjMWJkZDRjNDM3YmFiMDNiYjQ5ZiAxMDA2NDQKLS0tIGEvZ2NjL2NvbmZpZy9h cm0vYXJtLmNjCisrKyBiL2djYy9jb25maWcvYXJtL2FybS5jYwpAQCAtMjIyNDgsNyArMjIyNDgs MzMgQEAgZW1pdF9tdWx0aV9yZWdfcHVzaCAodW5zaWduZWQgbG9uZyBtYXNrLCB1bnNpZ25lZCBs b25nIGR3YXJmX3JlZ3NfbWFzaykKICAgICB7CiAgICAgICBpZiAobWFzayAmICgxIDw8IGkpKQog CXsKLQkgIHJlZyA9IGdlbl9ydHhfUkVHIChTSW1vZGUsIGkpOworCSAgLyogTk9URTogRHdhcmYg Y29kZSBlbWl0dGVyIGhhbmRsZSByZWctcmVnIGNvcGllcyBjb3JyZWN0bHkgYW5kIGluIHRoZQor CSAgICAgZm9sbG93aW5nIGV4YW1wbGUgcmVnLXJlZyBjb3B5IG9mIFNQIHRvIElQIHJlZ2lzdGVy IGlzIGhhbmRsZWQKKwkgICAgIHRocm91Z2ggLmNmaV9kZWZfY2ZhX3JlZ2lzdGVyIGRpcmVjdGl2 ZSBhbmQgdGhlIC5jZmlfb2Zmc2V0CisJICAgICBkaXJlY3RpdmUgZm9yIElQIHJlZ2lzdGVyIGlz IHNraXBwZWQgYnkgZHdhcmYgY29kZSBlbWl0dGVyLgorCSAgICAgRXhhbXBsZToKKwkJbW92ICAg ICBpcCwgc3AKKwkJLmNmaV9kZWZfY2ZhX3JlZ2lzdGVyIDEyCisJCXB1c2ggICAge2ZwLCBpcCwg bHIsIHBjfQorCQkuY2ZpX29mZnNldCAxMSwgLTE2CisJCS5jZmlfb2Zmc2V0IDEzLCAtMTIKKwkJ LmNmaV9vZmZzZXQgMTQsIC04CisKKwkgICAgIFdoZXJlIGFzIEFybS1zcGVjaWZpYyAuc2F2ZSBk aXJlY3RpdmUgaGFuZGxpbmcgaXMgZGlmZmVyZW50IHRvIHRoYXQKKwkgICAgIG9mIGR3YXJmIGNv ZGUgZW1pdHRlciBhbmQgaXQgZG9lc24ndCBjb25zaWRlciByZWctcmVnIGNvcGllcyB3aGlsZQor CSAgICAgdXBkYXRpbmcgdGhlIHJlZ2lzdGVyIGxpc3QuICBXaGVuIFBBQ0JUSSBpcyBlbmFibGVk IHdlIG1hbnVhbGx5CisJICAgICB1cGRhdGVkIHRoZSAuc2F2ZSBkaXJlY3RpdmUgcmVnaXN0ZXIg bGlzdCB0byB1c2UgInJhX2F1dGhfY29kZSIKKwkgICAgIChwc2VkdW8gcmVnaXN0ZXIgMTQzKSBp bnN0ZWFkIG9mIElQIHJlZ2lzdGVyIGFzIHNob3duIGluIGZvbGxvd2luZworCSAgICAgcHNlZHVv IGNvZGUuCisJICAgICBFeGFtcGxlOgorCQlwYWNidGkgIGlwLCBsciwgc3AKKwkJLmNmaV9yZWdp c3RlciAxNDMsIDEyCisJCXB1c2ggICAge3IzLCByNywgaXAsIGxyfQorCQkuc2F2ZSB7cjMsIHI3 LCByYV9hdXRoX2NvZGUsIGxyfQorCSAgKi8KKwkgIHJ0eCBkd2FyZl9yZWcgPSByZWcgPSBnZW5f cnR4X1JFRyAoU0ltb2RlLCBpKTsKKwkgIGlmIChhcm1fY3VycmVudF9mdW5jdGlvbl9wYWNfZW5h YmxlZF9wICgpICYmIGkgPT0gSVBfUkVHTlVNKQorCSAgICBkd2FyZl9yZWcgPSBnZW5fcnR4X1JF RyAoU0ltb2RlLCBSQV9BVVRIX0NPREUpOwogCiAJICBYVkVDRVhQIChwYXIsIDAsIDApCiAJICAg ID0gZ2VuX3J0eF9TRVQgKGdlbl9mcmFtZV9tZW0KQEAgLTIyMjY2LDcgKzIyMjkyLDcgQEAgZW1p dF9tdWx0aV9yZWdfcHVzaCAodW5zaWduZWQgbG9uZyBtYXNrLCB1bnNpZ25lZCBsb25nIGR3YXJm X3JlZ3NfbWFzaykKIAkgIGlmIChkd2FyZl9yZWdzX21hc2sgJiAoMSA8PCBpKSkKIAkgICAgewog CSAgICAgIHRtcCA9IGdlbl9ydHhfU0VUIChnZW5fZnJhbWVfbWVtIChTSW1vZGUsIHN0YWNrX3Bv aW50ZXJfcnR4KSwKLQkJCQkgcmVnKTsKKwkJCQkgZHdhcmZfcmVnKTsKIAkgICAgICBSVFhfRlJB TUVfUkVMQVRFRF9QICh0bXApID0gMTsKIAkgICAgICBYVkVDRVhQIChkd2FyZiwgMCwgZHdhcmZf cGFyX2luZGV4KyspID0gdG1wOwogCSAgICB9CkBAIC0yMjI3OSw3ICsyMjMwNSw5IEBAIGVtaXRf bXVsdGlfcmVnX3B1c2ggKHVuc2lnbmVkIGxvbmcgbWFzaywgdW5zaWduZWQgbG9uZyBkd2FyZl9y ZWdzX21hc2spCiAgICAgewogICAgICAgaWYgKG1hc2sgJiAoMSA8PCBpKSkKIAl7Ci0JICByZWcg PSBnZW5fcnR4X1JFRyAoU0ltb2RlLCBpKTsKKwkgIHJ0eCBkd2FyZl9yZWcgPSByZWcgPSBnZW5f cnR4X1JFRyAoU0ltb2RlLCBpKTsKKwkgIGlmIChhcm1fY3VycmVudF9mdW5jdGlvbl9wYWNfZW5h YmxlZF9wICgpICYmIGkgPT0gSVBfUkVHTlVNKQorCSAgICBkd2FyZl9yZWcgPSBnZW5fcnR4X1JF RyAoU0ltb2RlLCBSQV9BVVRIX0NPREUpOwogCiAJICBYVkVDRVhQIChwYXIsIDAsIGopID0gZ2Vu X3J0eF9VU0UgKFZPSURtb2RlLCByZWcpOwogCkBAIC0yMjI5MCw3ICsyMjMxOCw3IEBAIGVtaXRf bXVsdGlfcmVnX3B1c2ggKHVuc2lnbmVkIGxvbmcgbWFzaywgdW5zaWduZWQgbG9uZyBkd2FyZl9y ZWdzX21hc2spCiAJCQkgICAgICAgKFNJbW9kZSwKIAkJCQlwbHVzX2NvbnN0YW50IChQbW9kZSwg c3RhY2tfcG9pbnRlcl9ydHgsCiAJCQkJCSAgICAgICA0ICogaikpLAotCQkJICAgICAgIHJlZyk7 CisJCQkgICAgICAgZHdhcmZfcmVnKTsKIAkgICAgICBSVFhfRlJBTUVfUkVMQVRFRF9QICh0bXAp ID0gMTsKIAkgICAgICBYVkVDRVhQIChkd2FyZiwgMCwgZHdhcmZfcGFyX2luZGV4KyspID0gdG1w OwogCSAgICB9CkBAIC0yMjM3NSw3ICsyMjQwMyw5IEBAIGFybV9lbWl0X211bHRpX3JlZ19wb3Ag KHVuc2lnbmVkIGxvbmcgc2F2ZWRfcmVnc19tYXNrKQogICBmb3IgKGogPSAwLCBpID0gMDsgaiA8 IG51bV9yZWdzOyBpKyspCiAgICAgaWYgKHNhdmVkX3JlZ3NfbWFzayAmICgxIDw8IGkpKQogICAg ICAgewotICAgICAgICByZWcgPSBnZW5fcnR4X1JFRyAoU0ltb2RlLCBpKTsKKwlydHggZHdhcmZf cmVnID0gcmVnID0gZ2VuX3J0eF9SRUcgKFNJbW9kZSwgaSk7CisJaWYgKGFybV9jdXJyZW50X2Z1 bmN0aW9uX3BhY19lbmFibGVkX3AgKCkgJiYgaSA9PSBJUF9SRUdOVU0pCisJICBkd2FyZl9yZWcg PSBnZW5fcnR4X1JFRyAoU0ltb2RlLCBSQV9BVVRIX0NPREUpOwogICAgICAgICBpZiAoKG51bV9y ZWdzID09IDEpICYmIGVtaXRfdXBkYXRlICYmICFyZXR1cm5faW5fcGMpCiAgICAgICAgICAgewog ICAgICAgICAgICAgLyogRW1pdCBzaW5nbGUgbG9hZCB3aXRoIHdyaXRlYmFjay4gICovCkBAIC0y MjM4Myw3ICsyMjQxMyw4IEBAIGFybV9lbWl0X211bHRpX3JlZ19wb3AgKHVuc2lnbmVkIGxvbmcg c2F2ZWRfcmVnc19tYXNrKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2VuX3J0 eF9QT1NUX0lOQyAoUG1vZGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBzdGFja19wb2ludGVyX3J0eCkpOwogICAgICAgICAgICAgdG1wID0gZW1p dF9pbnNuIChnZW5fcnR4X1NFVCAocmVnLCB0bXApKTsKLSAgICAgICAgICAgIFJFR19OT1RFUyAo dG1wKSA9IGFsbG9jX3JlZ19ub3RlIChSRUdfQ0ZBX1JFU1RPUkUsIHJlZywgZHdhcmYpOworCSAg ICBSRUdfTk9URVMgKHRtcCkgPSBhbGxvY19yZWdfbm90ZSAoUkVHX0NGQV9SRVNUT1JFLCBkd2Fy Zl9yZWcsCisJCQkJCSAgICAgIGR3YXJmKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg ICB9CiAKQEAgLTIyMzk3LDcgKzIyNDI4LDcgQEAgYXJtX2VtaXRfbXVsdGlfcmVnX3BvcCAodW5z aWduZWQgbG9uZyBzYXZlZF9yZWdzX21hc2spCiAgICAgICAgIC8qIFdlIG5lZWQgdG8gbWFpbnRh aW4gYSBzZXF1ZW5jZSBmb3IgRFdBUkYgaW5mbyB0b28uICBBcyBkd2FyZiBpbmZvCiAgICAgICAg ICAgIHNob3VsZCBub3QgaGF2ZSBQQywgc2tpcCBQQy4gICovCiAgICAgICAgIGlmIChpICE9IFBD X1JFR05VTSkKLSAgICAgICAgICBkd2FyZiA9IGFsbG9jX3JlZ19ub3RlIChSRUdfQ0ZBX1JFU1RP UkUsIHJlZywgZHdhcmYpOworCSAgZHdhcmYgPSBhbGxvY19yZWdfbm90ZSAoUkVHX0NGQV9SRVNU T1JFLCBkd2FyZl9yZWcsIGR3YXJmKTsKIAogICAgICAgICBqKys7CiAgICAgICB9CkBAIC0yMzU4 OSw2ICsyMzYyMCw4IEBAIGFybV9leHBhbmRfcHJvbG9ndWUgKHZvaWQpCiAJCQkJCSAgICAgIC1m cF9vZmZzZXQpKTsKIAkgIFJUWF9GUkFNRV9SRUxBVEVEX1AgKGluc24pID0gMTsKIAkgIGFkZF9y ZWdfbm90ZSAoaW5zbiwgUkVHX0ZSQU1FX1JFTEFURURfRVhQUiwgZHdhcmYpOworCSAgaWYgKGFy bV9jdXJyZW50X2Z1bmN0aW9uX3BhY19lbmFibGVkX3AgKCkpCisJICAgIGNmdW4tPm1hY2hpbmUt PnBhY3NwdmFsX25lZWRlZCA9IDE7CiAJfQogICAgICAgZWxzZQogCXsKQEAgLTIzNjI0LDYgKzIz NjU3LDggQEAgYXJtX2V4cGFuZF9wcm9sb2d1ZSAodm9pZCkKIAkgIFJUWF9GUkFNRV9SRUxBVEVE X1AgKGluc24pID0gMTsKIAkgIGZwX29mZnNldCA9IGFyZ3NfdG9fcHVzaDsKIAkgIGFyZ3NfdG9f cHVzaCA9IDA7CisJICBpZiAoYXJtX2N1cnJlbnRfZnVuY3Rpb25fcGFjX2VuYWJsZWRfcCAoKSkK KwkgICAgY2Z1bi0+bWFjaGluZS0+cGFjc3B2YWxfbmVlZGVkID0gMTsKIAl9CiAgICAgfQogCkBA IC0yMzYzMyw5ICsyMzY2OCwxMyBAQCBhcm1fZXhwYW5kX3Byb2xvZ3VlICh2b2lkKQogICAgICAg ICAgb25lIHdpbGwgYmUgYWRkZWQgYmVmb3JlIHRoZSBwdXNoIG9mIHRoZSBjbG9iYmVyZWQgSVAg KGlmCiAgICAgICAgICBuZWNlc3NhcnkpIGJ5IHRoZSBidGkgcGFzcy4gICovCiAgICAgICBpZiAo YWFyY2hfYnRpX2VuYWJsZWQgKCkgJiYgIWNsb2JiZXJfaXApCi0JZW1pdF9pbnNuIChnZW5fcGFj YnRpX25vcCAoKSk7CisJaW5zbiA9IGVtaXRfaW5zbiAoZ2VuX3BhY2J0aV9ub3AgKCkpOwogICAg ICAgZWxzZQotCWVtaXRfaW5zbiAoZ2VuX3BhY19ub3AgKCkpOworCWluc24gPSBlbWl0X2luc24g KGdlbl9wYWNfbm9wICgpKTsKKworICAgICAgcnR4IGR3YXJmID0gZ2VuX3J0eF9TRVQgKGlwX3J0 eCwgZ2VuX3J0eF9SRUcgKFNJbW9kZSwgUkFfQVVUSF9DT0RFKSk7CisgICAgICBSVFhfRlJBTUVf UkVMQVRFRF9QIChpbnNuKSA9IDE7CisgICAgICBhZGRfcmVnX25vdGUgKGluc24sIFJFR19DRkFf UkVHSVNURVIsIGR3YXJmKTsKICAgICB9CiAKICAgaWYgKFRBUkdFVF9BUENTX0ZSQU1FICYmIGZy YW1lX3BvaW50ZXJfbmVlZGVkICYmIFRBUkdFVF9BUk0pCkBAIC0yNTcxNyw2ICsyNTc1Niw5IEBA IGFybV9yZWdub19jbGFzcyAoaW50IHJlZ25vKQogICBpZiAoSVNfVlBSX1JFR05VTSAocmVnbm8p KQogICAgIHJldHVybiBWUFJfUkVHOwogCisgIGlmIChJU19QQUNfUkVHTlVNIChyZWdubykpCisg ICAgcmV0dXJuIFBBQ19SRUc7CisKICAgaWYgKFRBUkdFVF9USFVNQjEpCiAgICAgewogICAgICAg aWYgKHJlZ25vID09IFNUQUNLX1BPSU5URVJfUkVHTlVNKQpAQCAtMjY4NzcsNiArMjY5MTksNyBA QCBhcm1faW5pdF9tYWNoaW5lX3N0YXR1cyAodm9pZCkKICAgbWFjaGluZS0+ZnVuY190eXBlID0g QVJNX0ZUX1VOS05PV047CiAjZW5kaWYKICAgbWFjaGluZS0+c3RhdGljX2NoYWluX3N0YWNrX2J5 dGVzID0gLTE7CisgIG1hY2hpbmUtPnBhY3NwdmFsX25lZWRlZCA9IDA7CiAgIHJldHVybiBtYWNo aW5lOwogfQogCkBAIC0yOTY4Niw2ICsyOTcyOSw5IEBAIGFybV9kZWJ1Z2dlcl9yZWdubyAodW5z aWduZWQgaW50IHJlZ25vKQogICBpZiAoSVNfSVdNTVhUX1JFR05VTSAocmVnbm8pKQogICAgIHJl dHVybiAxMTIgKyByZWdubyAtIEZJUlNUX0lXTU1YVF9SRUdOVU07CiAKKyAgaWYgKElTX1BBQ19S RUdOVU0gKHJlZ25vKSkKKyAgICByZXR1cm4gRFdBUkZfUEFDX1JFR05VTTsKKwogICByZXR1cm4g RFdBUkZfRlJBTUVfUkVHSVNURVJTOwogfQogCkBAIC0yOTc3OSw3ICsyOTgyNSw3IEBAIGFybV91 bndpbmRfZW1pdF9zZXF1ZW5jZSAoRklMRSAqIG91dF9maWxlLCBydHggcCkKICAgZ2NjX2Fzc2Vy dCAobnJlZ3MpOwogCiAgIHJlZyA9IFJFR05PIChTRVRfU1JDIChYVkVDRVhQIChwLCAwLCAxKSkp OwotICBpZiAocmVnIDwgMTYpCisgIGlmIChyZWcgPCAxNiB8fCBJU19QQUNfUkVHTlVNIChyZWcp KQogICAgIHsKICAgICAgIC8qIEZvciAtT3MgZHVtbXkgcmVnaXN0ZXJzIGNhbiBiZSBwdXNoZWQg YXQgdGhlIGJlZ2lubmluZyB0bwogCSBhdm9pZCBzZXBhcmF0ZSBzdGFjayBwb2ludGVyIGFkanVz dG1lbnQuICAqLwpAQCAtMjk4MzYsNiArMjk4ODIsOCBAQCBhcm1fdW53aW5kX2VtaXRfc2VxdWVu Y2UgKEZJTEUgKiBvdXRfZmlsZSwgcnR4IHApCiAJIGRvdWJsZSBwcmVjaXNpb24gcmVnaXN0ZXIg bmFtZXMuICAqLwogICAgICAgaWYgKElTX1ZGUF9SRUdOVU0gKHJlZykpCiAJYXNtX2ZwcmludGYg KG91dF9maWxlLCAiZCVkIiwgKHJlZyAtIEZJUlNUX1ZGUF9SRUdOVU0pIC8gMik7CisgICAgICBl bHNlIGlmIChJU19QQUNfUkVHTlVNIChyZWcpKQorCWFzbV9mcHJpbnRmIChhc21fb3V0X2ZpbGUs ICJyYV9hdXRoX2NvZGUiKTsKICAgICAgIGVsc2UKIAlhc21fZnByaW50ZiAob3V0X2ZpbGUsICIl ciIsIHJlZyk7CiAKQEAgLTI5OTMwLDcgKzI5OTc4LDcgQEAgYXJtX3Vud2luZF9lbWl0X3NldCAo RklMRSAqIG91dF9maWxlLCBydHggcCkKIAkgIC8qIE1vdmUgZnJvbSBzcCB0byByZWcuICAqLwog CSAgYXNtX2ZwcmludGYgKG91dF9maWxlLCAiXHQubW92c3AgJXJcbiIsIFJFR05PIChlMCkpOwog CX0KLSAgICAgZWxzZSBpZiAoR0VUX0NPREUgKGUxKSA9PSBQTFVTCisgICAgICBlbHNlIGlmIChH RVRfQ09ERSAoZTEpID09IFBMVVMKIAkgICAgICAmJiBSRUdfUCAoWEVYUCAoZTEsIDApKQogCSAg ICAgICYmIFJFR05PIChYRVhQIChlMSwgMCkpID09IFNQX1JFR05VTQogCSAgICAgICYmIENPTlNU X0lOVF9QIChYRVhQIChlMSwgMSkpKQpAQCAtMjk5MzksNiArMjk5ODcsMTEgQEAgYXJtX3Vud2lu ZF9lbWl0X3NldCAoRklMRSAqIG91dF9maWxlLCBydHggcCkKIAkgIGFzbV9mcHJpbnRmIChvdXRf ZmlsZSwgIlx0Lm1vdnNwICVyLCAjJWRcbiIsCiAJCSAgICAgICBSRUdOTyAoZTApLCAoaW50KUlO VFZBTChYRVhQIChlMSwgMSkpKTsKIAl9CisgICAgICBlbHNlIGlmIChSRUdOTyAoZTApID09IElQ X1JFR05VTSAmJiBhcm1fY3VycmVudF9mdW5jdGlvbl9wYWNfZW5hYmxlZF9wICgpKQorCXsKKwkg IGlmIChjZnVuLT5tYWNoaW5lLT5wYWNzcHZhbF9uZWVkZWQpCisJICAgIGFzbV9mcHJpbnRmIChv dXRfZmlsZSwgIlx0LnBhY3NwdmFsXG4iKTsKKwl9CiAgICAgICBlbHNlCiAJYWJvcnQgKCk7CiAg ICAgICBicmVhazsKQEAgLTI5OTkzLDEwICszMDA0NiwxNSBAQCBhcm1fdW53aW5kX2VtaXQgKEZJ TEUgKiBvdXRfZmlsZSwgcnR4X2luc24gKmluc24pCiAJICAgIHNyYyA9IFNFVF9TUkMgKHBhdCk7 CiAJICAgIGRlc3QgPSBTRVRfREVTVCAocGF0KTsKIAotCSAgICBnY2NfYXNzZXJ0IChzcmMgPT0g c3RhY2tfcG9pbnRlcl9ydHgpOworCSAgICBnY2NfYXNzZXJ0IChzcmMgPT0gc3RhY2tfcG9pbnRl cl9ydHgKKwkJCXx8IElTX1BBQ19SRUdOVU0gKFJFR05PIChzcmMpKSk7CiAJICAgIHJlZyA9IFJF R05PIChkZXN0KTsKLQkgICAgYXNtX2ZwcmludGYgKG91dF9maWxlLCAiXHQudW53aW5kX3JhdyAw LCAweCV4IEAgdnNwID0gciVkXG4iLAotCQkJIHJlZyArIDB4OTAsIHJlZyk7CisKKwkgICAgaWYg KElTX1BBQ19SRUdOVU0gKFJFR05PIChzcmMpKSkKKwkgICAgICBhcm1fdW53aW5kX2VtaXRfc2V0 IChvdXRfZmlsZSwgUEFUVEVSTiAoaW5zbikpOworCSAgICBlbHNlCisJICAgICAgYXNtX2Zwcmlu dGYgKG91dF9maWxlLCAiXHQudW53aW5kX3JhdyAwLCAweCV4IEAgdnNwID0gciVkXG4iLAorCQkJ ICAgcmVnICsgMHg5MCwgcmVnKTsKIAkgIH0KIAkgIGhhbmRsZWRfb25lID0gdHJ1ZTsKIAkgIGJy ZWFrOwpkaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9hcm0vYXJtLm1kIGIvZ2NjL2NvbmZpZy9hcm0v YXJtLm1kCmluZGV4IDM2MDYyMjkyYjkwYzMwMGY2MWVhNjc4YTM3NzI1ZjdlMzIwODA5MzkuLjI4 MmJhMTllMzIyNDI1OWNkNTIyOTRhZmEwOGM5NWZjYWY4OWE2MGMgMTAwNjQ0Ci0tLSBhL2djYy9j b25maWcvYXJtL2FybS5tZAorKysgYi9nY2MvY29uZmlnL2FybS9hcm0ubWQKQEAgLTQyLDYgKzQy LDcgQEAKICAgIChBUFNSUV9SRUdOVU0gICAgMTA0KQk7IFEgYml0IHBzZXVkbyByZWdpc3Rlcgog ICAgKEFQU1JHRV9SRUdOVU0gICAxMDUpCTsgR0UgYml0cyBwc2V1ZG8gcmVnaXN0ZXIKICAgIChW UFJfUkVHTlVNICAgICAgMTA2KQk7IFZlY3RvciBQcmVkaWNhdGlvbiBSZWdpc3RlciAtIE1WRSBy ZWdpc3Rlci4KKyAgIChSQV9BVVRIX0NPREUgICAgMTA3KQk7IFBzZXVkbyByZWdpc3RlciB0byBz YXZlIFBBQy4KICAgXQogKQogOzsgM3JkIG9wZXJhbmQgdG8gc2VsZWN0X2RvbWluYW5jZV9jY19t b2RlCmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2crKy50YXJnZXQvYXJtL3BhYy0xLkMgYi9n Y2MvdGVzdHN1aXRlL2crKy50YXJnZXQvYXJtL3BhYy0xLkMKbmV3IGZpbGUgbW9kZSAxMDA2NDQK aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjY3MWEyN2Iw NDhjNjQ3ZWVlOTczMDA0ZDlhYWI2ZWM5OTc2OWUzOAotLS0gL2Rldi9udWxsCisrKyBiL2djYy90 ZXN0c3VpdGUvZysrLnRhcmdldC9hcm0vcGFjLTEuQwpAQCAtMCwwICsxLDM1IEBACisvKiBDaGVj ayB0aGF0IEdDQyBkb2VzIC5zYXZlIGFuZCAuY2ZpX29mZnNldCBkaXJlY3RpdmVzIHdpdGggUkFf QVVUSF9DT0RFIHBzZXVkbyBoYXJkLXJlZ2lzdGVyLiAgKi8KKy8qIHsgZGctZG8gY29tcGlsZSB9 ICovCisvKiB7IGRnLXNraXAtaWYgImF2b2lkIGNvbmZsaWN0aW5nIG11bHRpbGliIG9wdGlvbnMi IHsgKi0qLSogfSB7ICItbWFybSIgIi1tY3B1PSoiIH0gfSAqLworLyogeyBkZy1vcHRpb25zICIt bWFyY2g9YXJtdjguMS1tLm1haW4rbXZlK3BhY2J0aSAtbWJyYW5jaC1wcm90ZWN0aW9uPXBhYy1y ZXQgLW10aHVtYiAtbWZsb2F0LWFiaT1oYXJkIC1nIC1PMCIgfSAqLworCitfX2F0dHJpYnV0ZV9f KChub2lubGluZSkpIHZvaWQKK2ZuMSAoaW50IGEsIGludCBiLCBpbnQgYykKK3sKKyAgaWYgKGEg IT0gYiArIGMpCisgICAgX19idWlsdGluX2Fib3J0ICgpOworICBlbHNlCisgICAgdGhyb3cgYitj OworfQorCitpbnQgbWFpbiAoKQoreworICBpbnQgYSA9IDEyMDsKKyAgdHJ5CisgICAgeworICAg ICAgZm4xIChhLCA0MCwgODApOworICAgIH0KKyAgY2F0Y2ggKGludCB4KQorICAgIHsKKyAgICAg IGlmICh4ICE9IGEpCisgICAgICAgIF9fYnVpbHRpbl9hYm9ydCAoKTsKKyAgICAgIGVsc2UKKwly ZXR1cm4gMDsKKyAgICB9Cit9CisKKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci10aW1l cyAicGFjCWlwLCBsciwgc3AiIDIgfSB9ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJs ZXItdGltZXMgIlwuY2ZpX3JlZ2lzdGVyIDE0MywgMTIiIDIgfSB9ICovCisvKiB7IGRnLWZpbmFs IHsgc2Nhbi1hc3NlbWJsZXItdGltZXMgIlwuc2F2ZSB7cjcsIHJhX2F1dGhfY29kZSwgbHJ9IiAx IH0gfSAqLworLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLXRpbWVzICJcLmNmaV9vZmZz ZXQgMTQzLCAtOCIgMiB9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci10aW1l cyAiXC5zYXZlIHtyNCwgcjcsIHJhX2F1dGhfY29kZSwgbHJ9IiAxIH0gfSAqLwpkaWZmIC0tZ2l0 IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2FybS9wYWMtMTUuYyBiL2djYy90ZXN0c3VpdGUv Z2NjLnRhcmdldC9hcm0vcGFjLTE1LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTEwNTQ5MDI5NTU2ODZhNzg1MzY5 MzM1ODBhNjAzZDU3MTM3OTRlZgotLS0gL2Rldi9udWxsCisrKyBiL2djYy90ZXN0c3VpdGUvZ2Nj LnRhcmdldC9hcm0vcGFjLTE1LmMKQEAgLTAsMCArMSwzMiBAQAorLyogQ2hlY2sgdGhhdCBHQ0Mg ZG9lcyAuc2F2ZSBhbmQgLmNmaV9vZmZzZXQgZGlyZWN0aXZlcyB3aXRoIFJBX0FVVEhfQ09ERSBw c2V1ZG8gaGFyZC1yZWdpc3Rlci4gICovCisvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLworLyogeyBk Zy1yZXF1aXJlLWVmZmVjdGl2ZS10YXJnZXQgbWJyYW5jaF9wcm90ZWN0aW9uX29rIH0gKi8KKy8q IHsgZGctc2tpcC1pZiAiYXZvaWQgY29uZmxpY3RpbmcgbXVsdGlsaWIgb3B0aW9ucyIgeyAqLSot KiB9IHsgIi1tYXJtIiAiLW1jcHU9KiIgfSB9ICovCisvKiB7IGRnLW9wdGlvbnMgIi1tYXJjaD1h cm12OC4xLW0ubWFpbittdmUrcGFjYnRpIC1tYnJhbmNoLXByb3RlY3Rpb249cGFjLXJldCAtbXRo dW1iIC1tZmxvYXQtYWJpPWhhcmQgLWZhc3luY2hyb25vdXMtdW53aW5kLXRhYmxlcyAtZyAtTzAi IH0gKi8KKworI2luY2x1ZGUgInN0ZGlvLmgiCisKK19fYXR0cmlidXRlX18oKG5vaW5saW5lKSkg aW50CitmbjEgKGludCBhKQoreworICBjb25zdCBjaGFyICpmbXQgPSAiYnJhbmNoLXByb3RlY3Rp b24iOworICBpbnQgZnVuMShpbnQgeCxjb25zdCBjaGFyICpmbXQsaW50IGMsaW50IGQpCisgICAg eworICAgICAgcHJpbnRmKCJzdHJpbmcgPSAlc1xuIixmbXQpOworICAgICAgcmV0dXJuIHgrYytk OworICAgIH0KKyAgcmV0dXJuIGZ1bjEoYSxmbXQsMTAsMTApOworfQorCitpbnQgbWFpbiAodm9p ZCkKK3sKKyAgcmV0dXJuIGZuMSAoNDApOworfQorCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3Nl bWJsZXItdGltZXMgIlwucGFjc3B2YWwiIDEgfSB9ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1h c3NlbWJsZXItdGltZXMgInBhYwlpcCwgbHIsIHNwIiAzIH0gfSAqLworLyogeyBkZy1maW5hbCB7 IHNjYW4tYXNzZW1ibGVyLXRpbWVzICJcLmNmaV9yZWdpc3RlciAxNDMsIDEyIiAzIH0gfSAqLwor LyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLXRpbWVzICJcLnNhdmUge3I3LCByYV9hdXRo X2NvZGUsIGxyfSIgMiB9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci10aW1l cyAiXC5jZmlfb2Zmc2V0IDE0MywgLTgiIDIgfSB9ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1h c3NlbWJsZXItdGltZXMgIlwuc2F2ZSB7cjMsIHI3LCByYV9hdXRoX2NvZGUsIGxyfSIgMSB9IH0g Ki8KKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci10aW1lcyAiXC5jZmlfb2Zmc2V0IDE0 MywgLTEyIiAxIH0gfSAqLwo= --_002_VE1PR08MB4893BF19D401DD903BE753269BC79VE1PR08MB4893eurp_--