From owner-freebsd-bugs@FreeBSD.ORG Mon Dec 17 09:00:01 2012 Return-Path: Delivered-To: freebsd-bugs@smarthost.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 6891AECB for ; Mon, 17 Dec 2012 09:00:01 +0000 (UTC) (envelope-from gnats@FreeBSD.org) Received: from freefall.freebsd.org (freefall.freebsd.org [IPv6:2001:1900:2254:206c::16:87]) by mx1.freebsd.org (Postfix) with ESMTP id 42C478FC15 for ; Mon, 17 Dec 2012 09:00:01 +0000 (UTC) Received: from freefall.freebsd.org (localhost [127.0.0.1]) by freefall.freebsd.org (8.14.5/8.14.5) with ESMTP id qBH9018m016410 for ; Mon, 17 Dec 2012 09:00:01 GMT (envelope-from gnats@freefall.freebsd.org) Received: (from gnats@localhost) by freefall.freebsd.org (8.14.5/8.14.5/Submit) id qBH901G2016409; Mon, 17 Dec 2012 09:00:01 GMT (envelope-from gnats) Date: Mon, 17 Dec 2012 09:00:01 GMT Message-Id: <201212170900.qBH901G2016409@freefall.freebsd.org> To: freebsd-bugs@FreeBSD.org Cc: From: pete Subject: Re: bin/174011: [patch] crunchide support non-custom elf object layout X-BeenThere: freebsd-bugs@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list Reply-To: pete List-Id: Bug reports List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 17 Dec 2012 09:00:01 -0000 The following reply was made to PR bin/174011; it has been noted by GNATS. From: pete To: bug-followup@freebsd.org Cc: Subject: Re: bin/174011: [patch] crunchide support non-custom elf object layout Date: Mon, 17 Dec 2012 16:55:57 +0800 --f46d04088e1183a55d04d1088ebb Content-Type: multipart/alternative; boundary=f46d04088e1183a55a04d1088eb9 --f46d04088e1183a55a04d1088eb9 Content-Type: text/plain; charset=ISO-8859-1 Update the patch for performance improvement. Also thanks Kai Wang for helping test and refine the patch, esp,. on a stripped executable. --f46d04088e1183a55a04d1088eb9 Content-Type: text/html; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Update the patch for performance improvement.

Also thank= s Kai Wang for helping test and refine the patch, esp,. on a=A0stripped executable.
--f46d04088e1183a55a04d1088eb9-- --f46d04088e1183a55d04d1088ebb Content-Type: text/plain; charset=US-ASCII; name="patch-6.txt" Content-Disposition: attachment; filename="patch-6.txt" Content-Transfer-Encoding: base64 X-Attachment-Id: f_hatd6wie1 SW5kZXg6IGV4ZWNfZWxmMzIuYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBleGVjX2VsZjMyLmMJKHJldmlzaW9u IDI0NDE5OSkKKysrIGV4ZWNfZWxmMzIuYwkod29ya2luZyBjb3B5KQpAQCAtNDUsNiArNDUsNyBA QAogI2luY2x1ZGUgPHN5cy9zdGF0Lmg+CiAKICNpbmNsdWRlIDxlcnJuby5oPgorI2luY2x1ZGUg PGxpbWl0cy5oPgogI2luY2x1ZGUgPHN0ZGlvLmg+CiAjaW5jbHVkZSA8c3RkbGliLmg+CiAjaW5j bHVkZSA8c3RyaW5nLmg+CkBAIC04MiwxMSArODMsOSBAQAogI2RlZmluZQl4ZTMydG9oKHgpCSgo ZGF0YSA9PSBFTEZEQVRBMk1TQikgPyBiZTMydG9oKHgpIDogbGUzMnRvaCh4KSkKICNkZWZpbmUJ aHRveGUzMih4KQkoKGRhdGEgPT0gRUxGREFUQTJNU0IpID8gaHRvYmUzMih4KSA6IGh0b2xlMzIo eCkpCiAKLXN0cnVjdCBsaXN0ZWxlbSB7Ci0Jc3RydWN0IGxpc3RlbGVtICpuZXh0OwotCXZvaWQg Km1lbTsKLQlvZmZfdCBmaWxlOwotCXNpemVfdCBzaXplOworc3RydWN0IHNobGF5b3V0IHsKKwlF bGZfU2hkciAqc2hkcjsKKwl2b2lkICpidWZwOwogfTsKIAogc3RhdGljIHNzaXplX3QKQEAgLTIz NSwxNyArMjM0LDIwIEBACiBFTEZOQU1FRU5EKGhpZGUpKGludCBmZCwgY29uc3QgY2hhciAqZm4p CiB7CiAJRWxmX0VoZHIgZWhkcjsKLQlFbGZfU2hkciAqc2hkcnAgPSBOVUxMLCAqc3ltdGFic2hk ciwgKnN0cnRhYnNoZHI7CisJc3RydWN0IHNobGF5b3V0ICpsYXlvdXRwID0gTlVMTDsKKwlFbGZf U2hkciAqc2hkcnAgPSBOVUxMLCAqc3ltdGFic2hkciwgKnN0cnRhYnNoZHIsICpzaHN0cnRhYnNo ZHI7CisJRWxmX1NoZHIgc2hkcnNoZHI7CiAJRWxmX1N5bSAqc3ltdGFicCA9IE5VTEw7Ci0JY2hh ciAqc3RydGFicCA9IE5VTEw7Ci0JRWxmX1NpemUgIG5zeW1zLCBld2k7CisJY2hhciAqc2hzdHJ0 YWJwID0gTlVMTCwgKnN0cnRhYnAgPSBOVUxMOworCUVsZl9TaXplIG5zeW1zLCBld2k7CisJRWxm X09mZiBvZmY7CiAJc3NpemVfdCBzaGRyc2l6ZTsKLQlpbnQgcnYsIGksIHdlaXJkOwotCXNpemVf dCBuc3RydGFiX3NpemUsIG5zdHJ0YWJfbmV4dG9mZiwgZm5fc2l6ZTsKKwlpbnQgcnYsIGksIHdl aXJkLCBsLCBtLCByLCBzdHJ0YWJpZHg7CisJc2l6ZV90IG5zdHJ0YWJfc2l6ZSwgbnN0cnRhYl9u ZXh0b2ZmLCBmbl9zaXplLCBzaXplOwogCWNoYXIgKm5zdHJ0YWJwID0gTlVMTDsKIAl1bnNpZ25l ZCBjaGFyIGRhdGE7Ci0JRWxmX09mZiBtYXhvZmYsIHN0cm9mZjsKIAljb25zdCBjaGFyICp3ZWly ZHJlYXNvbiA9IE5VTEw7CisJdm9pZCAqYnVmOwogCiAJcnYgPSAwOwogCWlmICh4cmVhZGF0b2Zm KGZkLCAmZWhkciwgMCwgc2l6ZW9mIGVoZHIsIGZuKSAhPSBzaXplb2YgZWhkcikKQEAgLTI2MCw2 MyArMjYyLDEyNCBAQAogCSAgICBzaGRyc2l6ZSkKIAkJZ290byBiYWQ7CiAKLQlzeW10YWJzaGRy ID0gc3RydGFic2hkciA9IE5VTEw7CisJc3ltdGFic2hkciA9IHN0cnRhYnNoZHIgPSBzaHN0cnRh YnNoZHIgPSBOVUxMOwogCXdlaXJkID0gMDsKLQltYXhvZmYgPSBzdHJvZmYgPSAwOwogCWZvciAo aSA9IDA7IGkgPCB4ZTE2dG9oKGVoZHIuZV9zaG51bSk7IGkrKykgewotCQlpZiAoeGV3dG9oKHNo ZHJwW2ldLnNoX29mZnNldCkgPiBtYXhvZmYpCi0JCQltYXhvZmYgPSB4ZXd0b2goc2hkcnBbaV0u c2hfb2Zmc2V0KTsKIAkJc3dpdGNoICh4ZTMydG9oKHNoZHJwW2ldLnNoX3R5cGUpKSB7CiAJCWNh c2UgU0hUX1NZTVRBQjoKLQkJCWlmIChzeW10YWJzaGRyICE9IE5VTEwpCisJCQlpZiAoc3ltdGFi c2hkciAhPSBOVUxMKSB7CiAJCQkJd2VpcmQgPSAxOworCQkJCXdlaXJkcmVhc29uID0gIm11bHRp cGxlIHN5bWJvbCB0YWJsZXMiOworCQkJfQogCQkJc3ltdGFic2hkciA9ICZzaGRycFtpXTsKIAkJ CXN0cnRhYnNoZHIgPSAmc2hkcnBbeGUzMnRvaChzaGRycFtpXS5zaF9saW5rKV07Ci0KLQkJCS8q IENoZWNrIHdoZXRoZXIgdGhlIHN0cmluZyB0YWJsZSBpcyB0aGUgbGFzdCBzZWN0aW9uICovCi0J CQlzdHJvZmYgPSB4ZXd0b2goc2hkcnBbeGUzMnRvaChzaGRycFtpXS5zaF9saW5rKV0uc2hfb2Zm c2V0KTsKLQkJCWlmICghd2VpcmQgJiYgeGUzMnRvaChzaGRycFtpXS5zaF9saW5rKSAhPSAoeGUx NnRvaChlaGRyLmVfc2hudW0pIC0gMSkpIHsKLQkJCQl3ZWlyZCA9IDE7Ci0JCQkJd2VpcmRyZWFz b24gPSAic3RyaW5nIHRhYmxlIG5vdCBsYXN0IHNlY3Rpb24iOwotCQkJfQogCQkJYnJlYWs7CisJ CWNhc2UgU0hUX1NUUlRBQjoKKwkJCWlmIChpID09IHhlMTZ0b2goZWhkci5lX3Noc3RybmR4KSkK KwkJCQlzaHN0cnRhYnNoZHIgPSAmc2hkcnBbaV07CisJCQlicmVhazsKIAkJfQogCX0KLQlpZiAo ISB3ZWlyZHJlYXNvbikKLQkJd2VpcmRyZWFzb24gPSAidW5zdXBwb3J0ZWQiOwogCWlmIChzeW10 YWJzaGRyID09IE5VTEwpCiAJCWdvdG8gb3V0OwotCWlmIChzdHJ0YWJzaGRyID09IE5VTEwpCisJ aWYgKHN0cnRhYnNoZHIgPT0gTlVMTCkgewogCQl3ZWlyZCA9IDE7Ci0JaWYgKCF3ZWlyZCAmJiBz dHJvZmYgIT0gbWF4b2ZmKSB7CisJCXdlaXJkcmVhc29uID0gInN0cmluZyB0YWJsZSBkb2VzIG5v dCBleGlzdCI7CisJfQorCWlmIChzaHN0cnRhYnNoZHIgPT0gTlVMTCkgewogCQl3ZWlyZCA9IDE7 Ci0JCXdlaXJkcmVhc29uID0gInN0cmluZyB0YWJsZSBzZWN0aW9uIG5vdCBsYXN0IGluIGZpbGUi OwotCX0gICAKKwkJd2VpcmRyZWFzb24gPSAic2VjdGlvbiBoZWFkZXIgc3RyaW5nIHRhYmxlIGRv ZXMgbm90IGV4aXN0IjsKKwl9CisJaWYgKHdlaXJkcmVhc29uID09IE5VTEwpCisJCXdlaXJkcmVh c29uID0gInVuc3VwcG9ydGVkIjsKIAlpZiAod2VpcmQpIHsKIAkJZnByaW50ZihzdGRlcnIsICIl czogd2VpcmQgZXhlY3V0YWJsZSAoJXMpXG4iLCBmbiwgd2VpcmRyZWFzb24pOwogCQlnb3RvIGJh ZDsKIAl9CiAKIAkvKgorCSAqIHNvcnQgc2VjdGlvbiBsYXlvdXQgdGFibGUgYnkgb2Zmc2V0CisJ ICovCisJbGF5b3V0cCA9IHhtYWxsb2Moc2l6ZW9mKHN0cnVjdCBzaGxheW91dCkgKiAoeGUxNnRv aChlaGRyLmVfc2hudW0pICsgMSksCisJICAgIGZuLCAibGF5b3V0IHRhYmxlIik7CisJaWYgKGxh eW91dHAgPT0gTlVMTCkKKwkJZ290byBiYWQ7CisKKwkvKiBhZGQgYSBwc2V1ZG8gZW50cnkgdG8g cmVwcmVzZW50IHRoZSBzZWN0aW9uIGhlYWRlciB0YWJsZSAqLworCXNoZHJzaGRyLnNoX29mZnNl dCA9IGVoZHIuZV9zaG9mZjsKKwlzaGRyc2hkci5zaF9zaXplID0gaHRveGV3KHNoZHJzaXplKTsK KwlzaGRyc2hkci5zaF9hZGRyYWxpZ24gPSBodG94ZXcoRUxGU0laRSAvIDgpOworCWxheW91dHBb eGUxNnRvaChlaGRyLmVfc2hudW0pXS5zaGRyID0gJnNoZHJzaGRyOworCisJLyogaW5zZXJ0IGFu ZCBzb3J0IG5vcm1hbCBzZWN0aW9uIGhlYWRlcnMgKi8KKwlmb3IgKGkgPSB4ZTE2dG9oKGVoZHIu ZV9zaG51bSkgLSAxOyBpID49IDA7IGktLSkgeworCQlsID0gaSArIDE7CisJCXIgPSB4ZTE2dG9o KGVoZHIuZV9zaG51bSk7CisJCXdoaWxlIChsIDw9IHIpIHsKKwkJCW0gPSAobCArIHIpIC8gMjsK KwkJCWlmICh4ZXd0b2goc2hkcnBbaV0uc2hfb2Zmc2V0KSA+CisJCQkgICAgeGV3dG9oKGxheW91 dHBbbV0uc2hkci0+c2hfb2Zmc2V0KSkKKwkJCQlsID0gbSArIDE7CisJCQllbHNlCisJCQkJciA9 IG0gLSAxOworCQl9CisKKwkJaWYgKHIgIT0gaSkgeworCQkJbWVtbW92ZSgmbGF5b3V0cFtpXSwg JmxheW91dHBbaSArIDFdLAorCQkJICAgIHNpemVvZihzdHJ1Y3Qgc2hsYXlvdXQpICogKHIgLSBp KSk7CisJCX0KKworCQlsYXlvdXRwW3JdLnNoZHIgPSAmc2hkcnBbaV07CisJCWxheW91dHBbcl0u YnVmcCA9IE5VTEw7CisJfQorCisJLyoKIAkgKiBsb2FkIHVwIGV2ZXJ5dGhpbmcgd2UgbmVlZAog CSAqLwogCi0JLyogc3ltYm9sIHRhYmxlICovCi0JaWYgKChzeW10YWJwID0geG1hbGxvYyh4ZXd0 b2goc3ltdGFic2hkci0+c2hfc2l6ZSksIGZuLCAic3ltYm9sIHRhYmxlIikpCi0JICAgID09IE5V TEwpCisJLyogbG9hZCBzZWN0aW9uIHN0cmluZyB0YWJsZSBmb3IgZGVidWcgdXNlICovCisJaWYg KChzaHN0cnRhYnAgPSB4bWFsbG9jKHhld3RvaChzaHN0cnRhYnNoZHItPnNoX3NpemUpLCBmbiwK KwkgICAgInNlY3Rpb24gc3RyaW5nIHRhYmxlIikpID09IE5VTEwpCiAJCWdvdG8gYmFkOwotCWlm ICh4cmVhZGF0b2ZmKGZkLCBzeW10YWJwLCB4ZXd0b2goc3ltdGFic2hkci0+c2hfb2Zmc2V0KSwK LQkgICAgeGV3dG9oKHN5bXRhYnNoZHItPnNoX3NpemUpLCBmbikgIT0geGV3dG9oKHN5bXRhYnNo ZHItPnNoX3NpemUpKQorCWlmICh4cmVhZGF0b2ZmKGZkLCBzaHN0cnRhYnAsIHhld3RvaChzaHN0 cnRhYnNoZHItPnNoX29mZnNldCksCisJICAgIHhld3RvaChzaHN0cnRhYnNoZHItPnNoX3NpemUp LCBmbikgIT0geGV3dG9oKHNoc3RydGFic2hkci0+c2hfc2l6ZSkpCiAJCWdvdG8gYmFkOwogCi0J Lyogc3RyaW5nIHRhYmxlICovCi0JaWYgKChzdHJ0YWJwID0geG1hbGxvYyh4ZXd0b2goc3RydGFi c2hkci0+c2hfc2l6ZSksIGZuLCAic3RyaW5nIHRhYmxlIikpCi0JICAgID09IE5VTEwpCi0JCWdv dG8gYmFkOwotCWlmICh4cmVhZGF0b2ZmKGZkLCBzdHJ0YWJwLCB4ZXd0b2goc3RydGFic2hkci0+ c2hfb2Zmc2V0KSwKLQkgICAgeGV3dG9oKHN0cnRhYnNoZHItPnNoX3NpemUpLCBmbikgIT0geGV3 dG9oKHN0cnRhYnNoZHItPnNoX3NpemUpKQotCQlnb3RvIGJhZDsKKwkvKiB3ZSBuZWVkIHN5bXRh Yiwgc3RydGFiLCBhbmQgZXZlcnl0aGluZyBiZWhpbmQgc3RydGFiICovCisJc3RydGFiaWR4ID0g SU5UX01BWDsKKwlmb3IgKGkgPSAwOyBpIDwgeGUxNnRvaChlaGRyLmVfc2hudW0pICsgMTsgaSsr KSB7CisJCWlmIChsYXlvdXRwW2ldLnNoZHIgPT0gJnNoZHJzaGRyKSB7CisJCQkvKiBub3QgbG9h ZCBzZWN0aW9uIGhlYWRlciBhZ2FpbiAqLworCQkJbGF5b3V0cFtpXS5idWZwID0gc2hkcnA7CisJ CQljb250aW51ZTsKKwkJfQorCQlpZiAobGF5b3V0cFtpXS5zaGRyID09IHNoc3RydGFic2hkcikg eworCQkJLyogbm90IGxvYWQgc2VjdGlvbiBzdHJpbmcgdGFibGUgYWdhaW4gKi8KKwkJCWxheW91 dHBbaV0uYnVmcCA9IHNoc3RydGFicDsKKwkJCWNvbnRpbnVlOworCQl9CiAKKwkJaWYgKGxheW91 dHBbaV0uc2hkciA9PSBzdHJ0YWJzaGRyKQorCQkJc3RydGFiaWR4ID0gaTsKKwkJaWYgKGxheW91 dHBbaV0uc2hkciA9PSBzeW10YWJzaGRyIHx8IGkgPj0gc3RydGFiaWR4KSB7CisJCQlvZmYgPSB4 ZXd0b2gobGF5b3V0cFtpXS5zaGRyLT5zaF9vZmZzZXQpOworCQkJc2l6ZSA9IHhld3RvaChsYXlv dXRwW2ldLnNoZHItPnNoX3NpemUpOworCQkJbGF5b3V0cFtpXS5idWZwID0geG1hbGxvYyhzaXpl LCBmbiwKKwkJCSAgICBzaHN0cnRhYnAgKyB4ZXd0b2gobGF5b3V0cFtpXS5zaGRyLT5zaF9uYW1l KSk7CisJCQlpZiAobGF5b3V0cFtpXS5idWZwID09IE5VTEwpCisJCQkJZ290byBiYWQ7CisJCQlp ZiAoeHJlYWRhdG9mZihmZCwgbGF5b3V0cFtpXS5idWZwLCBvZmYsIHNpemUsIGZuKSAhPQorCQkJ ICAgIHNpemUpCisJCQkJZ290byBiYWQ7CisKKwkJCS8qIHNldCBzeW1ib2wgdGFibGUgYW5kIHN0 cmluZyB0YWJsZSAqLworCQkJaWYgKGxheW91dHBbaV0uc2hkciA9PSBzeW10YWJzaGRyKQorCQkJ CXN5bXRhYnAgPSBsYXlvdXRwW2ldLmJ1ZnA7CisJCQllbHNlIGlmIChsYXlvdXRwW2ldLnNoZHIg PT0gc3RydGFic2hkcikKKwkJCQlzdHJ0YWJwID0gbGF5b3V0cFtpXS5idWZwOworCQl9CisJfQor CiAJbnN0cnRhYl9zaXplID0gMjU2OwogCW5zdHJ0YWJwID0geG1hbGxvYyhuc3RydGFiX3NpemUs IGZuLCAibmV3IHN0cmluZyB0YWJsZSIpOwogCWlmIChuc3RydGFicCA9PSBOVUxMKQpAQCAtMzY1 LDI2ICs0MjgsNjMgQEAKIAlzdHJ0YWJzaGRyLT5zaF9zaXplID0gaHRveGV3KG5zdHJ0YWJfbmV4 dG9mZik7CiAKIAkvKgotCSAqIHdyaXRlIG5ldyB0YWJsZXMgdG8gdGhlIGZpbGUKKwkgKiB1cGRh dGUgc2VjdGlvbiBoZWFkZXIgdGFibGUgaW4gYXNjZW5kaW5nIG9yZGVyIG9mIG9mZnNldAogCSAq LwotCWlmICh4d3JpdGVhdG9mZihmZCwgc2hkcnAsIHhld3RvaChlaGRyLmVfc2hvZmYpLCBzaGRy c2l6ZSwgZm4pICE9Ci0JICAgIHNoZHJzaXplKQotCQlnb3RvIGJhZDsKLQlpZiAoeHdyaXRlYXRv ZmYoZmQsIHN5bXRhYnAsIHhld3RvaChzeW10YWJzaGRyLT5zaF9vZmZzZXQpLAotCSAgICB4ZXd0 b2goc3ltdGFic2hkci0+c2hfc2l6ZSksIGZuKSAhPSB4ZXd0b2goc3ltdGFic2hkci0+c2hfc2l6 ZSkpCi0JCWdvdG8gYmFkOwotCS8qIHdyaXRlIG5ldyBzeW1ib2wgdGFibGUgc3RyaW5ncyAqLwot CWlmICgoc2l6ZV90KXh3cml0ZWF0b2ZmKGZkLCBuc3RydGFicCwgeGV3dG9oKHN0cnRhYnNoZHIt PnNoX29mZnNldCksCi0JICAgIHhld3RvaChzdHJ0YWJzaGRyLT5zaF9zaXplKSwgZm4pICE9IHhl d3RvaChzdHJ0YWJzaGRyLT5zaF9zaXplKSkKLQkJZ290byBiYWQ7CisJZm9yIChpID0gc3RydGFi aWR4ICsgMTsgaSA8IHhlMTZ0b2goZWhkci5lX3NobnVtKSArIDE7IGkrKykgeworCQlFbGZfT2Zm IG9mZiwgYWxpZ247CisJCW9mZiA9IHhld3RvaChsYXlvdXRwW2kgLSAxXS5zaGRyLT5zaF9vZmZz ZXQpICsKKwkJICAgIHhld3RvaChsYXlvdXRwW2kgLSAxXS5zaGRyLT5zaF9zaXplKTsKKwkJYWxp Z24gPSB4ZXd0b2gobGF5b3V0cFtpXS5zaGRyLT5zaF9hZGRyYWxpZ24pOworCQlvZmYgPSAob2Zm ICsgKGFsaWduIC0gMSkpICYgfihhbGlnbiAtIDEpOworCQlsYXlvdXRwW2ldLnNoZHItPnNoX29m ZnNldCA9IGh0b3hldyhvZmYpOworCX0KIAorCS8qCisJICogd3JpdGUgZGF0YSB0byB0aGUgZmls ZSBpbiBkZXNjZW5kaW5nIG9yZGVyIG9mIG9mZnNldAorCSAqLworCWZvciAoaSA9IHhlMTZ0b2go ZWhkci5lX3NobnVtKTsgaSA+PSAwOyBpLS0pIHsKKwkJaWYgKGxheW91dHBbaV0uc2hkciA9PSBz dHJ0YWJzaGRyKSB7CisJCQkvKiBuZXcgc3RyaW5nIHRhYmxlICovCisJCQlidWYgPSBuc3RydGFi cDsKKwkJfSBlbHNlCisJCQlidWYgPSBsYXlvdXRwW2ldLmJ1ZnA7CisKKwkJaWYgKGxheW91dHBb aV0uc2hkciA9PSAmc2hkcnNoZHIgfHwKKwkJICAgIGxheW91dHBbaV0uc2hkciA9PSBzeW10YWJz aGRyIHx8IGkgPj0gc3RydGFiaWR4KSB7CisJCQlpZiAoYnVmID09IE5VTEwpCisJCQkJZ290byBi YWQ7CisKKwkJCS8qIAorCQkJICogdXBkYXRlIHRoZSBvZmZzZXQgb2Ygc2VjdGlvbiBoZWFkZXIg dGFibGUgaW4gZWxmCisJCQkgKiBoZWFkZXIgaWYgbmVlZGVkLgorCQkJICovCisJCQlpZiAobGF5 b3V0cFtpXS5zaGRyID09ICZzaGRyc2hkciAmJgorCQkJICAgIGVoZHIuZV9zaG9mZiAhPSBzaGRy c2hkci5zaF9vZmZzZXQpIHsKKwkJCQllaGRyLmVfc2hvZmYgPSBzaGRyc2hkci5zaF9vZmZzZXQ7 CisJCQkJb2ZmID0gKEVMRlNJWkUgPT0gMzIpID8gMzIgOiA0NDsKKwkJCQlzaXplID0gc2l6ZW9m KEVsZl9PZmYpOworCQkJCWlmICh4d3JpdGVhdG9mZihmZCwgJmVoZHIuZV9zaG9mZiwgb2ZmLCBz aXplLAorCQkJCSAgICBmbikgIT0gc2l6ZSkKKwkJCQkJZ290byBiYWQ7CisJCQl9CisKKwkJCW9m ZiA9IHhld3RvaChsYXlvdXRwW2ldLnNoZHItPnNoX29mZnNldCk7CisJCQlzaXplID0geGV3dG9o KGxheW91dHBbaV0uc2hkci0+c2hfc2l6ZSk7CisJCQlpZiAoeHdyaXRlYXRvZmYoZmQsIGJ1Ziwg b2ZmLCBzaXplLCBmbikgIT0gc2l6ZSkKKwkJCQlnb3RvIGJhZDsKKwkJfQorCX0KKwogb3V0Ogot CWlmIChzaGRycCAhPSBOVUxMKQotCQlmcmVlKHNoZHJwKTsKLQlpZiAoc3ltdGFicCAhPSBOVUxM KQotCQlmcmVlKHN5bXRhYnApOwotCWlmIChzdHJ0YWJwICE9IE5VTEwpCi0JCWZyZWUoc3RydGFi cCk7CisJaWYgKGxheW91dHAgIT0gTlVMTCkgeworCQlmb3IgKGkgPSAwOyBpIDwgeGUxNnRvaChl aGRyLmVfc2hudW0pICsgMTsgaSsrKSB7CisJCQlpZiAobGF5b3V0cFtpXS5idWZwICE9IE5VTEwp CisJCQkJZnJlZShsYXlvdXRwW2ldLmJ1ZnApOworCQl9CisJCWZyZWUobGF5b3V0cCk7CisJfQor CWlmIChuc3RydGFicCAhPSBOVUxMKQorCQlmcmVlKG5zdHJ0YWJwKTsKIAlyZXR1cm4gKHJ2KTsK IAogYmFkOgo= --f46d04088e1183a55d04d1088ebb--