From mboxrd@z Thu Jan 1 00:00:00 1970 From: =?utf-8?B?V2FuZyBUaW3vvIjnjovoiYfoiYfvvIk=?= Subject: RE: [PATCH] Implement the -a option to pad dtb aligned Date: Mon, 27 Jun 2016 08:49:37 +0000 Message-ID: <7bbb538e64e740cdbb97e21c1ff0522b@mail2012.asrmicro.com> References: <1466800337-1729-1-git-send-email-timwang@asrmicro.com> <20160627054507.GO4242@voom.fritz.box> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20160627054507.GO4242-RXTfZT5YzpxwFLYp8hBm2A@public.gmane.org> Content-Language: zh-CN Sender: devicetree-compiler-owner-u79uwXL29TY76Z2rM5mHXA@public.gmane.org List-ID: To: David Gibson Cc: "devicetree-compiler-u79uwXL29TY76Z2rM5mHXA@public.gmane.org" , "wtt_usst-9Onoh4P/yGk@public.gmane.org" SGkgRGF2aWQsDQooU2VlbXMgbXkgcGVydmlvdXMgbWFpbCByZWplY3RlZCBieSB2Z2VyLmtlcm5l bC5vcmcpLg0KDQpUaGFua3MgZm9yIHlvdXIga2luZGx5IHJldmlldyENCkFib3V0IHRoZSB1c2Fn ZSBvZiB0aGlzIHBhdGNoLCBhcyBJIGtub3csDQpzb21lIGFuZHJvaWQgcGhvbmUgYW5kIGdvb2ds ZSBUViBzb2MgdmVuZG9ycyBvciBwcm9kdWN0aW9uIHZlbmRvcnMNCm5lZWQgc3VjaCBvcHRpb24g dG8gY2F0IGFsbCBkdGIgZmlsZXMgdG8gc3VwcG9ydCBzZXZlcmFsIHByb2R1Y3RzLg0KU3VjaCBh cyBvbmUgc29jIHZlbmRvciBzdXBwb3J0IHR3byBjdXN0b21lcnMgcHJvZHVjdHMuIEFuZCBlYWNo IG9mDQp0aGVtIHVzZSBkaWZmZXJlbnQgc2NyZWVuIHBhbmVsIGFuZCBjYW1lcmEgc2Vuc29yLiBC dXQgbW9zdCBvdGhlciBwZXJpcGhlcmFscw0KYXJlIHNhbWUgYXMgdGhlIGNvbW1vbiBib2FyZC4N CldlIGNhbiB1c2Ugb25lIGtlcm5lbCBJbWFnZSBhbmQgc2V2ZXJhbCBkdGIgZmlsZXMgdG8gc3Vw cG9ydCBib3RoIG9mIHRoZW0uDQoNClRoZSBjYWxjdWxhdGUgbWV0aG9kIG9mIC1hIG9wdGlvbiBh ZnRlciAtcC8tUyBpcyB0b3RhbGx5IHdyb25nLg0KSSd2ZSBmaXggaXQgaW4gYXR0YWNoZWQgcGF0 Y2ggZmlsZSwgcGxlYXNlIGhlbHAgdG8gcmV2aWV3IGFnYWluLg0KDQpCdXQgSSdtIG5vdCBzdXJl IHdoZXRoZXIgbXkgZHRfdG9fYXNtIHBhcnQgY2hhbmdlIGlzIHJpZ2h0Lg0KUGxlYXNlIHNob3cg bWUgbW9yZSBkZXRhaWxzIGlmIG15IHBhdGNoIGlzIHdyb25nIGFnYWluLg0KDQpIZXJlIGlzIHRo ZSB1cGRhdGVkIHBhdGNo77yaDQpbUEFUQ0hdIEltcGxlbWVudCB0aGUgLWEgb3B0aW9uIHRvIHBh ZCBkdGIgYWxpZ25lZA0KDQpUaGVyZSBpcyBvbmUgY29uZGl0aW9uIHRoYXQgbmVlZCBjYXQgdGhl IGR0YiBmaWxlcw0KaW50byBvbmUgZHRiLmltZyB3aGljaCBjYW4gc3VwcG9ydCBzZXZlcmFsIGJv YXJkcw0KdXNlIHNhbWUgU29DIHBsYXRmb3JtLg0KDQpBbmQgdGhlIG9yaWdpbmFsIGR0YiBmaWxl IHNpemUgaXMgbm90IGFsaWduZWQgdG8gYW55IGJhc2UuDQpUaGlzIG1heSBjYXVzZSAiU3luY2hy b25vdXMgQWJvcnQiIHdoZW4gbG9hZCBmcm9tIGEgdW5saWduZWQNCmFkZHJlc3Mgb24gc29tZSBT b0MgbWFjaGluZSwgc3VjaCBhcyBBUk0uDQoNClNvIHRoaXMgcGF0Y2ggaW1wbGVtZW50IHRoZSAt YSA8YWxpZ25lZCBudW1iZXI+IG9wdGlvbiB0bw0KcGFkIHplcm8gYXQgdGhlIGVuZCBvZiBkdGIg ZmlsZXMgYW5kIG1ha2UgdGhlIGR0YiBzaXplIGFsaWduZWQNCnRvIDxhbGlnbmVkIG51bWJlcj4u DQoNClRoZW4sIHRoZSBhbGlnbmVkIGR0YnMgY2FuIGNhdCB0b2dldGhlciBhbmQgbG9hZCB3aXRo b3V0ICJTeW5jaHJvbm91cw0KQWJvcnQiLg0KDQpTaWduZWQtb2ZmLWJ5OiBUaW0gV2FuZyA8dGlt d2FuZ0Bhc3JtaWNyby5jb20+DQotLS0NCiBkdGMuYyAgICAgIHwgIDkgKysrKysrKystDQogZHRj LmggICAgICB8ICAxICsNCiBmbGF0dHJlZS5jIHwgMTMgKysrKysrKysrKysrLQ0KIDMgZmlsZXMg Y2hhbmdlZCwgMjEgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkNCg0KZGlmZiAtLWdpdCBh L2R0Yy5jIGIvZHRjLmMNCmluZGV4IDVmYTIzYzQuLjE3NDlkMjYgMTAwNjQ0DQotLS0gYS9kdGMu Yw0KKysrIGIvZHRjLmMNCkBAIC0zMCw2ICszMCw3IEBAIGludCBxdWlldDsJCS8qIExldmVsIG9m IHF1aWV0bmVzcyAqLw0KIGludCByZXNlcnZlbnVtOwkJLyogTnVtYmVyIG9mIG1lbW9yeSByZXNl cnZhdGlvbiBzbG90cyAqLw0KIGludCBtaW5zaXplOwkJLyogTWluaW11bSBibG9iIHNpemUgKi8N CiBpbnQgcGFkc2l6ZTsJCS8qIEFkZGl0aW9uYWwgcGFkZGluZyB0byBibG9iICovDQoraW50IGFs aWduX3NpemU7CQkvKiBBZGRpdGlvbmFsIHBhZGRpbmcgdG8gYmxvYiBhY2Nyb2RpbmcgdG8gdGhl IGFsaWduIHNpemUgKi8NCiBpbnQgcGhhbmRsZV9mb3JtYXQgPSBQSEFORExFX0JPVEg7CS8qIFVz ZSBsaW51eCxwaGFuZGxlIG9yIHBoYW5kbGUgcHJvcGVydGllcyAqLw0KIA0KIHN0YXRpYyB2b2lk IGZpbGxfZnVsbHBhdGhzKHN0cnVjdCBub2RlICp0cmVlLCBjb25zdCBjaGFyICpwcmVmaXgpDQpA QCAtNTMsNyArNTQsNyBAQCBzdGF0aWMgdm9pZCBmaWxsX2Z1bGxwYXRocyhzdHJ1Y3Qgbm9kZSAq dHJlZSwgY29uc3QgY2hhciAqcHJlZml4KQ0KICNkZWZpbmUgRkRUX1ZFUlNJT04odmVyc2lvbikJ X0ZEVF9WRVJTSU9OKHZlcnNpb24pDQogI2RlZmluZSBfRkRUX1ZFUlNJT04odmVyc2lvbikJI3Zl cnNpb24NCiBzdGF0aWMgY29uc3QgY2hhciB1c2FnZV9zeW5vcHNpc1tdID0gImR0YyBbb3B0aW9u c10gPGlucHV0IGZpbGU+IjsNCi1zdGF0aWMgY29uc3QgY2hhciB1c2FnZV9zaG9ydF9vcHRzW10g PSAicUk6TzpvOlY6ZDpSOlM6cDpmYjppOkg6c1c6RTpodiI7DQorc3RhdGljIGNvbnN0IGNoYXIg dXNhZ2Vfc2hvcnRfb3B0c1tdID0gInFJOk86bzpWOmQ6UjpTOnA6YTpmYjppOkg6c1c6RTpodiI7 DQogc3RhdGljIHN0cnVjdCBvcHRpb24gY29uc3QgdXNhZ2VfbG9uZ19vcHRzW10gPSB7DQogCXsi cXVpZXQiLCAgICAgICAgICAgIG5vX2FyZ3VtZW50LCBOVUxMLCAncSd9LA0KIAl7ImluLWZvcm1h dCIsICAgICAgICAgYV9hcmd1bWVudCwgTlVMTCwgJ0knfSwNCkBAIC02NCw2ICs2NSw3IEBAIHN0 YXRpYyBzdHJ1Y3Qgb3B0aW9uIGNvbnN0IHVzYWdlX2xvbmdfb3B0c1tdID0gew0KIAl7InJlc2Vy dmUiLCAgICAgICAgICAgYV9hcmd1bWVudCwgTlVMTCwgJ1InfSwNCiAJeyJzcGFjZSIsICAgICAg ICAgICAgIGFfYXJndW1lbnQsIE5VTEwsICdTJ30sDQogCXsicGFkIiwgICAgICAgICAgICAgICBh X2FyZ3VtZW50LCBOVUxMLCAncCd9LA0KKwl7ImFsaWduIiwgICAgICAgICAgICAgYV9hcmd1bWVu dCwgTlVMTCwgJ2EnfSwNCiAJeyJib290LWNwdSIsICAgICAgICAgIGFfYXJndW1lbnQsIE5VTEws ICdiJ30sDQogCXsiZm9yY2UiLCAgICAgICAgICAgIG5vX2FyZ3VtZW50LCBOVUxMLCAnZid9LA0K IAl7ImluY2x1ZGUiLCAgICAgICAgICAgYV9hcmd1bWVudCwgTlVMTCwgJ2knfSwNCkBAIC05MSw2 ICs5Myw3IEBAIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgdXNhZ2Vfb3B0c19oZWxwW10gPSB7 DQogCSJcblx0TWFrZSBzcGFjZSBmb3IgPG51bWJlcj4gcmVzZXJ2ZSBtYXAgZW50cmllcyAoZm9y IGR0YiBhbmQgYXNtIG91dHB1dCkiLA0KIAkiXG5cdE1ha2UgdGhlIGJsb2IgYXQgbGVhc3QgPGJ5 dGVzPiBsb25nIChleHRyYSBzcGFjZSkiLA0KIAkiXG5cdEFkZCBwYWRkaW5nIHRvIHRoZSBibG9i IG9mIDxieXRlcz4gbG9uZyAoZXh0cmEgc3BhY2UpIiwNCisJIlxuXHRNYWtlIHRoZSBibG9iIGFs aWduIHRvIHRoZSA8Ynl0ZXM+IChleHRyYSBzcGFjZSkiLA0KIAkiXG5cdFNldCB0aGUgcGh5c2lj YWwgYm9vdCBjcHUiLA0KIAkiXG5cdFRyeSB0byBwcm9kdWNlIG91dHB1dCBldmVuIGlmIHRoZSBp bnB1dCB0cmVlIGhhcyBlcnJvcnMiLA0KIAkiXG5cdEFkZCBhIHBhdGggdG8gc2VhcmNoIGZvciBp bmNsdWRlIGZpbGVzIiwNCkBAIC0xNjksNiArMTcyLDcgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNo YXIgKmFyZ3ZbXSkNCiAJcmVzZXJ2ZW51bSA9IDA7DQogCW1pbnNpemUgICAgPSAwOw0KIAlwYWRz aXplICAgID0gMDsNCisJYWxpZ25fc2l6ZSA9IDA7DQogDQogCXdoaWxlICgob3B0ID0gdXRpbF9n ZXRvcHRfbG9uZygpKSAhPSBFT0YpIHsNCiAJCXN3aXRjaCAob3B0KSB7DQpAQCAtMTk2LDYgKzIw MCw5IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pDQogCQljYXNlICdwJzoNCiAJ CQlwYWRzaXplID0gc3RydG9sKG9wdGFyZywgTlVMTCwgMCk7DQogCQkJYnJlYWs7DQorCQljYXNl ICdhJzoNCisJCQlhbGlnbl9zaXplID0gc3RydG9sKG9wdGFyZywgTlVMTCwgMCk7DQorCQkJYnJl YWs7DQogCQljYXNlICdmJzoNCiAJCQlmb3JjZSA9IHRydWU7DQogCQkJYnJlYWs7DQpkaWZmIC0t Z2l0IGEvZHRjLmggYi9kdGMuaA0KaW5kZXggNTYyMTJjOC4uYjQwNmQyMSAxMDA2NDQNCi0tLSBh L2R0Yy5oDQorKysgYi9kdGMuaA0KQEAgLTUzLDYgKzUzLDcgQEAgZXh0ZXJuIGludCBxdWlldDsJ CS8qIExldmVsIG9mIHF1aWV0bmVzcyAqLw0KIGV4dGVybiBpbnQgcmVzZXJ2ZW51bTsJCS8qIE51 bWJlciBvZiBtZW1vcnkgcmVzZXJ2YXRpb24gc2xvdHMgKi8NCiBleHRlcm4gaW50IG1pbnNpemU7 CQkvKiBNaW5pbXVtIGJsb2Igc2l6ZSAqLw0KIGV4dGVybiBpbnQgcGFkc2l6ZTsJCS8qIEFkZGl0 aW9uYWwgcGFkZGluZyB0byBibG9iICovDQorZXh0ZXJuIGludCBhbGlnbl9zaXplOwkJLyogQWRk aXRpb25hbCBwYWRkaW5nIHRvIGJsb2IgYWNjcm9kaW5nIHRvIHRoZSBhbGlnbiBzaXplICovDQog ZXh0ZXJuIGludCBwaGFuZGxlX2Zvcm1hdDsJLyogVXNlIGxpbnV4LHBoYW5kbGUgb3IgcGhhbmRs ZSBwcm9wZXJ0aWVzICovDQogDQogI2RlZmluZSBQSEFORExFX0xFR0FDWQkweDENCmRpZmYgLS1n aXQgYS9mbGF0dHJlZS5jIGIvZmxhdHRyZWUuYw0KaW5kZXggZWMxNDk1NC4uMjlmMGE1NCAxMDA2 NDQNCi0tLSBhL2ZsYXR0cmVlLmMNCisrKyBiL2ZsYXR0cmVlLmMNCkBAIC0zOTgsMTAgKzM5OCwx MiBAQCB2b2lkIGR0X3RvX2Jsb2IoRklMRSAqZiwgc3RydWN0IGJvb3RfaW5mbyAqYmksIGludCB2 ZXJzaW9uKQ0KIAkgKi8NCiAJaWYgKG1pbnNpemUgPiAwKSB7DQogCQlwYWRsZW4gPSBtaW5zaXpl IC0gZmR0MzJfdG9fY3B1KGZkdC50b3RhbHNpemUpOw0KLQkJaWYgKChwYWRsZW4gPCAwKSAmJiAo cXVpZXQgPCAxKSkNCisJCWlmICgocGFkbGVuIDwgMCkgJiYgKHF1aWV0IDwgMSkpIHsNCiAJCQlm cHJpbnRmKHN0ZGVyciwNCiAJCQkJIldhcm5pbmc6IGJsb2Igc2l6ZSAlZCA+PSBtaW5pbXVtIHNp emUgJWRcbiIsDQogCQkJCWZkdDMyX3RvX2NwdShmZHQudG90YWxzaXplKSwgbWluc2l6ZSk7DQor CQkJcGFkbGVuID0gMDsNCisJCX0NCiAJfQ0KIA0KIAlpZiAocGFkc2l6ZSA+IDApDQpAQCAtNDEz LDYgKzQxNSwxMyBAQCB2b2lkIGR0X3RvX2Jsb2IoRklMRSAqZiwgc3RydWN0IGJvb3RfaW5mbyAq YmksIGludCB2ZXJzaW9uKQ0KIAkJZmR0LnRvdGFsc2l6ZSA9IGNwdV90b19mZHQzMih0c2l6ZSk7 DQogCX0NCiANCisJaWYgKGFsaWduX3NpemUgPiAwKSB7DQorCQlpbnQgdHNpemUgPSBmZHQzMl90 b19jcHUoZmR0LnRvdGFsc2l6ZSk7DQorCQlwYWRsZW4gKz0gQUxJR04odHNpemUsIGFsaWduX3Np emUpIC0gdHNpemU7DQorCQl0c2l6ZSA9IEFMSUdOKHRzaXplLCBhbGlnbl9zaXplKTsNCisJCWZk dC50b3RhbHNpemUgPSBjcHVfdG9fZmR0MzIodHNpemUpOw0KKwl9DQorDQogCS8qDQogCSAqIEFz c2VtYmxlIHRoZSBibG9iOiBzdGFydCB3aXRoIHRoZSBoZWFkZXIsIGFkZCB3aXRoIGFsaWdubWVu dA0KIAkgKiB0aGUgcmVzZXJ2ZSBidWZmZXIsIGFkZCB0aGUgcmVzZXJ2ZSBtYXAgdGVybWluYXRp bmcgemVyb2VzLA0KQEAgLTQ3OCw2ICs0ODcsOCBAQCB2b2lkIGR0X3RvX2FzbShGSUxFICpmLCBz dHJ1Y3QgYm9vdF9pbmZvICpiaSwgaW50IHZlcnNpb24pDQogCWZwcmludGYoZiwgIi8qIGF1dG9n ZW5lcmF0ZWQgYnkgZHRjLCBkbyBub3QgZWRpdCAqL1xuXG4iKTsNCiANCiAJZW1pdF9sYWJlbChm LCBzeW1wcmVmaXgsICJibG9iX3N0YXJ0Iik7DQorCWlmIChhbGlnbl9zaXplID4gMCkNCisJCWFz bV9lbWl0X2FsaWduKGYsIGFsaWduX3NpemUpOw0KIAllbWl0X2xhYmVsKGYsIHN5bXByZWZpeCwg ImhlYWRlciIpOw0KIAlmcHJpbnRmKGYsICJcdC8qIG1hZ2ljICovXG4iKTsNCiAJYXNtX2VtaXRf Y2VsbChmLCBGRFRfTUFHSUMpOw0KLS0gDQoxLjkuMQ0KDQpCZXN0IFJlZ2FyZHMNClRpbSBXYW5n KOeOi+iJh+iJhykNCg0KLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCkZyb206IERhdmlkIEdp YnNvbiBbbWFpbHRvOmRhdmlkQGdpYnNvbi5kcm9wYmVhci5pZC5hdV0gDQpTZW50OiBNb25kYXks IEp1bmUgMjcsIDIwMTYgMTo0NSBQTQ0KVG86IFdhbmcgVGlt77yI546L6ImH6ImH77yJDQpDYzog ZGV2aWNldHJlZS1jb21waWxlckB2Z2VyLmtlcm5lbC5vcmc7IHd0dF91c3N0QDE2My5jb20NClN1 YmplY3Q6IFJlOiBbUEFUQ0hdIEltcGxlbWVudCB0aGUgLWEgb3B0aW9uIHRvIHBhZCBkdGIgYWxp Z25lZA0KDQpPbiBTYXQsIEp1biAyNSwgMjAxNiBhdCAwNDozMjoxN0FNICswODAwLCBUaW0gV2Fu ZyB3cm90ZToNCj4gVGhlcmUgaXMgb25lIGNvbmRpdGlvbiB0aGF0IG5lZWQgY2F0IHRoZSBkdGIg ZmlsZXMgaW50byBvbmUgZHRiLmltZyANCj4gd2hpY2ggY2FuIHN1cHBvcnQgc2V2ZXJhbCBib2Fy ZHMgdXNlIHNhbWUgU29DIHBsYXRmb3JtLg0KPiANCj4gQW5kIHRoZSBvcmlnaW5hbCBkdGIgZmls ZSBzaXplIGlzIG5vdCBhbGlnbmVkIHRvIGFueSBiYXNlLg0KPiBUaGlzIG1heSBjYXVzZSAiU3lu Y2hyb25vdXMgQWJvcnQiIHdoZW4gbG9hZCBmcm9tIGEgdW5saWduZWQgYWRkcmVzcyANCj4gb24g c29tZSBTb0MgbWFjaGluZSwgc3VjaCBhcyBBUk0uDQo+IA0KPiBTbyB0aGlzIHBhdGNoIGltcGxl bWVudCB0aGUgLWEgPGFsaWduZWQgbnVtYmVyPiBvcHRpb24gdG8gcGFkIHplcm8gYXQgDQo+IHRo ZSBlbmQgb2YgZHRiIGZpbGVzIGFuZCBtYWtlIHRoZSBkdGIgc2l6ZSBhbGlnbmVkIHRvIDxhbGln bmVkIA0KPiBudW1iZXI+Lg0KPiANCj4gVGhlbiwgdGhlIGFsaWduZWQgZHRicyBjYW4gY2F0IHRv Z2V0aGVyIGFuZCBsb2FkIHdpdGhvdXQgIlN5bmNocm9ub3VzIA0KPiBBYm9ydCIuDQo+IA0KPiBT aWduZWQtb2ZmLWJ5OiBUaW0gV2FuZyA8dGltd2FuZ0Bhc3JtaWNyby5jb20+DQoNCkknbSBhIGxp dHRsZSBkdWJpb3VzIGFib3V0IGhvdyB3aWRlbHkgdXNlZnVsIHRoaXMgaXMsIGJ1dCBJJ2QgY29u c2lkZXIgYXBwbHlpbmcgc29tZXRoaW5nIHRvIHRoaXMgZWZmZWN0Lg0KDQpIb3dldmVyLCB0aGlz IGltcGxlbWVudGF0aW9uIGlzIGluY29ycmVjdCBvbiBtdWx0aXBsZSBjb3VudHMuDQoNCj4gLS0t DQo+ICBkdGMuYyAgICAgIHwgIDkgKysrKysrKystDQo+ICBkdGMuaCAgICAgIHwgIDEgKw0KPiAg ZmxhdHRyZWUuYyB8IDEwICsrKysrKysrKysNCj4gIDMgZmlsZXMgY2hhbmdlZCwgMTkgaW5zZXJ0 aW9ucygrKSwgMSBkZWxldGlvbigtKQ0KPiANCj4gZGlmZiAtLWdpdCBhL2R0Yy5jIGIvZHRjLmMN Cj4gaW5kZXggNWZhMjNjNC4uMTc0OWQyNiAxMDA2NDQNCj4gLS0tIGEvZHRjLmMNCj4gKysrIGIv ZHRjLmMNCj4gQEAgLTMwLDYgKzMwLDcgQEAgaW50IHF1aWV0OwkJLyogTGV2ZWwgb2YgcXVpZXRu ZXNzICovDQo+ICBpbnQgcmVzZXJ2ZW51bTsJCS8qIE51bWJlciBvZiBtZW1vcnkgcmVzZXJ2YXRp b24gc2xvdHMgKi8NCj4gIGludCBtaW5zaXplOwkJLyogTWluaW11bSBibG9iIHNpemUgKi8NCj4g IGludCBwYWRzaXplOwkJLyogQWRkaXRpb25hbCBwYWRkaW5nIHRvIGJsb2IgKi8NCj4gK2ludCBh bGlnbl9zaXplOwkJLyogQWRkaXRpb25hbCBwYWRkaW5nIHRvIGJsb2IgYWNjcm9kaW5nIHRvIHRo ZSBhbGlnbiBzaXplICovDQo+ICBpbnQgcGhhbmRsZV9mb3JtYXQgPSBQSEFORExFX0JPVEg7CS8q IFVzZSBsaW51eCxwaGFuZGxlIG9yIHBoYW5kbGUgcHJvcGVydGllcyAqLw0KPiAgDQo+ICBzdGF0 aWMgdm9pZCBmaWxsX2Z1bGxwYXRocyhzdHJ1Y3Qgbm9kZSAqdHJlZSwgY29uc3QgY2hhciAqcHJl Zml4KSBAQCANCj4gLTUzLDcgKzU0LDcgQEAgc3RhdGljIHZvaWQgZmlsbF9mdWxscGF0aHMoc3Ry dWN0IG5vZGUgKnRyZWUsIGNvbnN0IGNoYXIgKnByZWZpeCkNCj4gICNkZWZpbmUgRkRUX1ZFUlNJ T04odmVyc2lvbikJX0ZEVF9WRVJTSU9OKHZlcnNpb24pDQo+ICAjZGVmaW5lIF9GRFRfVkVSU0lP Tih2ZXJzaW9uKQkjdmVyc2lvbg0KPiAgc3RhdGljIGNvbnN0IGNoYXIgdXNhZ2Vfc3lub3BzaXNb XSA9ICJkdGMgW29wdGlvbnNdIDxpbnB1dCBmaWxlPiI7IA0KPiAtc3RhdGljIGNvbnN0IGNoYXIg dXNhZ2Vfc2hvcnRfb3B0c1tdID0gDQo+ICJxSTpPOm86VjpkOlI6UzpwOmZiOmk6SDpzVzpFOmh2 IjsNCj4gK3N0YXRpYyBjb25zdCBjaGFyIHVzYWdlX3Nob3J0X29wdHNbXSA9IA0KPiArInFJOk86 bzpWOmQ6UjpTOnA6YTpmYjppOkg6c1c6RTpodiI7DQo+ICBzdGF0aWMgc3RydWN0IG9wdGlvbiBj b25zdCB1c2FnZV9sb25nX29wdHNbXSA9IHsNCj4gIAl7InF1aWV0IiwgICAgICAgICAgICBub19h cmd1bWVudCwgTlVMTCwgJ3EnfSwNCj4gIAl7ImluLWZvcm1hdCIsICAgICAgICAgYV9hcmd1bWVu dCwgTlVMTCwgJ0knfSwNCj4gQEAgLTY0LDYgKzY1LDcgQEAgc3RhdGljIHN0cnVjdCBvcHRpb24g Y29uc3QgdXNhZ2VfbG9uZ19vcHRzW10gPSB7DQo+ICAJeyJyZXNlcnZlIiwgICAgICAgICAgIGFf YXJndW1lbnQsIE5VTEwsICdSJ30sDQo+ICAJeyJzcGFjZSIsICAgICAgICAgICAgIGFfYXJndW1l bnQsIE5VTEwsICdTJ30sDQo+ICAJeyJwYWQiLCAgICAgICAgICAgICAgIGFfYXJndW1lbnQsIE5V TEwsICdwJ30sDQo+ICsJeyJhbGlnbiIsICAgICAgICAgICAgIGFfYXJndW1lbnQsIE5VTEwsICdh J30sDQo+ICAJeyJib290LWNwdSIsICAgICAgICAgIGFfYXJndW1lbnQsIE5VTEwsICdiJ30sDQo+ ICAJeyJmb3JjZSIsICAgICAgICAgICAgbm9fYXJndW1lbnQsIE5VTEwsICdmJ30sDQo+ICAJeyJp bmNsdWRlIiwgICAgICAgICAgIGFfYXJndW1lbnQsIE5VTEwsICdpJ30sDQo+IEBAIC05MSw2ICs5 Myw3IEBAIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgdXNhZ2Vfb3B0c19oZWxwW10gPSB7DQo+ ICAJIlxuXHRNYWtlIHNwYWNlIGZvciA8bnVtYmVyPiByZXNlcnZlIG1hcCBlbnRyaWVzIChmb3Ig ZHRiIGFuZCBhc20gb3V0cHV0KSIsDQo+ICAJIlxuXHRNYWtlIHRoZSBibG9iIGF0IGxlYXN0IDxi eXRlcz4gbG9uZyAoZXh0cmEgc3BhY2UpIiwNCj4gIAkiXG5cdEFkZCBwYWRkaW5nIHRvIHRoZSBi bG9iIG9mIDxieXRlcz4gbG9uZyAoZXh0cmEgc3BhY2UpIiwNCj4gKwkiXG5cdE1ha2UgdGhlIGJs b2IgYWxpZ24gdG8gdGhlIDxieXRlcz4gKGV4dHJhIHNwYWNlKSIsDQo+ICAJIlxuXHRTZXQgdGhl IHBoeXNpY2FsIGJvb3QgY3B1IiwNCj4gIAkiXG5cdFRyeSB0byBwcm9kdWNlIG91dHB1dCBldmVu IGlmIHRoZSBpbnB1dCB0cmVlIGhhcyBlcnJvcnMiLA0KPiAgCSJcblx0QWRkIGEgcGF0aCB0byBz ZWFyY2ggZm9yIGluY2x1ZGUgZmlsZXMiLCBAQCAtMTY5LDYgKzE3Miw3IEBAIA0KPiBpbnQgbWFp bihpbnQgYXJnYywgY2hhciAqYXJndltdKQ0KPiAgCXJlc2VydmVudW0gPSAwOw0KPiAgCW1pbnNp emUgICAgPSAwOw0KPiAgCXBhZHNpemUgICAgPSAwOw0KPiArCWFsaWduX3NpemUgPSAwOw0KPiAg DQo+ICAJd2hpbGUgKChvcHQgPSB1dGlsX2dldG9wdF9sb25nKCkpICE9IEVPRikgew0KPiAgCQlz d2l0Y2ggKG9wdCkgew0KPiBAQCAtMTk2LDYgKzIwMCw5IEBAIGludCBtYWluKGludCBhcmdjLCBj aGFyICphcmd2W10pDQo+ICAJCWNhc2UgJ3AnOg0KPiAgCQkJcGFkc2l6ZSA9IHN0cnRvbChvcHRh cmcsIE5VTEwsIDApOw0KPiAgCQkJYnJlYWs7DQo+ICsJCWNhc2UgJ2EnOg0KPiArCQkJYWxpZ25f c2l6ZSA9IHN0cnRvbChvcHRhcmcsIE5VTEwsIDApOw0KPiArCQkJYnJlYWs7DQo+ICAJCWNhc2Ug J2YnOg0KPiAgCQkJZm9yY2UgPSB0cnVlOw0KPiAgCQkJYnJlYWs7DQo+IGRpZmYgLS1naXQgYS9k dGMuaCBiL2R0Yy5oDQo+IGluZGV4IDU2MjEyYzguLmI0MDZkMjEgMTAwNjQ0DQo+IC0tLSBhL2R0 Yy5oDQo+ICsrKyBiL2R0Yy5oDQo+IEBAIC01Myw2ICs1Myw3IEBAIGV4dGVybiBpbnQgcXVpZXQ7 CQkvKiBMZXZlbCBvZiBxdWlldG5lc3MgKi8NCj4gIGV4dGVybiBpbnQgcmVzZXJ2ZW51bTsJCS8q IE51bWJlciBvZiBtZW1vcnkgcmVzZXJ2YXRpb24gc2xvdHMgKi8NCj4gIGV4dGVybiBpbnQgbWlu c2l6ZTsJCS8qIE1pbmltdW0gYmxvYiBzaXplICovDQo+ICBleHRlcm4gaW50IHBhZHNpemU7CQkv KiBBZGRpdGlvbmFsIHBhZGRpbmcgdG8gYmxvYiAqLw0KPiArZXh0ZXJuIGludCBhbGlnbl9zaXpl OwkJLyogQWRkaXRpb25hbCBwYWRkaW5nIHRvIGJsb2IgYWNjcm9kaW5nIHRvIHRoZSBhbGlnbiBz aXplICovDQo+ICBleHRlcm4gaW50IHBoYW5kbGVfZm9ybWF0OwkvKiBVc2UgbGludXgscGhhbmRs ZSBvciBwaGFuZGxlIHByb3BlcnRpZXMgKi8NCj4gIA0KPiAgI2RlZmluZSBQSEFORExFX0xFR0FD WQkweDENCj4gZGlmZiAtLWdpdCBhL2ZsYXR0cmVlLmMgYi9mbGF0dHJlZS5jDQo+IGluZGV4IGVj MTQ5NTQuLjczM2UzMmUgMTAwNjQ0DQo+IC0tLSBhL2ZsYXR0cmVlLmMNCj4gKysrIGIvZmxhdHRy ZWUuYw0KPiBAQCAtNDEzLDYgKzQxMywxMyBAQCB2b2lkIGR0X3RvX2Jsb2IoRklMRSAqZiwgc3Ry dWN0IGJvb3RfaW5mbyAqYmksIGludCB2ZXJzaW9uKQ0KPiAgCQlmZHQudG90YWxzaXplID0gY3B1 X3RvX2ZkdDMyKHRzaXplKTsNCj4gIAl9DQo+ICANCj4gKwlpZiAoYWxpZ25fc2l6ZSA+IDApIHsN Cj4gKwkJaW50IHRzaXplID0gZmR0MzJfdG9fY3B1KGZkdC50b3RhbHNpemUpOw0KPiArCQlwYWRs ZW4gKz0gKGFsaWduX3NpemUgLSB0c2l6ZSAlIGFsaWduX3NpemUpOw0KPiArCQl0c2l6ZSArPSBw YWRsZW47DQo+ICsJCWZkdC50b3RhbHNpemUgPSBjcHVfdG9fZmR0MzIodHNpemUpOw0KPiArCX0N Cg0KVGhpcyBvY2N1cnMgYWZ0ZXIgdG90YWxzaXplIGhhcyBhbHJlYWR5IGJlZW4gYWRqdXN0ZWQg Zm9yIHRoZSAtcCBvcHRpb24uICBTbywgaWYgLXAgYW5kIC1hIGFyZSBib3RoIHNwZWNpZmllZCwg dGhpcyB3aWxsIGFwcGx5IHRoZSAtcCBwYWRkaW5nIHR3aWNlLiAgRnVydGhlciBpZiB0aGUgLXAg dmFsdWUgaXRzZWxmIGlzbid0IGFsaWduZWQsIG5laXRoZXIgd2lsbCB0aGUgZmluYWwgYmxvYiBi ZS4NCg0KSW5zdGVhZCB5b3Ugd2FudCB0byBhZGp1c3QgcGFkbGVuIGZvciB0aGUgYWxpZ25tZW50 IHNpemUgKmJlZm9yZSogYWx0ZXJpbmcgZmR0LnRvdGFsc2l6ZS4NCg0KPiArDQo+ICAJLyoNCj4g IAkgKiBBc3NlbWJsZSB0aGUgYmxvYjogc3RhcnQgd2l0aCB0aGUgaGVhZGVyLCBhZGQgd2l0aCBh bGlnbm1lbnQNCj4gIAkgKiB0aGUgcmVzZXJ2ZSBidWZmZXIsIGFkZCB0aGUgcmVzZXJ2ZSBtYXAg dGVybWluYXRpbmcgemVyb2VzLCBAQCANCj4gLTU3Miw2ICs1NzksOSBAQCB2b2lkIGR0X3RvX2Fz bShGSUxFICpmLCBzdHJ1Y3QgYm9vdF9pbmZvICpiaSwgaW50IHZlcnNpb24pDQo+ICAJaWYgKHBh ZHNpemUgPiAwKSB7DQo+ICAJCWZwcmludGYoZiwgIlx0LnNwYWNlXHQlZCwgMFxuIiwgcGFkc2l6 ZSk7DQo+ICAJfQ0KPiArCWlmIChhbGlnbl9zaXplID4gMCkgew0KPiArCQlmcHJpbnRmKGYsICJc dC5zcGFjZVx0JWQsIDBcbiIsIGFsaWduX3NpemUpOw0KPiArCX0NCg0KVGhpcyBpcyBhbHNvIGp1 c3QgcGxhaW4gd3JvbmcuICBUaGlzIHdpbGwgc2ltcGx5IGFkZCBhbGlnbl9zaXplIGJ5dGVzIG9m IGV4dHJhIHBhZGRpbmcsIHJhdGhlciB0aGFuIGFsaWduaW5nIHRoZSBmaW5hbCByZXN1bHQuDQoN CllvdSBlaXRoZXIgd2FudCB0byBhZGp1c3QgcGFkc2l6ZSB0byBiZSBhbGlnbmVkIGJlZm9yZSBl bWl0aW5nIHRoZSAuc3BhY2UgcGFkc2l6ZSBkaXJlY3RpdmUsIG9yIHlvdSB3YW50IHRvIHVzZSBh IC5hbGlnbiBkaXJlY3RpdmUgaW5zdGVhZC4NCg0KVGhpcyBwYXRjaCBzaG91bGQgYWxzbyBhZGQg b25lIG9yIG1vcmUgdGVzdGNhc2VzLCB3aGljaCBtaWdodCBoYXZlIGNhdWdodCB0aGUgZXJyb3Jz IGFib3ZlLg0KDQo+ICAJZW1pdF9sYWJlbChmLCBzeW1wcmVmaXgsICJibG9iX2Fic19lbmQiKTsN Cj4gIA0KPiAgCWRhdGFfZnJlZShzdHJidWYpOw0KDQotLSANCkRhdmlkIEdpYnNvbgkJCXwgSSds bCBoYXZlIG15IG11c2ljIGJhcm9xdWUsIGFuZCBteSBjb2RlDQpkYXZpZCBBVCBnaWJzb24uZHJv cGJlYXIuaWQuYXUJfCBtaW5pbWFsaXN0LCB0aGFuayB5b3UuICBOT1QgX3RoZV8gX290aGVyXw0K CQkJCXwgX3dheV8gX2Fyb3VuZF8hDQpodHRwOi8vd3d3Lm96bGFicy5vcmcvfmRnaWJzb24NCg==