From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received-SPF: Pass (sender SPF authorized) identity=mailfrom; client-ip=134.134.136.20; helo=mga02.intel.com; envelope-from=steven.shi@intel.com; receiver=edk2-devel@lists.01.org Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id 633032117B56D for ; Wed, 6 Jun 2018 19:15:51 -0700 (PDT) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga008.fm.intel.com ([10.253.24.58]) by orsmga101.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 06 Jun 2018 19:15:51 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.49,485,1520924400"; d="scan'208";a="45869798" Received: from fmsmsx104.amr.corp.intel.com ([10.18.124.202]) by fmsmga008.fm.intel.com with ESMTP; 06 Jun 2018 19:15:50 -0700 Received: from fmsmsx120.amr.corp.intel.com (10.18.124.208) by fmsmsx104.amr.corp.intel.com (10.18.124.202) with Microsoft SMTP Server (TLS) id 14.3.319.2; Wed, 6 Jun 2018 19:15:50 -0700 Received: from shsmsx101.ccr.corp.intel.com (10.239.4.153) by fmsmsx120.amr.corp.intel.com (10.18.124.208) with Microsoft SMTP Server (TLS) id 14.3.319.2; Wed, 6 Jun 2018 19:15:49 -0700 Received: from shsmsx102.ccr.corp.intel.com ([169.254.2.223]) by SHSMSX101.ccr.corp.intel.com ([169.254.1.82]) with mapi id 14.03.0319.002; Thu, 7 Jun 2018 10:15:48 +0800 From: "Shi, Steven" To: "Gao, Liming" , Zenith432 , "edk2-devel@lists.01.org" Thread-Topic: [PATCH] BaseTools/GenFw: Add X64 GOTPCREL Support to GenFw Thread-Index: AQHT/cBb/+vlXcJYw0iZdBJY//lfZqRTfSMAgACQL+A= Date: Thu, 7 Jun 2018 02:15:47 +0000 Message-ID: <06C8AB66E78EE34A949939824ABE2B313B762B9D@shsmsx102.ccr.corp.intel.com> References: <1821667922.1236806.1528308060822.ref@mail.yahoo.com> <1821667922.1236806.1528308060822@mail.yahoo.com> <4A89E2EF3DFEDB4C8BFDE51014F606A14E293CF7@SHSMSX104.ccr.corp.intel.com> In-Reply-To: <4A89E2EF3DFEDB4C8BFDE51014F606A14E293CF7@SHSMSX104.ccr.corp.intel.com> Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-titus-metadata-40: eyJDYXRlZ29yeUxhYmVscyI6IiIsIk1ldGFkYXRhIjp7Im5zIjoiaHR0cDpcL1wvd3d3LnRpdHVzLmNvbVwvbnNcL0ludGVsMyIsImlkIjoiMDQ0YjYwMTQtMjBkMC00YTViLTk2Y2UtMDJmZWQ4MzlmZDgxIiwicHJvcHMiOlt7Im4iOiJDVFBDbGFzc2lmaWNhdGlvbiIsInZhbHMiOlt7InZhbHVlIjoiQ1RQX05UIn1dfV19LCJTdWJqZWN0TGFiZWxzIjpbXSwiVE1DVmVyc2lvbiI6IjE3LjEwLjE4MDQuNDkiLCJUcnVzdGVkTGFiZWxIYXNoIjoiVmJ2RktNdmtPaXhqTFJiTmlEOFBFVmNcL2djZlJJTDhFU015a0lvTlk1RTFUcHFhc21nOUlpSmVhVlBLdml6cXAifQ== x-ctpclassification: CTP_NT dlp-product: dlpe-windows dlp-version: 11.0.200.100 dlp-reaction: no-action x-originating-ip: [10.239.127.40] MIME-Version: 1.0 Subject: Re: [PATCH] BaseTools/GenFw: Add X64 GOTPCREL Support to GenFw X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.26 Precedence: list List-Id: EDK II Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 07 Jun 2018 02:15:51 -0000 Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 WWVzLiBJZiB3ZSBkaXNhYmxlIHRoZSAnI3ByYWdtYSBHQ0MgdmlzaWJpbGl0eSBwdXNoIChoaWRk ZW4pJyBpbiBQcm9jZXNzb3JCaW5kLmgsIHRoZSBHT1RQQ1JFTCBzdXBwb3J0IGlzIG1hbmRhdG9y eS4gM3JkIHBhcnR5IG1vZHVsZSBidWlsZCBtaWdodCBuZWVkIGl0LiBJdCdzIG1vcmUgY29tcGxl dGUgdG8gYWRkIEdPVFBDUkVMIHN1cHBvcnQuDQoNClRoZSBoaWRkZW4gI3ByYWdtYSBjYW4gaGlk ZSBhbGwgRUxGIHN5bWJvbHMnIHZpc2liaWxpdHksIGluY2x1ZGluZyAnZXh0ZXJuJyBmdW5jdGlv bnMsIHdoaWNoIGlzIHRvIGxldCBMaW51eCBjb21waWxlcnMgYXdhcmUgdGhhdCB3ZSBkb27igJl0 IG5lZWQgbG9hZGluZyBkeW5hbWljIGxpbmsgbGlicmFyeSBpbiBVZWZpIHJ1bmluZywgcGxlYXNl IG5vdCBlbWl0IHRoZSBHT1RQQ1JFTCBiYXNlZCByZWxvY2F0aW9ucyBpbiB0aGUgb2JqIGZpbGUs IGFuZCB3ZSB3aWxsIGVuc3VyZSB0aGUgbGlua2VyIGNhbiBnZXQgYWxsIGV4dGVybiBmdW5jdGlv bnMgc3RhdGljYWxseSBzb2x2ZWQuIFRoZSByZWFzb24gb2Ygbm90IGVtaXR0aW5nIEdPVFBDUkVM IGJhc2VkIHJlbG9jYXRpb25zIGlzIGJlY2F1c2UgaXQgaXMgaGFyZCB0byBjb252ZXJ0IHRoZSBH T1RQQ1JFTCBiYXNlZCByZWxvY2F0aW9ucyBpbiBFTEYgYmluYXJ5IHRvIFBFL0NPRkYgcmVsYXRl ZCByZWxvY2F0aW9ucywgYW5kIG91ciBjdXJyZW50IEdlbkZ3IGhhcyBub3Qgc3VwcG9ydGVkIHRo ZW0uIEknbSBnbGFkZSBpZiB3ZSBjYW4gYWRkIHRoZSBHT1RQQ1JFTCBzdXBwb3J0IGluIEdlbkZX IHRvIHRvdGFsbHkgc29sdmUgdGhpcyBwcm9ibGVtLg0KDQpTdGV2ZW4gU2hpDQpJbnRlbFxTU0dc U1RPXFVFRkkgRmlybXdhcmUNCg0KVGVsOiArODYgMDIxLTYxMTY2NTIyDQppTmV0OiA4MjEtNjUy Mg0KDQo+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+IEZyb206IEdhbywgTGltaW5nDQo+ IFNlbnQ6IFRodXJzZGF5LCBKdW5lIDcsIDIwMTggOTozMiBBTQ0KPiBUbzogWmVuaXRoNDMyIDx6 ZW5pdGg0MzJAdXNlcnMuc291cmNlZm9yZ2UubmV0PjsgZWRrMi1kZXZlbEBsaXN0cy4wMS5vcmcN Cj4gQ2M6IFNoaSwgU3RldmVuIDxzdGV2ZW4uc2hpQGludGVsLmNvbT47IFpodSwgWW9uZ2hvbmcN Cj4gPHlvbmdob25nLnpodUBpbnRlbC5jb20+DQo+IFN1YmplY3Q6IFJFOiBbUEFUQ0hdIEJhc2VU b29scy9HZW5GdzogQWRkIFg2NCBHT1RQQ1JFTCBTdXBwb3J0IHRvDQo+IEdlbkZ3DQo+IA0KPiBX aGF0J3MgcHVycG9zZSB0byBzdXBwb3J0IEdPVFBDUkVMIGluIEdlbkZ3PyBDb3VsZCB5b3UgaW50 cm9kdWNlIHlvdXINCj4gdXNhZ2UgbW9kZWw/DQo+IA0KPiA+IC0tLS0tT3JpZ2luYWwgTWVzc2Fn ZS0tLS0tDQo+ID4gRnJvbTogWmVuaXRoNDMyIFttYWlsdG86emVuaXRoNDMyQHVzZXJzLnNvdXJj ZWZvcmdlLm5ldF0NCj4gPiBTZW50OiBUaHVyc2RheSwgSnVuZSA3LCAyMDE4IDI6MDEgQU0NCj4g PiBUbzogZWRrMi1kZXZlbEBsaXN0cy4wMS5vcmcNCj4gPiBDYzogU2hpLCBTdGV2ZW4gPHN0ZXZl bi5zaGlAaW50ZWwuY29tPjsgWmh1LCBZb25naG9uZw0KPiA8eW9uZ2hvbmcuemh1QGludGVsLmNv bT47IEdhbywgTGltaW5nIDxsaW1pbmcuZ2FvQGludGVsLmNvbT4NCj4gPiBTdWJqZWN0OiBbUEFU Q0hdIEJhc2VUb29scy9HZW5GdzogQWRkIFg2NCBHT1RQQ1JFTCBTdXBwb3J0IHRvIEdlbkZ3DQo+ ID4NCj4gPiBBZGRzIHN1cHBvcnQgZm9yIHRoZSBmb2xsb3dpbmcgWDY0IEVMRiByZWxvY2F0aW9u cyB0byBHZW5Gdw0KPiA+ICAgUl9YODZfNjRfR09UUENSRUwNCj4gPiAgIFJfWDg2XzY0X0dPVFBD UkVMWA0KPiA+ICAgUl9YODZfNjRfUkVYX0dPVFBDUkVMWA0KPiA+DQo+ID4gQ0M6IFNoaSBTdGV2 ZW4gPHN0ZXZlbi5zaGlAaW50ZWwuY29tPg0KPiA+IENDOiBZb25naG9uZyBaaHUgPHlvbmdob25n LnpodUBpbnRlbC5jb20+DQo+ID4gQ0M6IExpbWluZyBHYW8gPGxpbWluZy5nYW9AaW50ZWwuY29t Pg0KPiA+IENvbnRyaWJ1dGVkLXVuZGVyOiBUaWFub0NvcmUgQ29udHJpYnV0aW9uIEFncmVlbWVu dCAxLjENCj4gPiBTaWduZWQtb2ZmLWJ5OiBaZW5pdGg0MzIgPHplbml0aDQzMkB1c2Vycy5zb3Vy Y2Vmb3JnZS5uZXQ+DQo+ID4gLS0tDQo+ID4gIEJhc2VUb29scy9Tb3VyY2UvQy9HZW5Gdy9FbGY2 NENvbnZlcnQuYyB8IDE2Ng0KPiArKysrKysrKysrKysrKysrKysrKysrKy0NCj4gPiAgQmFzZVRv b2xzL1NvdXJjZS9DL0dlbkZ3L2VsZl9jb21tb24uaCAgIHwgIDIzICsrKysNCj4gPiAgMiBmaWxl cyBjaGFuZ2VkLCAxODggaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQ0KPiA+DQo+ID4gZGlm ZiAtLWdpdCBhL0Jhc2VUb29scy9Tb3VyY2UvQy9HZW5Gdy9FbGY2NENvbnZlcnQuYw0KPiBiL0Jh c2VUb29scy9Tb3VyY2UvQy9HZW5Gdy9FbGY2NENvbnZlcnQuYw0KPiA+IGluZGV4IGMzOWJkZmYw Li5kMmY5YmI0NiAxMDA2NDQNCj4gPiAtLS0gYS9CYXNlVG9vbHMvU291cmNlL0MvR2VuRncvRWxm NjRDb252ZXJ0LmMNCj4gPiArKysgYi9CYXNlVG9vbHMvU291cmNlL0MvR2VuRncvRWxmNjRDb252 ZXJ0LmMNCj4gPiBAQCAtOTQsNiArOTQsMTUgQEAgU1RBVElDIEVsZl9FaGRyICptRWhkcjsNCj4g PiAgU1RBVElDIEVsZl9TaGRyICptU2hkckJhc2U7DQo+ID4gIFNUQVRJQyBFbGZfUGhkciAqbVBo ZHJCYXNlOw0KPiA+DQo+ID4gKy8vDQo+ID4gKy8vIEdPVCBpbmZvcm1hdGlvbg0KPiA+ICsvLw0K PiA+ICtTVEFUSUMgRWxmX1NoZHIgKm1HT1RTaGRyID0gTlVMTDsNCj4gPiArU1RBVElDIFVJTlQz MiAgIG1HT1RTaGluZGV4ID0gMDsNCj4gPiArU1RBVElDIFVJTlQzMiAgICptR09UQ29mZkVudHJp ZXMgPSBOVUxMOw0KPiA+ICtTVEFUSUMgVUlOVDMyICAgbUdPVE1heENvZmZFbnRyaWVzID0gMDsN Cj4gPiArU1RBVElDIFVJTlQzMiAgIG1HT1ROdW1Db2ZmRW50cmllcyA9IDA7DQo+ID4gKw0KPiA+ ICAvLw0KPiA+ICAvLyBDb2ZmIGluZm9ybWF0aW9uDQo+ID4gIC8vDQo+ID4gQEAgLTMyMiw2ICsz MzEsMTE3IEBAIEdldFN5bU5hbWUgKA0KPiA+ICAgIHJldHVybiBTdHJ0YWJDb250ZW50cyArIFN5 bS0+c3RfbmFtZTsNCj4gPiAgfQ0KPiA+DQo+ID4gKy8vDQo+ID4gKy8vIEZpbmQgdGhlIEVMRiBz ZWN0aW9uIGhvc3RpbmcgdGhlIEdPVCBmcm9tIGFuIEVMRiBSdmENCj4gPiArLy8gICBvZiBhIHNp bmdsZSBHT1QgZW50cnkuICBOb3JtYWxseSwgR09UIGlzIHBsYWNlZCBpbg0KPiA+ICsvLyAgIEVM RiAudGV4dCBzZWN0aW9uLCBzbyBhc3N1bWUgb25jZSB3ZSBmaW5kIGluIHdoaWNoDQo+ID4gKy8v ICAgc2VjdGlvbiB0aGUgR09UIGlzLCBhbGwgR09UIGVudHJpZXMgYXJlIHRoZXJlLCBhbmQNCj4g PiArLy8gICBqdXN0IHZlcmlmeSB0aGlzLg0KPiA+ICsvLw0KPiA+ICtTVEFUSUMNCj4gPiArVk9J RA0KPiA+ICtGaW5kRWxmR09UU2VjdGlvbkZyb21HT1RFbnRyeUVsZlJ2YSAoDQo+ID4gKyAgRWxm NjRfQWRkciBHT1RFbnRyeUVsZlJ2YQ0KPiA+ICsgICkNCj4gPiArew0KPiA+ICsgIFVJTlQzMiBp Ow0KPiA+ICsgIGlmIChtR09UU2hkciAhPSBOVUxMKSB7DQo+ID4gKyAgICBpZiAoR09URW50cnlF bGZSdmEgPj0gbUdPVFNoZHItPnNoX2FkZHIgJiYNCj4gPiArICAgICAgICBHT1RFbnRyeUVsZlJ2 YSA8ICBtR09UU2hkci0+c2hfYWRkciArIG1HT1RTaGRyLT5zaF9zaXplKQ0KPiA+ICsgICAgICBy ZXR1cm47DQo+ID4gKyAgICBFcnJvciAoTlVMTCwgMCwgMzAwMCwgIlVuc3VwcG9ydGVkIiwNCj4g IkZpbmRFbGZHT1RTZWN0aW9uRnJvbUdPVEVudHJ5RWxmUnZhOiBHT1QgZW50cmllcyBmb3VuZCBp biBtdWx0aXBsZQ0KPiBzZWN0aW9ucy4iKTsNCj4gPiArICAgIGV4aXQoRVhJVF9GQUlMVVJFKTsN Cj4gPiArICB9DQo+ID4gKyAgZm9yIChpID0gMDsgaSA8IG1FaGRyLT5lX3NobnVtOyBpKyspIHsN Cj4gPiArICAgIEVsZl9TaGRyICpzaGRyID0gR2V0U2hkckJ5SW5kZXgoaSk7DQo+ID4gKyAgICBp ZiAoR09URW50cnlFbGZSdmEgPj0gc2hkci0+c2hfYWRkciAmJg0KPiA+ICsgICAgICAgIEdPVEVu dHJ5RWxmUnZhIDwgIHNoZHItPnNoX2FkZHIgKyBzaGRyLT5zaF9zaXplKSB7DQo+ID4gKyAgICAg IG1HT1RTaGRyID0gc2hkcjsNCj4gPiArICAgICAgbUdPVFNoaW5kZXggPSBpOw0KPiA+ICsgICAg ICByZXR1cm47DQo+ID4gKyAgICB9DQo+ID4gKyAgfQ0KPiA+ICsgIEVycm9yIChOVUxMLCAwLCAz MDAwLCAiSW52YWxpZCIsICJGaW5kRWxmR09UU2VjdGlvbkZyb21HT1RFbnRyeUVsZlJ2YToNCj4g RWxmUnZhIDB4JTAxNkxYIGZvciBHT1QgZW50cnkgbm90IGZvdW5kIGluIGFueSBzZWN0aW9uLiIs DQo+ID4gR09URW50cnlFbGZSdmEpOw0KPiA+ICsgIGV4aXQoRVhJVF9GQUlMVVJFKTsNCj4gPiAr fQ0KPiA+ICsNCj4gPiArLy8NCj4gPiArLy8gU3RvcmVzIGxvY2F0aW9ucyBvZiBHT1QgZW50cmll cyBpbiBDT0ZGIGltYWdlLg0KPiA+ICsvLyAgIFJldHVybnMgVFJVRSBpZiBHT1QgZW50cnkgaXMg bmV3Lg0KPiA+ICsvLyAgIFNpbXBsZSBpbXBsZW1lbnRhdGlvbiBhcyBudW1iZXIgb2YgR09UDQo+ ID4gKy8vICAgZW50cmllcyBpcyBleHBlY3RlZCB0byBiZSBsb3cuDQo+ID4gKy8vDQo+ID4gKw0K PiA+ICtTVEFUSUMNCj4gPiArQk9PTEVBTg0KPiA+ICtBY2N1bXVsYXRlQ29mZkdPVEVudHJpZXMg KA0KPiA+ICsgIFVJTlQzMiBHT1RDb2ZmRW50cnkNCj4gPiArICApDQo+ID4gK3sNCj4gPiArICBV SU5UMzIgaTsNCj4gPiArICBpZiAobUdPVENvZmZFbnRyaWVzICE9IE5VTEwpIHsNCj4gPiArICAg IGZvciAoaSA9IDA7IGkgPCBtR09UTnVtQ29mZkVudHJpZXM7IGkrKykNCj4gPiArICAgICAgaWYg KG1HT1RDb2ZmRW50cmllc1tpXSA9PSBHT1RDb2ZmRW50cnkpDQo+ID4gKyAgICAgICAgcmV0dXJu IEZBTFNFOw0KPiA+ICsgIH0NCj4gPiArICBpZiAobUdPVENvZmZFbnRyaWVzID09IE5VTEwpIHsN Cj4gPiArICAgIG1HT1RDb2ZmRW50cmllcyA9IChVSU5UMzIqKW1hbGxvYyg1ICogc2l6ZW9mICpt R09UQ29mZkVudHJpZXMpOw0KPiA+ICsgICAgaWYgKG1HT1RDb2ZmRW50cmllcyA9PSBOVUxMKSB7 DQo+ID4gKyAgICAgIEVycm9yIChOVUxMLCAwLCA0MDAxLCAiUmVzb3VyY2UiLCAibWVtb3J5IGNh bm5vdCBiZSBhbGxvY2F0ZWQhIik7DQo+ID4gKyAgICB9DQo+ID4gKyAgICBhc3NlcnQgKG1HT1RD b2ZmRW50cmllcyAhPSBOVUxMKTsNCj4gPiArICAgIG1HT1RNYXhDb2ZmRW50cmllcyA9IDU7DQo+ ID4gKyAgICBtR09UTnVtQ29mZkVudHJpZXMgPSAwOw0KPiA+ICsgIH0gZWxzZSBpZiAobUdPVE51 bUNvZmZFbnRyaWVzID09IG1HT1RNYXhDb2ZmRW50cmllcykgew0KPiA+ICsgICAgbUdPVENvZmZF bnRyaWVzID0gKFVJTlQzMiopcmVhbGxvYyhtR09UQ29mZkVudHJpZXMsIDIgKg0KPiBtR09UTWF4 Q29mZkVudHJpZXMgKiBzaXplb2YgKm1HT1RDb2ZmRW50cmllcyk7DQo+ID4gKyAgICBpZiAobUdP VENvZmZFbnRyaWVzID09IE5VTEwpIHsNCj4gPiArICAgICAgRXJyb3IgKE5VTEwsIDAsIDQwMDEs ICJSZXNvdXJjZSIsICJtZW1vcnkgY2Fubm90IGJlIGFsbG9jYXRlZCEiKTsNCj4gPiArICAgIH0N Cj4gPiArICAgIGFzc2VydCAobUdPVENvZmZFbnRyaWVzICE9IE5VTEwpOw0KPiA+ICsgICAgbUdP VE1heENvZmZFbnRyaWVzICs9IG1HT1RNYXhDb2ZmRW50cmllczsNCj4gPiArICB9DQo+ID4gKyAg bUdPVENvZmZFbnRyaWVzW21HT1ROdW1Db2ZmRW50cmllcysrXSA9IEdPVENvZmZFbnRyeTsNCj4g PiArICByZXR1cm4gVFJVRTsNCj4gPiArfQ0KPiA+ICsNCj4gPiArU1RBVElDDQo+ID4gK2ludA0K PiA+ICtfX2NvbXBhcmF0b3IgKA0KPiA+ICsgIGNvbnN0IHZvaWQqIGxocywNCj4gPiArICBjb25z dCB2b2lkKiByaHMNCj4gPiArICApDQo+ID4gK3sNCj4gPiArICBpZiAoKihjb25zdCBVSU5UMzIq KWxocyA8ICooY29uc3QgVUlOVDMyKilyaHMpDQo+ID4gKyAgICByZXR1cm4gLTE7DQo+ID4gKyAg cmV0dXJuICooY29uc3QgVUlOVDMyKilsaHMgPiAqKGNvbnN0IFVJTlQzMiopcmhzOw0KPiA+ICt9 DQo+ID4gKw0KPiA+ICtTVEFUSUMNCj4gPiArVk9JRA0KPiA+ICtFbWl0R09UUmVsb2NhdGlvbnMg KA0KPiA+ICsgIFZPSUQNCj4gPiArICApDQo+ID4gK3sNCj4gPiArICBVSU5UMzIgaTsNCj4gPiAr ICBpZiAobUdPVENvZmZFbnRyaWVzID09IE5VTEwpDQo+ID4gKyAgICByZXR1cm47DQo+ID4gKyAg cXNvcnQoDQo+ID4gKyAgICBtR09UQ29mZkVudHJpZXMsDQo+ID4gKyAgICBtR09UTnVtQ29mZkVu dHJpZXMsDQo+ID4gKyAgICBzaXplb2YgKm1HT1RDb2ZmRW50cmllcywNCj4gPiArICAgIF9fY29t cGFyYXRvcik7DQo+ID4gKyAgZm9yIChpID0gMDsgaSA8IG1HT1ROdW1Db2ZmRW50cmllczsgaSsr KSB7DQo+ID4gKyAgICBWZXJib3NlTXNnICgiRUZJX0lNQUdFX1JFTF9CQVNFRF9ESVI2NCBPZmZz ZXQ6IDB4JTA4WCIsDQo+IG1HT1RDb2ZmRW50cmllc1tpXSk7DQo+ID4gKyAgICBDb2ZmQWRkRml4 dXAoDQo+ID4gKyAgICAgIG1HT1RDb2ZmRW50cmllc1tpXSwNCj4gPiArICAgICAgRUZJX0lNQUdF X1JFTF9CQVNFRF9ESVI2NCk7DQo+ID4gKyAgfQ0KPiA+ICsgIGZyZWUobUdPVENvZmZFbnRyaWVz KTsNCj4gPiArICBtR09UQ29mZkVudHJpZXMgPSBOVUxMOw0KPiA+ICsgIG1HT1RNYXhDb2ZmRW50 cmllcyA9IDA7DQo+ID4gKyAgbUdPVE51bUNvZmZFbnRyaWVzID0gMDsNCj4gPiArfQ0KPiA+ICsN Cj4gPiAgLy8NCj4gPiAgLy8gRWxmIGZ1bmN0aW9ucyBpbnRlcmZhY2UgaW1wbGVtZW50YXRpb24N Cj4gPiAgLy8NCj4gPiBAQCAtNjk4LDcgKzgxOCw3IEBAIFdyaXRlU2VjdGlvbnM2NCAoDQo+ID4g ICAgICAvLyBzZWN0aW9uIHRoYXQgYXBwbGllcyB0byB0aGUgZW50aXJlIGJpbmFyeSwgYW5kIHdo aWNoIHdpbGwgaGF2ZSBpdHMNCj4gc2VjdGlvbg0KPiA+ICAgICAgLy8gaW5kZXggc2V0IHRvICMw ICh3aGljaCBpcyBhIE5VTEwgc2VjdGlvbiB3aXRoIHRoZSBTSEZfQUxMT0MgYml0DQo+IGNsZWFy ZWQpLg0KPiA+ICAgICAgLy8NCj4gPiAtICAgIC8vIEluIHRoZSBhYnNlbmNlIG9mIEdPVCBiYXNl ZCByZWxvY2F0aW9ucyAod2hpY2ggd2UgY3VycmVudGx5IGRvbid0DQo+IHN1cHBvcnQpLA0KPiA+ ICsgICAgLy8gSW4gdGhlIGFic2VuY2Ugb2YgR09UIGJhc2VkIHJlbG9jYXRpb25zLA0KPiA+ICAg ICAgLy8gdGhpcyBSRUxBIHNlY3Rpb24gd2lsbCBjb250YWluIHJlZHVuZGFudCBSX3h4eF9SRUxB VElWRSByZWxvY2F0aW9ucywNCj4gb25lDQo+ID4gICAgICAvLyBmb3IgZXZlcnkgUl94eHhfeHg2 NCByZWxvY2F0aW9uIGFwcGVhcmluZyBpbiB0aGUgcGVyLXNlY3Rpb24gUkVMQQ0KPiBzZWN0aW9u cy4NCj4gPiAgICAgIC8vIChpLmUuLCAucmVsYS50ZXh0IGFuZCAucmVsYS5kYXRhKQ0KPiA+IEBA IC03ODAsNiArOTAwLDcgQEAgV3JpdGVTZWN0aW9uczY0ICgNCj4gPiAgICAgICAgICAvLyBEZXRl cm1pbmUgaG93IHRvIGhhbmRsZSBlYWNoIHJlbG9jYXRpb24gdHlwZSBiYXNlZCBvbiB0aGUNCj4g bWFjaGluZSB0eXBlLg0KPiA+ICAgICAgICAgIC8vDQo+ID4gICAgICAgICAgaWYgKG1FaGRyLT5l X21hY2hpbmUgPT0gRU1fWDg2XzY0KSB7DQo+ID4gKyAgICAgICAgICBFbGY2NF9BZGRyIEdPVEVu dHJ5UnZhOw0KPiA+ICAgICAgICAgICAgc3dpdGNoIChFTEZfUl9UWVBFKFJlbC0+cl9pbmZvKSkg ew0KPiA+ICAgICAgICAgICAgY2FzZSBSX1g4Nl82NF9OT05FOg0KPiA+ICAgICAgICAgICAgICBi cmVhazsNCj4gPiBAQCAtODM0LDYgKzk1NSwzMiBAQCBXcml0ZVNlY3Rpb25zNjQgKA0KPiA+ICAg ICAgICAgICAgICAgIC0gKFNlY09mZnNldCAtIFNlY1NoZHItPnNoX2FkZHIpKTsNCj4gPiAgICAg ICAgICAgICAgVmVyYm9zZU1zZyAoIlJlbG9jYXRpb246ICAweCUwOFgiLCAqKFVJTlQzMiAqKVRh cmcpOw0KPiA+ICAgICAgICAgICAgICBicmVhazsNCj4gPiArICAgICAgICAgIGNhc2UgUl9YODZf NjRfR09UUENSRUw6DQo+ID4gKyAgICAgICAgICBjYXNlIFJfWDg2XzY0X0dPVFBDUkVMWDoNCj4g PiArICAgICAgICAgIGNhc2UgUl9YODZfNjRfUkVYX0dPVFBDUkVMWDoNCj4gPiArICAgICAgICAg ICAgVmVyYm9zZU1zZyAoIlJfWDg2XzY0X0dPVFBDUkVMIGZhbWlseSIpOw0KPiA+ICsgICAgICAg ICAgICBWZXJib3NlTXNnICgiT2Zmc2V0OiAweCUwOFgsIEFkZGVuZDogMHglMDhYIiwNCj4gPiAr ICAgICAgICAgICAgICAoVUlOVDMyKShTZWNPZmZzZXQgKyAoUmVsLT5yX29mZnNldCAtIFNlY1No ZHItPnNoX2FkZHIpKSwNCj4gPiArICAgICAgICAgICAgICAqKFVJTlQzMiAqKVRhcmcpOw0KPiA+ ICsgICAgICAgICAgICBHT1RFbnRyeVJ2YSA9IFJlbC0+cl9vZmZzZXQgLSBSZWwtPnJfYWRkZW5k ICsgKihVSU5UMzIgKilUYXJnOw0KPiA+ICsgICAgICAgICAgICBGaW5kRWxmR09UU2VjdGlvbkZy b21HT1RFbnRyeUVsZlJ2YShHT1RFbnRyeVJ2YSk7DQo+ID4gKyAgICAgICAgICAgICooVUlOVDMy ICopVGFyZyA9IChVSU5UMzIpICgqKFVJTlQzMiAqKVRhcmcNCj4gPiArICAgICAgICAgICAgICAr IChtQ29mZlNlY3Rpb25zT2Zmc2V0W21HT1RTaGluZGV4XSAtIG1HT1RTaGRyLT5zaF9hZGRyKQ0K PiA+ICsgICAgICAgICAgICAgIC0gKFNlY09mZnNldCAtIFNlY1NoZHItPnNoX2FkZHIpKTsNCj4g PiArICAgICAgICAgICAgVmVyYm9zZU1zZyAoIlJlbG9jYXRpb246ICAweCUwOFgiLCAqKFVJTlQz MiAqKVRhcmcpOw0KPiA+ICsgICAgICAgICAgICBHT1RFbnRyeVJ2YSArPSAobUNvZmZTZWN0aW9u c09mZnNldFttR09UU2hpbmRleF0gLSBtR09UU2hkci0NCj4gPnNoX2FkZHIpOyAgLy8gRUxGIFJ2 YSAtPiBDT0ZGIFJ2YQ0KPiA+ICsgICAgICAgICAgICBpZiAoQWNjdW11bGF0ZUNvZmZHT1RFbnRy aWVzKChVSU5UMzIpR09URW50cnlSdmEpKSB7DQo+ID4gKyAgICAgICAgICAgICAgLy8NCj4gPiAr ICAgICAgICAgICAgICAvLyBSZWxvY2F0ZSBHT1QgZW50cnkgaWYgaXQncyB0aGUgZmlyc3QgdGlt ZSB3ZSBydW4gaW50byBpdA0KPiA+ICsgICAgICAgICAgICAgIC8vDQo+ID4gKyAgICAgICAgICAg ICAgVGFyZyA9IG1Db2ZmRmlsZSArIEdPVEVudHJ5UnZhOw0KPiA+ICsgICAgICAgICAgICAgIFZl cmJvc2VNc2cgKCJPZmZzZXQ6IDB4JTA4WCwgQWRkZW5kOiAweCUwMTZMWCIsDQo+ID4gKyAgICAg ICAgICAgICAgICAoVUlOVDMyKUdPVEVudHJ5UnZhLA0KPiA+ICsgICAgICAgICAgICAgICAgKihV SU5UNjQgKilUYXJnKTsNCj4gPiArICAgICAgICAgICAgICAqKFVJTlQ2NCAqKVRhcmcgPSAqKFVJ TlQ2NCAqKVRhcmcgLSBTeW1TaGRyLT5zaF9hZGRyICsNCj4gbUNvZmZTZWN0aW9uc09mZnNldFtT eW0tPnN0X3NobmR4XTsNCj4gPiArICAgICAgICAgICAgICBWZXJib3NlTXNnICgiUmVsb2NhdGlv bjogIDB4JTAxNkxYIiwgKihVSU5UNjQqKVRhcmcpOw0KPiA+ICsgICAgICAgICAgICB9DQo+ID4g KyAgICAgICAgICAgIGJyZWFrOw0KPiA+ICAgICAgICAgICAgZGVmYXVsdDoNCj4gPiAgICAgICAg ICAgICAgRXJyb3IgKE5VTEwsIDAsIDMwMDAsICJJbnZhbGlkIiwgIiVzIHVuc3VwcG9ydGVkIEVM RiBFTV9YODZfNjQNCj4gcmVsb2NhdGlvbiAweCV4LiIsIG1JbkltYWdlTmFtZSwgKHVuc2lnbmVk KQ0KPiA+IEVMRl9SX1RZUEUoUmVsLT5yX2luZm8pKTsNCj4gPiAgICAgICAgICAgIH0NCj4gPiBA QCAtOTcyLDYgKzExMTksOSBAQCBXcml0ZVJlbG9jYXRpb25zNjQgKA0KPiA+ICAgICAgICAgICAg ICBjYXNlIFJfWDg2XzY0X05PTkU6DQo+ID4gICAgICAgICAgICAgIGNhc2UgUl9YODZfNjRfUEMz MjoNCj4gPiAgICAgICAgICAgICAgY2FzZSBSX1g4Nl82NF9QTFQzMjoNCj4gPiArICAgICAgICAg ICAgY2FzZSBSX1g4Nl82NF9HT1RQQ1JFTDoNCj4gPiArICAgICAgICAgICAgY2FzZSBSX1g4Nl82 NF9HT1RQQ1JFTFg6DQo+ID4gKyAgICAgICAgICAgIGNhc2UgUl9YODZfNjRfUkVYX0dPVFBDUkVM WDoNCj4gPiAgICAgICAgICAgICAgICBicmVhazsNCj4gPiAgICAgICAgICAgICAgY2FzZSBSX1g4 Nl82NF82NDoNCj4gPiAgICAgICAgICAgICAgICBWZXJib3NlTXNnICgiRUZJX0lNQUdFX1JFTF9C QVNFRF9ESVI2NCBPZmZzZXQ6IDB4JTA4WCIsDQo+ID4gQEAgLTEwNDAsMTAgKzExOTAsMjQgQEAg V3JpdGVSZWxvY2F0aW9uczY0ICgNCj4gPiAgICAgICAgICAgICAgRXJyb3IgKE5VTEwsIDAsIDMw MDAsICJOb3QgU3VwcG9ydGVkIiwgIlRoaXMgdG9vbCBkb2VzIG5vdCBzdXBwb3J0DQo+IHJlbG9j YXRpb25zIGZvciBFTEYgd2l0aCBlX21hY2hpbmUgJXUgKHByb2Nlc3Nvcg0KPiA+IHR5cGUpLiIs ICh1bnNpZ25lZCkgbUVoZHItPmVfbWFjaGluZSk7DQo+ID4gICAgICAgICAgICB9DQo+ID4gICAg ICAgICAgfQ0KPiA+ICsgICAgICAgIGlmIChtRWhkci0+ZV9tYWNoaW5lID09IEVNX1g4Nl82NCAm JiBSZWxTaGRyLT5zaF9pbmZvID09DQo+IG1HT1RTaGluZGV4KSB7DQo+ID4gKyAgICAgICAgICAv Lw0KPiA+ICsgICAgICAgICAgLy8gVGFjayByZWxvY2F0aW9ucyBmb3IgR09UIGVudHJpZXMgYWZ0 ZXIgb3RoZXIgcmVsb2NhdGlvbnMgZm9yDQo+ID4gKyAgICAgICAgICAvLyAgIHRoZSBzZWN0aW9u IHRoZSBHT1QgaXMgaW4sIGFzIGl0J3MgdXN1YWxseSBmb3VuZCBhdCB0aGUgZW5kDQo+ID4gKyAg ICAgICAgICAvLyAgIG9mIHRoZSBzZWN0aW9uLg0KPiA+ICsgICAgICAgICAgLy8NCj4gPiArICAg ICAgICAgIEVtaXRHT1RSZWxvY2F0aW9ucygpOw0KPiA+ICsgICAgICAgIH0NCj4gPiAgICAgICAg fQ0KPiA+ICAgICAgfQ0KPiA+ICAgIH0NCj4gPg0KPiA+ICsgIGlmIChtRWhkci0+ZV9tYWNoaW5l ID09IEVNX1g4Nl82NCkgew0KPiA+ICsgICAgLy8NCj4gPiArICAgIC8vIEp1c3QgaW4gY2FzZSBH T1QgaXMgaW4gYSBzZWN0aW9uIHdpdGggbm8gb3RoZXIgcmVsb2NhdGlvbnMNCj4gPiArICAgIC8v DQo+ID4gKyAgICBFbWl0R09UUmVsb2NhdGlvbnMoKTsNCj4gPiArICB9DQo+ID4gICAgLy8NCj4g PiAgICAvLyBQYWQgYnkgYWRkaW5nIGVtcHR5IGVudHJpZXMuDQo+ID4gICAgLy8NCj4gPiBkaWZm IC0tZ2l0IGEvQmFzZVRvb2xzL1NvdXJjZS9DL0dlbkZ3L2VsZl9jb21tb24uaA0KPiBiL0Jhc2VU b29scy9Tb3VyY2UvQy9HZW5Gdy9lbGZfY29tbW9uLmgNCj4gPiBpbmRleCA3NjZkMGU0Mi4uNTBi NGUxZjIgMTAwNjQ0DQo+ID4gLS0tIGEvQmFzZVRvb2xzL1NvdXJjZS9DL0dlbkZ3L2VsZl9jb21t b24uaA0KPiA+ICsrKyBiL0Jhc2VUb29scy9Tb3VyY2UvQy9HZW5Gdy9lbGZfY29tbW9uLmgNCj4g PiBAQCAtNTQ0LDYgKzU0NCwxMiBAQCB0eXBlZGVmIHN0cnVjdCB7DQo+ID4gICNkZWZpbmUJUl8z ODZfVExTX0RUUE1PRDMyCTM1CS8qIEdPVCBlbnRyeQ0KPiBjb250YWluaW5nIFRMUyBpbmRleCAq Lw0KPiA+ICAjZGVmaW5lCVJfMzg2X1RMU19EVFBPRkYzMgkzNgkvKiBHT1QgZW50cnkgY29udGFp bmluZyBUTFMNCj4gb2Zmc2V0ICovDQo+ID4gICNkZWZpbmUJUl8zODZfVExTX1RQT0ZGMzIJMzcJ LyogR09UIGVudHJ5IG9mIC12ZSBzdGF0aWMgVExTDQo+IG9mZnNldCAqLw0KPiA+ICsjZGVmaW5l CVJfMzg2X1NJWkUzMgkJMzgJLyogMzItYml0IHN5bWJvbCBzaXplICovDQo+ID4gKyNkZWZpbmUJ Ul8zODZfVExTX0dPVERFU0MJMzkJLyogR09UIG9mZnNldCBmb3IgVExTDQo+IGRlc2NyaXB0b3Iu ICovDQo+ID4gKyNkZWZpbmUJUl8zODZfVExTX0RFU0NfQ0FMTAk0MAkvKiBNYXJrZXIgb2YgY2Fs bCB0aHJvdWdoIFRMUw0KPiBkZXNjcmlwdG9yIGZvciByZWxheGF0aW9uLiAqLw0KPiA+ICsjZGVm aW5lCVJfMzg2X1RMU19ERVNDCQk0MQkvKiBUTFMgZGVzY3JpcHRvcg0KPiBjb250YWluaW5nIHBv aW50ZXIgdG8gY29kZSBhbmQgdG8gYXJndW1lbnQsIHJldHVybmluZyB0aGUgVExTIG9mZnNldCBm b3IgdGhlDQo+ID4gc3ltYm9sLiAqLw0KPiA+ICsjZGVmaW5lCVJfMzg2X0lSRUxBVElWRQkJNDIJ LyogQWRqdXN0IGluZGlyZWN0bHkgYnkNCj4gcHJvZ3JhbSBiYXNlICovDQo+ID4gKyNkZWZpbmUJ Ul8zODZfR09UMzJYCQk0MwkvKiBMb2FkIGZyb20gMzIgYml0IEdPVA0KPiBlbnRyeSwgcmVsYXhh YmxlLiAqLw0KPiA+DQo+ID4gIC8qIE51bGwgcmVsb2NhdGlvbiAqLw0KPiA+ICAjZGVmaW5lCVJf QUFSQ0g2NF9OT05FCQkJCTI1NgkvKg0KPiBObyByZWxvY2F0aW9uICovDQo+ID4gQEAgLTEwNTIs NiArMTA1OCwyMyBAQCB0eXBlZGVmIHN0cnVjdCB7DQo+ID4gICNkZWZpbmUJUl9YODZfNjRfRFRQ T0ZGMzIJMjEJLyogT2Zmc2V0IGluIFRMUyBibG9jayAqLw0KPiA+ICAjZGVmaW5lCVJfWDg2XzY0 X0dPVFRQT0ZGCTIyCS8qIFBDIHJlbGF0aXZlIG9mZnNldCB0byBJRQ0KPiBHT1QgZW50cnkgKi8N Cj4gPiAgI2RlZmluZQlSX1g4Nl82NF9UUE9GRjMyCTIzCS8qIE9mZnNldCBpbiBzdGF0aWMgVExT IGJsb2NrDQo+ICovDQo+ID4gKyNkZWZpbmUJUl9YODZfNjRfUEM2NAkJMjQJLyogUEMgcmVsYXRp dmUgNjQgYml0DQo+ICovDQo+ID4gKyNkZWZpbmUJUl9YODZfNjRfR09UT0ZGNjQJMjUJLyogNjQg Yml0IG9mZnNldCB0byBHT1QgKi8NCj4gPiArI2RlZmluZQlSX1g4Nl82NF9HT1RQQzMyCTI2CS8q IDMyIGJpdCBzaWduZWQgcGMgcmVsYXRpdmUNCj4gb2Zmc2V0IHRvIEdPVCAqLw0KPiA+ICsjZGVm aW5lCVJfWDg2XzY0X0dPVDY0CQkyNwkvKiA2NC1iaXQgR09UIGVudHJ5DQo+IG9mZnNldCAqLw0K PiA+ICsjZGVmaW5lCVJfWDg2XzY0X0dPVFBDUkVMNjQJMjgJLyogNjQtYml0IFBDIHJlbGF0aXZl DQo+IG9mZnNldCB0byBHT1QgZW50cnkgKi8NCj4gPiArI2RlZmluZQlSX1g4Nl82NF9HT1RQQzY0 CTI5CS8qIDY0LWJpdCBQQyByZWxhdGl2ZSBvZmZzZXQgdG8NCj4gR09UICovDQo+ID4gKyNkZWZp bmUJUl9YODZfNjRfR09UUExUNjQJMzAJLyogbGlrZSBHT1Q2NCwgc2F5cyBQTFQgZW50cnkNCj4g bmVlZGVkICovDQo+ID4gKyNkZWZpbmUJUl9YODZfNjRfUExUT0ZGNjQJMzEJLyogNjQtYml0IEdP VCByZWxhdGl2ZSBvZmZzZXQNCj4gdG8gUExUIGVudHJ5ICovDQo+ID4gKyNkZWZpbmUJUl9YODZf NjRfU0laRTMyCQkzMgkvKiBTaXplIG9mIHN5bWJvbCBwbHVzDQo+IDMyLWJpdCBhZGRlbmQgKi8N Cj4gPiArI2RlZmluZQlSX1g4Nl82NF9TSVpFNjQJCTMzCS8qIFNpemUgb2Ygc3ltYm9sIHBsdXMN Cj4gNjQtYml0IGFkZGVuZCAqLw0KPiA+ICsjZGVmaW5lCVJfWDg2XzY0X0dPVFBDMzJfVExTREVT QwkzNAkvKiBHT1Qgb2Zmc2V0IGZvciBUTFMNCj4gZGVzY3JpcHRvci4gKi8NCj4gPiArI2RlZmlu ZQlSX1g4Nl82NF9UTFNERVNDX0NBTEwJMzUJLyogTWFya2VyIGZvciBjYWxsDQo+IHRocm91Z2gg VExTIGRlc2NyaXB0b3IuICovDQo+ID4gKyNkZWZpbmUJUl9YODZfNjRfVExTREVTQwkzNgkvKiBU TFMgZGVzY3JpcHRvci4gKi8NCj4gPiArI2RlZmluZQlSX1g4Nl82NF9JUkVMQVRJVkUJMzcJLyog QWRqdXN0IGluZGlyZWN0bHkgYnkNCj4gcHJvZ3JhbSBiYXNlICovDQo+ID4gKyNkZWZpbmUJUl9Y ODZfNjRfUkVMQVRJVkU2NAkzOAkvKiA2NC1iaXQgYWRqdXN0IGJ5IHByb2dyYW0NCj4gYmFzZSAq Lw0KPiA+ICsjZGVmaW5lCVJfWDg2XzY0X0dPVFBDUkVMWAk0MQkvKiBMb2FkIGZyb20gMzIgYml0 IHNpZ25lZCBwYw0KPiByZWxhdGl2ZSBvZmZzZXQgdG8gR09UIGVudHJ5IHdpdGhvdXQgUkVYIHBy ZWZpeCwgcmVsYXhhYmxlLiAqLw0KPiA+ICsjZGVmaW5lCVJfWDg2XzY0X1JFWF9HT1RQQ1JFTFgJ NDIJLyogTG9hZCBmcm9tIDMyIGJpdA0KPiBzaWduZWQgcGMgcmVsYXRpdmUgb2Zmc2V0IHRvIEdP VCBlbnRyeSB3aXRoIFJFWCBwcmVmaXgsIHJlbGF4YWJsZS4gKi8NCj4gPg0KPiA+DQo+ID4gICNl bmRpZiAvKiAhX1NZU19FTEZfQ09NTU9OX0hfICovDQo+ID4gLS0NCj4gPiAyLjE3LjENCg0K