From mboxrd@z Thu Jan 1 00:00:00 1970 Return-path: Received: from zimbra2.kalray.eu ([92.103.151.219]) by bombadil.infradead.org with esmtps (Exim 4.90_1 #2 (Red Hat Linux)) id 1h93TU-0002hV-Cr for barebox@lists.infradead.org; Wed, 27 Mar 2019 07:59:54 +0000 Date: Wed, 27 Mar 2019 08:59:42 +0100 (CET) From: =?utf-8?Q?Cl=C3=A9ment?= Leger Message-ID: <663215622.7149476.1553673582174.JavaMail.zimbra@kalray.eu> In-Reply-To: <20190327074851.jva5cfg2jnbvfviq@pengutronix.de> References: <2115635878.3947318.1552936607997.JavaMail.zimbra@kalray.eu> <20190320080506.xttdoivywbkaptx5@pengutronix.de> <1029133302.4680876.1553069889561.JavaMail.zimbra@kalray.eu> <64949728.4732605.1553099324820.JavaMail.zimbra@kalray.eu> <20190327074851.jva5cfg2jnbvfviq@pengutronix.de> MIME-Version: 1.0 List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "barebox" Errors-To: barebox-bounces+u.kleine-koenig=pengutronix.de@lists.infradead.org Subject: Re: [PATCH] elf: add 64 bits elf support To: Sascha Hauer Cc: Barebox List SGkgU2FzY2hhLAoKSSB3aWxsIHRyeSB0byBjb21waWxlIGl0IGluIDMyYml0cyBhbHNvIChvbmx5 IHRyaWVkIDY0Yml0cykuCkknbSBndWVzc2luZyBpdCB3aWxsIHNwaXQgb3V0IHNvbWUgd2Fybmlu ZyBhYm91dCB0eXBlIHNpemVzIHdoZW4gY2FzdGluZwpzbyBJIHdpbGwgcmVzZW5kIGEgVjMuCgpU aGFua3MsCgpDbMOpbWVudAoKLS0tLS0gTWFpbCBvcmlnaW5hbCAtLS0tLQpEZTogIlNhc2NoYSBI YXVlciIgPHMuaGF1ZXJAcGVuZ3V0cm9uaXguZGU+CsOAOiAiQ2zDqW1lbnQgTGVnZXIiIDxjbGVn ZXJAa2FscmF5LmV1PgpDYzogIkJhcmVib3ggTGlzdCIgPGJhcmVib3hAbGlzdHMuaW5mcmFkZWFk Lm9yZz4KRW52b3nDqTogTWVyY3JlZGkgMjcgTWFycyAyMDE5IDA4OjQ4OjUxCk9iamV0OiBSZTog W1BBVENIXSBlbGY6IGFkZCA2NCBiaXRzIGVsZiBzdXBwb3J0CgpIaSBDbMOpbWVudCwKCkkgZ3Vl c3MgdGhpcyB2ZXJzaW9uIGxvb2tzIGdvb2QuIENvdWxkIHlvdSByZXNlbmQgd2l0aCBhIFNpZ25l ZC1vZmYtYnkKdGFnPwoKU2FzY2hhCgpPbiBXZWQsIE1hciAyMCwgMjAxOSBhdCAwNToyODo0NFBN ICswMTAwLCBDbMOpbWVudCBMZWdlciB3cm90ZToKPiBIZXJlIGlzIGEgVjIgd2hpY2ggdXNlcyBj b3JyZWN0IHR5cGUgZm9yIGVsZiBoZWFkZXIgYWNjZXNzIG1hY3Jvcwo+IChpbnN0ZWFkIG9mIHNp bXBseSB1bnNpZ25lZCBsb25nKS4gTW9yZW92ZXIgdHlwZXMgdXNlZCBhcmUgbm93Cj4gb2YgZml4 ZWQgc2l6ZSB0eXBlICh1NjQgaW5zdGVhZCBvZiB1bnNpZ25lZCBsb25nKS4gVGhpcyBjb3VsZAo+ IHBvdGVudGlhbGx5IGFsbG93IGEgMzJiaXQgYmFyZWJveCB0byBsb2FkIGEgNjRiaXQgZWxmIHVz aW5nIHNvbWUgY3VzdG9tCj4gaGFyZHdhcmUgd2hpY2ggc3VwcG9ydCA2NGJpdCBhZGRyZXNzaW5n IChETUEgb3Igc3VjaCB0aGluZykuCj4gCj4gCj4gVGhpcyBwYXRjaCBhZGQgZWxmNjQgbG9hZGlu ZyBzdXBwb3J0IHRvIHRoZSBlbGYgbG9hZGVyLiBTaW5jZQo+IGVsZjMyIGFuZCBlbGY2NCB1c2Vz IGNvbXBsZXRlbHkgZGlmZmVyZW50IHR5cGVzLCB0byBhdm9pZCBjb3B5aW5nIGFsbAo+IHRoZSBj b2RlIGFuZCBzaW1wbHkgcmVwbGFjZSBlbGYzMiB3aXRoIGVsZjY0LCB1c2UgYSBtYWNybyB3aGlj aCB3aWxsCj4gcmV0dXJuIHRoZSBhcHByb3ByaWF0ZSBmaWVsZCBmb3IgZWFjaCB0eXBlIG9mIGhl YWRlci4gVGhpcyBtYWNybwo+IGdlbmVyYXRlcyBnZXR0ZXIgZm9yIGVsZiBzdHJ1Y3R1cmVzIGFj Y29yZGluZyB0byB0aGUgY2xhc3Mgb2YgdGhlIGxvYWRlZAo+IGVsZi4KPiBBbGwgZGlyZWN0IGVs ZiBzdHJ1Y3QgZGVyZWZlcmVuY2UgYXJlIHRoZW4gcmVwbGFjZWQgYnkgY2FsbCB0byBnZW5lcmF0 ZWQKPiBmdW5jdGlvbnMuIFRoaXMgYWxsb3dzIHRvIGtlZXAgYSBjb21tb24gbG9hZGVyIGNvZGUg ZXZlbiBpZiB0eXBlcyBhcmUKPiBkaWZmZXJlbnQuCj4gLS0tCj4gIGNvbW1vbi9lbGYuYyAgfCA0 NSArKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KPiAgaW5jbHVk ZS9lbGYuaCB8IDI5ICsrKysrKysrKysrKysrKysrKysrKysrKysrKystCj4gIDIgZmlsZXMgY2hh bmdlZCwgNTEgaW5zZXJ0aW9ucygrKSwgMjMgZGVsZXRpb25zKC0pCj4gCj4gZGlmZiAtLWdpdCBh L2NvbW1vbi9lbGYuYyBiL2NvbW1vbi9lbGYuYwo+IGluZGV4IDhlZGYzODg1Ni4uNDczM2FjY2Iw IDEwMDY0NAo+IC0tLSBhL2NvbW1vbi9lbGYuYwo+ICsrKyBiL2NvbW1vbi9lbGYuYwo+IEBAIC00 NSwyOSArNDUsMzEgQEAgc3RhdGljIHZvaWQgZWxmX3JlbGVhc2VfcmVnaW9ucyhzdHJ1Y3QgZWxm X2ltYWdlICplbGYpCj4gIAo+ICAKPiAgc3RhdGljIGludCBsb2FkX2VsZl9waGRyX3NlZ21lbnQo c3RydWN0IGVsZl9pbWFnZSAqZWxmLCB2b2lkICpzcmMsCj4gLQkJCQkgRWxmMzJfUGhkciAqcGhk cikKPiArCQkJCSB2b2lkICpwaGRyKQo+ICB7Cj4gLQl2b2lkICpkc3QgPSAodm9pZCAqKXBoZHIt PnBfcGFkZHI7Cj4gKwl2b2lkICpkc3QgPSAodm9pZCAqKSBlbGZfcGhkcl9wX3BhZGRyKGVsZiwg cGhkcik7Cj4gIAlpbnQgcmV0Owo+ICsJdTY0IHBfZmlsZXN6ID0gZWxmX3BoZHJfcF9maWxlc3oo ZWxmLCBwaGRyKTsKPiArCXU2NCBwX21lbXN6ID0gZWxmX3BoZHJfcF9tZW1zeihlbGYsIHBoZHIp Owo+ICAKPiAgCS8qIHdlIGNhcmUgb25seSBhYm91dCBQVF9MT0FEIHNlZ21lbnRzICovCj4gLQlp ZiAocGhkci0+cF90eXBlICE9IFBUX0xPQUQpCj4gKwlpZiAoZWxmX3BoZHJfcF90eXBlKGVsZiwg cGhkcikgIT0gUFRfTE9BRCkKPiAgCQlyZXR1cm4gMDsKPiAgCj4gLQlpZiAoIXBoZHItPnBfZmls ZXN6KQo+ICsJaWYgKCFwX2ZpbGVzeikKPiAgCQlyZXR1cm4gMDsKPiAgCj4gLQlwcl9kZWJ1Zygi TG9hZGluZyBwaGRyIHRvIDB4JXAgKCVpIGJ5dGVzKVxuIiwgZHN0LCBwaGRyLT5wX2ZpbGVzeik7 Cj4gKwlwcl9kZWJ1ZygiTG9hZGluZyBwaGRyIHRvIDB4JXAgKCVsbHUgYnl0ZXMpXG4iLCBkc3Qs IHBfZmlsZXN6KTsKPiAgCj4gLQlyZXQgPSBlbGZfcmVxdWVzdF9yZWdpb24oZWxmLCAocmVzb3Vy Y2Vfc2l6ZV90KWRzdCwgcGhkci0+cF9maWxlc3opOwo+ICsJcmV0ID0gZWxmX3JlcXVlc3RfcmVn aW9uKGVsZiwgKHJlc291cmNlX3NpemVfdClkc3QsIHBfZmlsZXN6KTsKPiAgCWlmIChyZXQpCj4g IAkJcmV0dXJuIHJldDsKPiAgCj4gLQltZW1jcHkoZHN0LCBzcmMsIHBoZHItPnBfZmlsZXN6KTsK PiArCW1lbWNweShkc3QsIHNyYywgcF9maWxlc3opOwo+ICAKPiAtCWlmIChwaGRyLT5wX2ZpbGVz eiA8IHBoZHItPnBfbWVtc3opCj4gLQkJbWVtc2V0KGRzdCArIHBoZHItPnBfZmlsZXN6LCAweDAw LAo+IC0JCSAgICAgICBwaGRyLT5wX21lbXN6IC0gcGhkci0+cF9maWxlc3opOwo+ICsJaWYgKHBf ZmlsZXN6IDwgcF9tZW1zeikKPiArCQltZW1zZXQoZHN0ICsgcF9maWxlc3osIDB4MDAsCj4gKwkJ ICAgICAgIHBfbWVtc3ogLSBwX2ZpbGVzeik7Cj4gIAo+ICAJcmV0dXJuIDA7Cj4gIH0KPiBAQCAt NzUsMTQgKzc3LDEzIEBAIHN0YXRpYyBpbnQgbG9hZF9lbGZfcGhkcl9zZWdtZW50KHN0cnVjdCBl bGZfaW1hZ2UgKmVsZiwgdm9pZCAqc3JjLAo+ICBzdGF0aWMgaW50IGxvYWRfZWxmX2ltYWdlX3Bo ZHIoc3RydWN0IGVsZl9pbWFnZSAqZWxmKQo+ICB7Cj4gIAl2b2lkICpidWYgPSBlbGYtPmJ1ZjsK PiAtCUVsZjMyX0VoZHIgKmVoZHIgPSBidWY7Cj4gLQlFbGYzMl9QaGRyICpwaGRyID0gKEVsZjMy X1BoZHIgKikoYnVmICsgZWhkci0+ZV9waG9mZik7Cj4gKwl2b2lkICpwaGRyID0gKHZvaWQgKikg KGJ1ZiArIGVsZl9oZHJfZV9waG9mZihlbGYsIGJ1ZikpOwo+ICAJaW50IGksIHJldDsKPiAgCj4g LQllbGYtPmVudHJ5ID0gZWhkci0+ZV9lbnRyeTsKPiArCWVsZi0+ZW50cnkgPSBlbGZfaGRyX2Vf ZW50cnkoZWxmLCBidWYpOwo+ICAKPiAtCWZvciAoaSA9IDA7IGkgPCBlaGRyLT5lX3BobnVtOyAr K2kpIHsKPiAtCQl2b2lkICpzcmMgPSBidWYgKyBwaGRyLT5wX29mZnNldDsKPiArCWZvciAoaSA9 IDA7IGkgPCBlbGZfaGRyX2VfcGhudW0oZWxmLCBidWYpIDsgKytpKSB7Cj4gKwkJdm9pZCAqc3Jj ID0gYnVmICsgZWxmX3BoZHJfcF9vZmZzZXQoZWxmLCBwaGRyKTsKPiAgCj4gIAkJcmV0ID0gbG9h ZF9lbGZfcGhkcl9zZWdtZW50KGVsZiwgc3JjLCBwaGRyKTsKPiAgCQkvKiBpbiBjYXNlIG9mIGVy cm9yIGVsZl9sb2FkX2ltYWdlKCkgY2FsbGVyIHNob3VsZCBjbGVhbiB1cCBhbmQKPiBAQCAtOTAs MjIgKzkxLDIyIEBAIHN0YXRpYyBpbnQgbG9hZF9lbGZfaW1hZ2VfcGhkcihzdHJ1Y3QgZWxmX2lt YWdlICplbGYpCj4gIAkJaWYgKHJldCkKPiAgCQkJcmV0dXJuIHJldDsKPiAgCj4gLQkJKytwaGRy Owo+ICsJCXBoZHIgKz0gZWxmX3NpemVfb2ZfcGhkcihlbGYpOwo+ICAJfQo+ICAKPiAgCXJldHVy biAwOwo+ICB9Cj4gIAo+IC1zdGF0aWMgaW50IGVsZl9jaGVja19pbWFnZSh2b2lkICpidWYpCj4g K3N0YXRpYyBpbnQgZWxmX2NoZWNrX2ltYWdlKHN0cnVjdCBlbGZfaW1hZ2UgKmVsZikKPiAgewo+ IC0JRWxmMzJfRWhkciAqZWhkciA9IChFbGYzMl9FaGRyICopYnVmOwo+IC0KPiAtCWlmIChzdHJu Y21wKGJ1ZiwgRUxGTUFHLCBTRUxGTUFHKSkgewo+ICsJaWYgKHN0cm5jbXAoZWxmLT5idWYsIEVM Rk1BRywgU0VMRk1BRykpIHsKPiAgCQlwcl9lcnIoIkVMRiBtYWdpYyBub3QgZm91bmQuXG4iKTsK PiAgCQlyZXR1cm4gLUVJTlZBTDsKPiAgCX0KPiAgCj4gLQlpZiAoZWhkci0+ZV90eXBlICE9IEVU X0VYRUMpIHsKPiArCWVsZi0+Y2xhc3MgPSAoKGNoYXIgKikgZWxmLT5idWYpW0VJX0NMQVNTXTsK PiArCj4gKwlpZiAoZWxmX2hkcl9lX3R5cGUoZWxmLCBlbGYtPmJ1ZikgIT0gRVRfRVhFQykgewo+ ICAJCXByX2VycigiTm9uIEVYRUMgRUxGIGltYWdlLlxuIik7Cj4gIAkJcmV0dXJuIC1FTk9FWEVD Owo+ICAJfQo+IEBAIC0xMjQsNyArMTI1LDcgQEAgc3RydWN0IGVsZl9pbWFnZSAqZWxmX2xvYWRf aW1hZ2Uodm9pZCAqYnVmKQo+ICAKPiAgCWVsZi0+YnVmID0gYnVmOwo+ICAKPiAtCXJldCA9IGVs Zl9jaGVja19pbWFnZShidWYpOwo+ICsJcmV0ID0gZWxmX2NoZWNrX2ltYWdlKGVsZik7Cj4gIAlp ZiAocmV0KQo+ICAJCXJldHVybiBFUlJfUFRSKHJldCk7Cj4gIAo+IGRpZmYgLS1naXQgYS9pbmNs dWRlL2VsZi5oIGIvaW5jbHVkZS9lbGYuaAo+IGluZGV4IDkyYzhkOWMxMi4uNjMzZjQ5OTJkIDEw MDY0NAo+IC0tLSBhL2luY2x1ZGUvZWxmLmgKPiArKysgYi9pbmNsdWRlL2VsZi5oCj4gQEAgLTQw MCwxMSArNDAwLDM4IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBhcmNoX3dyaXRlX25vdGVzKHN0cnVj dCBmaWxlICpmaWxlKSB7IH0KPiAgCj4gIHN0cnVjdCBlbGZfaW1hZ2Ugewo+ICAJc3RydWN0IGxp c3RfaGVhZCBsaXN0Owo+IC0JdW5zaWduZWQgbG9uZyBlbnRyeTsKPiArCXU4IGNsYXNzOwo+ICsJ dTY0IGVudHJ5Owo+ICAJdm9pZCAqYnVmOwo+ICB9Owo+ICAKPiAgc3RydWN0IGVsZl9pbWFnZSAq ZWxmX2xvYWRfaW1hZ2Uodm9pZCAqYnVmKTsKPiAgdm9pZCBlbGZfcmVsZWFzZV9pbWFnZShzdHJ1 Y3QgZWxmX2ltYWdlICplbGYpOwo+ICAKPiArI2RlZmluZSBFTEZfR0VUX0ZJRUxEKF9fcywgX19m aWVsZCwgX190eXBlKSBcCj4gK3N0YXRpYyBpbmxpbmUgX190eXBlIGVsZl8jI19fcyMjXyMjX19m aWVsZChzdHJ1Y3QgZWxmX2ltYWdlICplbGYsIHZvaWQgKmFyZykgeyBcCj4gKwlpZiAoZWxmLT5j bGFzcyA9PSBFTEZDTEFTUzMyKSBcCj4gKwkJcmV0dXJuIChfX3R5cGUpICgoc3RydWN0IGVsZjMy XyMjX19zICopIGFyZyktPl9fZmllbGQ7IFwKPiArCWVsc2UgXAo+ICsJCXJldHVybiAoX190eXBl KSAoKHN0cnVjdCBlbGY2NF8jI19fcyAqKSBhcmcpLT5fX2ZpZWxkOyBcCj4gK30KPiArCj4gK0VM Rl9HRVRfRklFTEQoaGRyLCBlX2VudHJ5LCB1NjQpCj4gK0VMRl9HRVRfRklFTEQoaGRyLCBlX3Bo bnVtLCB1MTYpCj4gK0VMRl9HRVRfRklFTEQoaGRyLCBlX3Bob2ZmLCB1NjQpCj4gK0VMRl9HRVRf RklFTEQoaGRyLCBlX3R5cGUsIHUxNikKPiArRUxGX0dFVF9GSUVMRChwaGRyLCBwX3BhZGRyLCB1 NjQpCj4gK0VMRl9HRVRfRklFTEQocGhkciwgcF9maWxlc3osIHU2NCkKPiArRUxGX0dFVF9GSUVM RChwaGRyLCBwX21lbXN6LCB1NjQpCj4gK0VMRl9HRVRfRklFTEQocGhkciwgcF90eXBlLCB1MzIp Cj4gK0VMRl9HRVRfRklFTEQocGhkciwgcF9vZmZzZXQsIHU2NCkKPiArCj4gK3N0YXRpYyBpbmxp bmUgdW5zaWduZWQgbG9uZyBlbGZfc2l6ZV9vZl9waGRyKHN0cnVjdCBlbGZfaW1hZ2UgKmVsZikK PiArewo+ICsJaWYgKGVsZi0+Y2xhc3MgPT0gRUxGQ0xBU1MzMikKPiArCQlyZXR1cm4gc2l6ZW9m KEVsZjMyX1BoZHIpOwo+ICsJZWxzZQo+ICsJCXJldHVybiBzaXplb2YoRWxmNjRfUGhkcik7Cj4g K30KPiArCj4gICNlbmRpZiAvKiBfTElOVVhfRUxGX0ggKi8KPiAtLSAKPiAyLjE1LjAuMjc2Lmc4 OWVhNzk5Cj4gCj4gCj4gCj4gCj4gPiBIaSBTYXNjaGEsCj4gPiAKPiA+PiBIaSBDbMOpbWVudCwK PiA+PiAKPiA+PiBPbiBNb24sIE1hciAxOCwgMjAxOSBhdCAwODoxNjo0N1BNICswMTAwLCBDbMOp bWVudCBMZWdlciB3cm90ZToKPiA+Pj4gVGhpcyBwYXRjaCBhZGQgZWxmNjQgbG9hZGluZyBzdXBw b3J0IHRvIHRoZSBlbGYgbG9hZGVyLiBTaW5jZQo+ID4+PiBlbGYzMiBhbmQgZWxmNjQgdXNlcyBj b21wbGV0ZWx5IGRpZmZlcmVudCB0eXBlcywgdG8gYXZvaWQgY29weWluZyBhbGwKPiA+Pj4gdGhl IGNvZGUgYW5kIHNpbXBseSByZXBsYWNlIGVsZjMyIHdpdGggZWxmNjQsIHVzZSBhIG1hY3JvIHdo aWNoIHdpbGwKPiA+Pj4gcmV0dXJuIHRoZSBhcHByb3ByaWF0ZSBmaWVsZCBmb3IgZWFjaCB0eXBl IG9mIGhlYWRlci4gVGhpcyBtYWNybwo+ID4+PiBnZW5lcmF0ZXMgZ2V0dGVyIGZvciBlbGYgc3Ry dWN0dXJlcyBhY2NvcmRpbmcgdG8gdGhlIGNsYXNzIG9mIHRoZSBsb2FkZWQKPiA+Pj4gZWxmLgo+ ID4+PiBBbGwgZGlyZWN0IGVsZiBzdHJ1Y3QgZGVyZWZlcmVuY2UgYXJlIHRoZW4gcmVwbGFjZWQg YnkgY2FsbCB0byBnZW5lcmF0ZWQKPiA+Pj4gZnVuY3Rpb25zLiBUaGlzIGFsbG93cyB0byBrZWVw IGEgY29tbW9uIGxvYWRlciBjb2RlIGV2ZW4gaWYgdHlwZXMgYXJlCj4gPj4+IGRpZmZlcmVudC4K PiA+Pj4gCj4gPj4+IFNpZ25lZC1vZmYtYnk6IENsw6ltZW50IEzDqWdlciA8Y2xlbWVudC5sZWdl ckBrYWxyYXkuZXU+Cj4gPj4+IC0tLQo+ID4+PiAgY29tbW9uL2VsZi5jICB8IDQ2ICsrKysrKysr KysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KPiA+Pj4gIGluY2x1ZGUvZWxm LmggfCAyNyArKysrKysrKysrKysrKysrKysrKysrKysrKysKPiA+Pj4gIDIgZmlsZXMgY2hhbmdl ZCwgNTAgaW5zZXJ0aW9ucygrKSwgMjMgZGVsZXRpb25zKC0pCj4gPj4+IAo+ID4+PiBkaWZmIC0t Z2l0IGEvY29tbW9uL2VsZi5jIGIvY29tbW9uL2VsZi5jCj4gPj4+IGluZGV4IDhlZGYzODg1Ni4u YmZiODc4OTU0IDEwMDY0NAo+ID4+PiAtLS0gYS9jb21tb24vZWxmLmMKPiA+Pj4gKysrIGIvY29t bW9uL2VsZi5jCj4gPj4+IEBAIC00MywzMSArNDMsMzIgQEAgc3RhdGljIHZvaWQgZWxmX3JlbGVh c2VfcmVnaW9ucyhzdHJ1Y3QgZWxmX2ltYWdlICplbGYpCj4gPj4+ICAJfQo+ID4+PiAgfQo+ID4+ PiAgCj4gPj4+IC0KPiA+Pj4gIHN0YXRpYyBpbnQgbG9hZF9lbGZfcGhkcl9zZWdtZW50KHN0cnVj dCBlbGZfaW1hZ2UgKmVsZiwgdm9pZCAqc3JjLAo+ID4+PiAtCQkJCSBFbGYzMl9QaGRyICpwaGRy KQo+ID4+PiArCQkJCSB2b2lkICpwaGRyKQo+ID4+PiAgewo+ID4+PiAtCXZvaWQgKmRzdCA9ICh2 b2lkICopcGhkci0+cF9wYWRkcjsKPiA+Pj4gKwl2b2lkICpkc3QgPSAodm9pZCAqKSBlbGZfcGhk cl9wX3BhZGRyKGVsZiwgcGhkcik7Cj4gPj4+ICAJaW50IHJldDsKPiA+Pj4gKwl1bnNpZ25lZCBs b25nIHBfZmlsZXN6ID0gZWxmX3BoZHJfcF9maWxlc3ooZWxmLCBwaGRyKTsKPiA+Pj4gKwl1bnNp Z25lZCBsb25nIHBfbWVtc3ogPSBlbGZfcGhkcl9wX21lbXN6KGVsZiwgcGhkcik7Cj4gPj4+ICAK PiA+Pj4gIAkvKiB3ZSBjYXJlIG9ubHkgYWJvdXQgUFRfTE9BRCBzZWdtZW50cyAqLwo+ID4+PiAt CWlmIChwaGRyLT5wX3R5cGUgIT0gUFRfTE9BRCkKPiA+Pj4gKwlpZiAoZWxmX3BoZHJfcF90eXBl KGVsZiwgcGhkcikgIT0gUFRfTE9BRCkKPiA+Pj4gIAkJcmV0dXJuIDA7Cj4gPj4+ICAKPiA+Pj4g LQlpZiAoIXBoZHItPnBfZmlsZXN6KQo+ID4+PiArCWlmICghcF9maWxlc3opCj4gPj4+ICAJCXJl dHVybiAwOwo+ID4+PiAgCj4gPj4+IC0JcHJfZGVidWcoIkxvYWRpbmcgcGhkciB0byAweCVwICgl aSBieXRlcylcbiIsIGRzdCwgcGhkci0+cF9maWxlc3opOwo+ID4+PiArCXByX2RlYnVnKCJMb2Fk aW5nIHBoZHIgdG8gMHglcCAoJWxkIGJ5dGVzKVxuIiwgZHN0LCBwX2ZpbGVzeik7Cj4gPj4gCj4g Pj4gJWx1IGZvciBwX2ZpbGVzej8KPiA+IAo+ID4gSW5kZWVkLCBJIG1pc3NlZCB0aGlzIG9uZS4K PiA+IAo+ID4+IAo+ID4+PiBAQCAtNDAwLDYgKzQwMCw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBh cmNoX3dyaXRlX25vdGVzKHN0cnVjdCBmaWxlICpmaWxlKSB7IH0KPiA+Pj4gIAo+ID4+PiAgc3Ry dWN0IGVsZl9pbWFnZSB7Cj4gPj4+ICAJc3RydWN0IGxpc3RfaGVhZCBsaXN0Owo+ID4+PiArCXVu c2lnbmVkIGxvbmcgY2xhc3M7Cj4gPj4+ICAJdW5zaWduZWQgbG9uZyBlbnRyeTsKPiA+Pj4gIAl2 b2lkICpidWY7Cj4gPj4+ICB9Owo+ID4+PiBAQCAtNDA3LDQgKzQwOCwzMCBAQCBzdHJ1Y3QgZWxm X2ltYWdlIHsKPiA+Pj4gIHN0cnVjdCBlbGZfaW1hZ2UgKmVsZl9sb2FkX2ltYWdlKHZvaWQgKmJ1 Zik7Cj4gPj4+ICB2b2lkIGVsZl9yZWxlYXNlX2ltYWdlKHN0cnVjdCBlbGZfaW1hZ2UgKmVsZik7 Cj4gPj4+ICAKPiA+Pj4gKyNkZWZpbmUgRUxGX0dFVF9GSUVMRChfX3MsIF9fZmllbGQsIF9fdHlw ZSkgXAo+ID4+PiArc3RhdGljIGlubGluZSBfX3R5cGUgZWxmXyMjX19zIyNfIyNfX2ZpZWxkKHN0 cnVjdCBlbGZfaW1hZ2UgKmVsZiwgdm9pZCAqYXJnKSB7Cj4gPj4+IFwKPiA+Pj4gKwlpZiAoZWxm LT5jbGFzcyA9PSBFTEZDTEFTUzMyKSBcCj4gPj4+ICsJCXJldHVybiAoX190eXBlKSAoKHN0cnVj dCBlbGYzMl8jI19fcyAqKSBhcmcpLT5fX2ZpZWxkOyBcCj4gPj4+ICsJZWxzZSBcCj4gPj4+ICsJ CXJldHVybiAoX190eXBlKSAoKHN0cnVjdCBlbGY2NF8jI19fcyAqKSBhcmcpLT5fX2ZpZWxkOyBc Cj4gPj4+ICt9Cj4gPj4+ICsKPiA+Pj4gK0VMRl9HRVRfRklFTEQoaGRyLCBlX2VudHJ5LCB1bnNp Z25lZCBsb25nKQo+ID4+PiArRUxGX0dFVF9GSUVMRChoZHIsIGVfcGhudW0sIHVuc2lnbmVkIGxv bmcpCj4gPj4+ICtFTEZfR0VUX0ZJRUxEKGhkciwgZV9waG9mZiwgdW5zaWduZWQgbG9uZykKPiA+ Pj4gK0VMRl9HRVRfRklFTEQoaGRyLCBlX3R5cGUsIHVuc2lnbmVkIGxvbmcpCj4gPj4+ICtFTEZf R0VUX0ZJRUxEKHBoZHIsIHBfcGFkZHIsIHVuc2lnbmVkIGxvbmcpCj4gPj4+ICtFTEZfR0VUX0ZJ RUxEKHBoZHIsIHBfZmlsZXN6LCB1bnNpZ25lZCBsb25nKQo+ID4+PiArRUxGX0dFVF9GSUVMRChw aGRyLCBwX21lbXN6LCB1bnNpZ25lZCBsb25nKQo+ID4+PiArRUxGX0dFVF9GSUVMRChwaGRyLCBw X3R5cGUsIHVuc2lnbmVkIGxvbmcpCj4gPj4+ICtFTEZfR0VUX0ZJRUxEKHBoZHIsIHBfb2Zmc2V0 LCB1bnNpZ25lZCBsb25nKQo+ID4+IAo+ID4+IFdoZW4gaXQncyBhbHdheXMgdW5zaWduZWQgbG9u ZyB3aHkgZG8gd2UgaGF2ZSB0byBwYXNzIGluIHRoZSB0eXBlIGFzIGFuCj4gPj4gYXJndW1lbnQ/ Cj4gPiAKPiA+IEFjdHVhbGx5LCBzb21lIG9mIHRoZW0gc2hvdWxkIG5vdCBiZSBkZWZpbmVkIGFz IEkgZGlkLgo+ID4gRm9yIGluc3RhbmNlLCB0aGUgZV90eXBlIGlzIGFuIGhhbGYgaW4gYm90aCBl bGYzMiBhbmQgZWxmNjQgc28gaXQgc2hvdWxkCj4gPiBiZSBkZWZpbmVkIGFzIHUxNi4KPiA+IAo+ ID4gU29tZSBvdGhlciBhcHByb2FjaGVzIHRvIGhhbmRsZSBib3RoIDY0Yml0cy8zMmJpdHMgZWxm IHdlcmUgdG8gY29weQo+ID4gdGhlIHdob2xlIGxvYWRpbmcgY29kZSBhbmQgcy9lbGYzMi9lbGY2 NC4gU2luY2UgdGhlIGNvZGUgaW4gYmFyZWJveCBpcwo+ID4gbm90IHNvIGJpZywgbWF5YmUgSSBj b3VsZCBkbyB0aGF0Lgo+ID4gCj4gPj4gCj4gPj4gSSBhbSB1bmRlY2lkZWQgaWYgdGhpcyBpcyB0 aGUgcmlnaHQgYXBwcm9hY2guICJ1bnNpZ25lZCBsb25nIiBpcyB3cm9uZwo+ID4+IHdoZW4gYSBF TEYgZmlsZSBmb3IgYSBmb3JlaWduIGFyY2hpdGVjdHVyZSBpcyBsb2FkZWQuIFRoaXMgY2FuIGhh cHBlbgo+ID4+IGZvciBleGFtcGxlIHdoZW4gY29kZSBmb3IgdGhlIENvcnRleCBNNCBjb3JlcyBp cyBsb2FkZWQgZnJvbSB0aGUgNjRiaXQKPiA+PiBDb3J0ZXggQSBjb3JlcyBpcyBsb2FkZWQgb24g YW4gaS5NWDggZm9yIGV4YW1wbGUuIFVzaW5nIHRoZSBiaWdnZXIgdHlwZXMKPiA+PiB0aGVuIGlz IG5vdCBhIHByb2JsZW0sIGJ1dCBtYXliZSBpdCBjb3VsZCBoYXBwZW4gdGhlIG90aGVyIHdheSBy b3VuZCwKPiA+PiBsb2FkaW5nIGEgNjRiaXQgRUxGIG9uIGEgMzJiaXQgYXJjaGl0ZWN0dXJlPwo+ ID4gCj4gPiBJIHdhcyB0aGlua2luZyBhYm91dCB0aGlzIG9uZS4gSSB0cmllZCBsb2FkaW5nIDMy Yml0IGFuZCA2NGJpdCBlbGYgZnJvbQo+ID4gYSA2NGJpdCBjb3JlIGJ1dCBpbmRlZWQsIG5vdCB0 aGUgb3RoZXIgd2F5LiBJZiBzbywgdGhlbiBhZGRyZXNzZXMgd2lsbAo+ID4gYmUgdHJ1bmNhdGVk IGJ1dCBzaW5jZSB0aGUgcHJvY2Vzc29yIHdpbGwgbm90IGJlIGFibGUgdG8gYWNjZXNzIGEKPiA+ IDY0IGJpdHMgbWVtb3J5IHNwYWNlLCBJIGd1ZXNzIGl0J3Mgbm90IHBvc3NpYmxlICh1bmxlc3Mg eW91IGhhdmUgc29tZQo+ID4gRE1BIHdoaWNoIGNhbiBhY2Nlc3MgdGhlIHVwcGVyIG1lbW9yeSBi dXQgdGhpcyB3aWxsIHByb2JhYmx5IG5vdCBiZQo+ID4gaGFuZGxlZCBieSBiYXJlYm94IGVsZiBs b2FkZXIpLgo+ID4gCj4gPj4gCj4gPj4gSSBjYW4ndCBzZWUgYSByZWFsIHByb2JsZW0gaGVyZSwg SSBqdXN0IHdhbnRlZCB0byBub3RlLiBBcmUgdGhlcmUgb3RoZXIKPiA+PiBvcGluaW9ucz8KPiA+ PiAKPiA+PiBTYXNjaGEKPiA+PiAKPiA+PiAtLQo+ID4+IFBlbmd1dHJvbml4IGUuSy4gICAgICAg ICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Cj4gPj4g SW5kdXN0cmlhbCBMaW51eCBTb2x1dGlvbnMgICAgICAgICAgICAgICAgIHwgaHR0cDovL3d3dy5w ZW5ndXRyb25peC5kZS8gIHwKPiA+PiBQZWluZXIgU3RyLiA2LTgsIDMxMTM3IEhpbGRlc2hlaW0s IEdlcm1hbnkgfCBQaG9uZTogKzQ5LTUxMjEtMjA2OTE3LTAgICAgfAo+ID4+IEFtdHNnZXJpY2h0 IEhpbGRlc2hlaW0sIEhSQSAyNjg2ICAgICAgICAgICB8IEZheDogICArNDktNTEyMS0yMDY5MTct NTU1NSB8Cj4gPiAKPiA+IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fCj4gPiBiYXJlYm94IG1haWxpbmcgbGlzdAo+ID4gYmFyZWJveEBsaXN0cy5pbmZyYWRl YWQub3JnCj4gPiBodHRwOi8vbGlzdHMuaW5mcmFkZWFkLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2Jh cmVib3gKPiAKCi0tIApQZW5ndXRyb25peCBlLksuICAgICAgICAgICAgICAgICAgICAgICAgICAg fCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfApJbmR1c3RyaWFsIExpbnV4IFNvbHV0aW9u cyAgICAgICAgICAgICAgICAgfCBodHRwOi8vd3d3LnBlbmd1dHJvbml4LmRlLyAgfApQZWluZXIg U3RyLiA2LTgsIDMxMTM3IEhpbGRlc2hlaW0sIEdlcm1hbnkgfCBQaG9uZTogKzQ5LTUxMjEtMjA2 OTE3LTAgICAgfApBbXRzZ2VyaWNodCBIaWxkZXNoZWltLCBIUkEgMjY4NiAgICAgICAgICAgfCBG YXg6ICAgKzQ5LTUxMjEtMjA2OTE3LTU1NTUgfAoKX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX18KYmFyZWJveCBtYWlsaW5nIGxpc3QKYmFyZWJveEBsaXN0cy5p bmZyYWRlYWQub3JnCmh0dHA6Ly9saXN0cy5pbmZyYWRlYWQub3JnL21haWxtYW4vbGlzdGluZm8v YmFyZWJveAo=