From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from zmcc-2-mx.zmailcloud.com (zmcc-2-mx.zmailcloud.com [52.37.197.7]) by sourceware.org (Postfix) with ESMTPS id B6EB43857C71 for ; Tue, 22 Sep 2020 16:23:28 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org B6EB43857C71 Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=symas.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=hyc@symas.com Received: from zmcc-2.zmailcloud.com (zmcc-2-mta-1.zmailcloud.com [146.148.52.56]) (using TLSv1.2 with cipher ADH-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by zmcc-2-mx.zmailcloud.com (Postfix) with ESMTPS id E1AB9404F2; Tue, 22 Sep 2020 11:23:27 -0500 (CDT) Received: from zmcc-2.zmailcloud.com (localhost [127.0.0.1]) by zmcc-2-mta-1.zmailcloud.com (Postfix) with ESMTPS id 70EB0CE872; Tue, 22 Sep 2020 11:23:27 -0500 (CDT) Received: from localhost (localhost [127.0.0.1]) by zmcc-2-mta-1.zmailcloud.com (Postfix) with ESMTP id 58D2DCE863; Tue, 22 Sep 2020 11:23:27 -0500 (CDT) DKIM-Filter: OpenDKIM Filter v2.10.3 zmcc-2-mta-1.zmailcloud.com 58D2DCE863 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=symas.com; s=37C7994C-28CA-11EA-A30F-68F90BB9D764; t=1600791807; bh=7NebgBe23siHwMZIZHP4sDj8aXpzJTVdgYtZsGsadoU=; h=To:From:Message-ID:Date:MIME-Version; b=YTISJku/takNXxHacz9zjBeZxyNTJHtxgc51upp4UHpDOdxIJOWR9M498/KNaS9qK kqW73IbtuptbaLeNbWhcEoRKGAADEsrWRJcfeuyoSrw1hRUQizDq+FSA+HyeZXriMO hGZDGnGGhlfhJ1KC2VIUUdr5KYQ40YBBShllhQj64yZs1nFslxr4Au3VfxruhC28CC olHAWylHWkcubj3Kpq1GhtDclV/5wzBqYRoWKHKjQfvNLk7a5l2c2uGOAzr0+UoMe9 DeHg4TdU61YZdr2XbkHk36rhXNyNu0WI1brnzpynULzMFeX+J7m7+i3QtNX+sSmEry o+FFCTtP+PN/g== Received: from zmcc-2.zmailcloud.com ([127.0.0.1]) by localhost (zmcc-2-mta-1.zmailcloud.com [127.0.0.1]) (amavisd-new, port 10026) with ESMTP id VfV5Aw9QQNZI; Tue, 22 Sep 2020 11:23:27 -0500 (CDT) Received: from [192.168.1.155] (unknown [84.203.28.168]) by zmcc-2-mta-1.zmailcloud.com (Postfix) with ESMTPSA id 87A57CE54A; Tue, 22 Sep 2020 11:23:26 -0500 (CDT) Subject: Re: [PATCH] dependency list for static libraries To: Nick Clifton Cc: binutils@sourceware.org References: <53b8973b-40a4-2550-3307-66d7f13707d5@symas.com> <64fe82bd-9c00-b232-98d2-f46182fb16ba@symas.com> <9889c54b-4dd3-2275-6621-c2391cfd268d@redhat.com> From: Howard Chu Message-ID: Date: Tue, 22 Sep 2020 17:23:24 +0100 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Firefox/60.0 SeaMonkey/2.53.3 MIME-Version: 1.0 In-Reply-To: Content-Type: multipart/mixed; boundary="------------C8D5A67038F6BDCC8A0B29BA" X-Spam-Status: No, score=-10.4 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, GIT_PATCH_0, NICE_REPLY_A, SPF_HELO_NONE, SPF_PASS, TXREP, URIBL_RED autolearn=ham autolearn_force=no version=3.4.2 X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on server2.sourceware.org X-BeenThere: binutils@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Binutils mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 22 Sep 2020 16:23:31 -0000 This is a multi-part message in MIME format. --------------C8D5A67038F6BDCC8A0B29BA Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit Nick Clifton wrote: > Hi Howard, > >>> * It is not clear to me why you create a binary bfd for Libdeps_bfd but >>> then convert it to a plugin type bfd. Can you explain what you are >>> doing here ? >> >> This was a major hassle, I should have commented it. The bfd gets created >> with type "plugin", and that refuses the bfd_bwrite() call. (Just fails.) >> The write only succeeded if I set it to "binary" type first. But then, trying >> to add this bfd to the archive failed unless I changed the type back to "plugin." > > OK - please could you add a comment to this effect to enlighten future readers. OK, new patch attached. Added comments, NEWS entry, texi doc, test case. >>> * The change to the code to call ar_emul_replace() inside replace_members() >>> looks wrong to me. The current code will try to replace all of the entries >>> on the files_to_move list, and will set changed to TRUE if any of the >>> replacements succeeds. The patched code will changed to FALSE if any >>> replacement fails, even if earlier ones succeeded. >> >> No, that's not correct. The patched code ORs in the result, so it will not >> change any previous success into a failure. > > Doh - OK, I misread this. But I think that there is still a possible problem. > Since the result is ORed in, if there is a failed call to ar_emul_replace after > a successful one, changed will still be TRUE, and the failed element will be > removed from the chain. This differs from the old behaviour where the element > would not be removed if ar_emul_replace() fails. (I am not sure however what > the impact of this change will be). OK, fixed this to preserve the original behavior for failed elements. >> OK. Any suggestions on what exactly to check? > > Sure. I would suggest adding a test that checks to see that: > > ar cvL libfoo.a "/foo/bar/" foo.o > > (something like that) actually creates a library with a libdeps element > in it. Take a look at binutils/testsuite/binutils-all/ar.exp where other > tests on ar are run. Basically you need to create a new proc to the file > and then invoke it at the end of the file. The new proc would probably > look something like this: Thanks. Had to tweak 2 lines but otherwise this worked. > proc test_add_dependencies { } { -- -- Howard Chu CTO, Symas Corp. http://www.symas.com Director, Highland Sun http://highlandsun.com/hyc/ Chief Architect, OpenLDAP http://www.openldap.org/project/ --------------C8D5A67038F6BDCC8A0B29BA Content-Type: text/x-patch; name="0001-Add-ar-support-for-dependencies.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="0001-Add-ar-support-for-dependencies.patch" RnJvbSBhM2VlYzE4NWE1MDczMzljZGE3MzNmNTVkZmNjMWNhMDkyZTYxOWY0IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBIb3dhcmQgQ2h1IDxoeWNAc3ltYXMuY29tPgpEYXRl OiBUaHUsIDMgU2VwIDIwMjAgMTc6MzQ6MTYgKzAxMDAKU3ViamVjdDogW1BBVENIXSBBZGQg YXIgc3VwcG9ydCBmb3IgZGVwZW5kZW5jaWVzCgpSZWNvcmQgLUwvLWwgZGVwZW5kZW5jaWVz IG9mIGEgc3RhdGljIGxpYnJhcnkgaW4gYSBfXy5MSUJERVAgZW50cnkuCk9wdGlvbnMgc2hv dWxkIGJlIHBhc3NlZCBsaXRlcmFsbHkgYXMgYSBzaW5nbGUgYXJndW1lbnQsIGUuZy4KIGFy IHJMICItTC91c3IvbG9jYWwvbGliIC1sZm9vIC1sYmFyIiBsaWJuZXcuYSBvYmoxLm8gb2Jq Mi5vCi0tLQogYmludXRpbHMvTkVXUyAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgNSAr KwogYmludXRpbHMvYXIuYyAgICAgICAgICAgICAgICAgICAgICAgICAgfCA5MSArKysrKysr KysrKysrKysrKysrKysrKy0tLQogYmludXRpbHMvYmluZW11bC5jICAgICAgICAgICAgICAg ICAgICAgfCA1MyArKysrKysrKysrLS0tLS0KIGJpbnV0aWxzL2JpbmVtdWwuaCAgICAgICAg ICAgICAgICAgICAgIHwgMTUgKysrLS0KIGJpbnV0aWxzL2RvYy9iaW51dGlscy50ZXhpICAg ICAgICAgICAgIHwgMTkgKysrKystCiBiaW51dGlscy9lbXVsX2FpeC5jICAgICAgICAgICAg ICAgICAgICB8IDE2ICstLS0tCiBiaW51dGlscy90ZXN0c3VpdGUvYmludXRpbHMtYWxsL2Fy LmV4cCB8IDQxICsrKysrKysrKysrKwogNyBmaWxlcyBjaGFuZ2VkLCAxOTQgaW5zZXJ0aW9u cygrKSwgNDYgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvYmludXRpbHMvTkVXUyBiL2Jp bnV0aWxzL05FV1MKaW5kZXggYzBkYzczZDdkOC4uOTJhODU1ZjVkMyAxMDA2NDQKLS0tIGEv YmludXRpbHMvTkVXUworKysgYi9iaW51dGlscy9ORVdTCkBAIC0xLDUgKzEsMTAgQEAKIC0q LSB0ZXh0IC0qLQogCisqIFRoZSBhciB0b29sIG5vdyBoYXMgYSBMIG1vZGlmaWVyIChvciAt LXJlY29yZC1saWJkZXBzKSBvcHRpb24gZm9yCisgIHNwZWNpZnlpbmcgZGVwZW5kZW5jaWVz IG9mIGEgc3RhdGljIGxpYnJhcnkuIFRoZSBhcmd1bWVudHMgb2YgdGhpcworICBvcHRpb24g d2lsbCBiZSBzdG9yZWQgdmVyYmF0aW0gaW4gdGhlIF9fLkxJQkRFUCBtZW1iZXIgb2YgdGhl IGFyY2hpdmUsCisgIHdoaWNoIHRoZSBsaW5rZXIgbWF5IHJlYWQgYXQgbGluayB0aW1lLgor CiAqIFJlYWRlbGYgbm93IGFjY2VwdHMgdGhlIC1DIGNvbW1hbmQgbGluZSBvcHRpb24gdG8g ZW5hYmxlIHRoZSBkZW1hbmdsaW5nIG9mCiAgIHN5bWJvbCBuYW1lcy4gIEluIGFkZGl0aW9u IHRoZSAtLWRlbWFuZ2xlPTxzdHlsZT4sIC0tbm8tZGVtYW5nbGUsCiAgIC0tcmVjdXJzZS1s aW1pdCBhbmQgLS1uby1yZWN1cnNlLWxpbWl0IG9wdGlvbnMgYXJlIGFsc28gbm93IGF2YWls YWxlLgpkaWZmIC0tZ2l0IGEvYmludXRpbHMvYXIuYyBiL2JpbnV0aWxzL2FyLmMKaW5kZXgg ODViMzQyYTY1MC4uNzEyOGJiNDFlNiAxMDA2NDQKLS0tIGEvYmludXRpbHMvYXIuYworKysg Yi9iaW51dGlscy9hci5jCkBAIC0xMzgsNiArMTM4LDExIEBAIHN0YXRpYyBiZmRfYm9vbGVh biBmdWxsX3BhdGhuYW1lID0gRkFMU0U7CiAvKiBXaGV0aGVyIHRvIGNyZWF0ZSBhICJ0aGlu IiBhcmNoaXZlIChzeW1ib2wgaW5kZXggb25seSAtLSBubyBmaWxlcykuICAqLwogc3RhdGlj IGJmZF9ib29sZWFuIG1ha2VfdGhpbl9hcmNoaXZlID0gRkFMU0U7CiAKKyNkZWZpbmUgTElC REVQUwkiX18uTElCREVQIgorLyogRGVwZW5kZW5jaWVzIHRvIHN0b3JlIGluIF9fLkxJQkRF UCBmb3IgbGlua2VyIHRvIHVzZSAqLworY2hhciAqTGliZGVwczsKK3N0YXRpYyBiZmQgKiBM aWJkZXBzX2JmZDsKKwogc3RhdGljIGludCBzaG93X3ZlcnNpb24gPSAwOwogCiBzdGF0aWMg aW50IHNob3dfaGVscCA9IDA7CkBAIC0xNjYsNiArMTcxLDcgQEAgc3RhdGljIHN0cnVjdCBv cHRpb24gbG9uZ19vcHRpb25zW10gPQogICB7InRhcmdldCIsIHJlcXVpcmVkX2FyZ3VtZW50 LCBOVUxMLCBPUFRJT05fVEFSR0VUfSwKICAgeyJ2ZXJzaW9uIiwgbm9fYXJndW1lbnQsICZz aG93X3ZlcnNpb24sIDF9LAogICB7Im91dHB1dCIsIHJlcXVpcmVkX2FyZ3VtZW50LCBOVUxM LCBPUFRJT05fT1VUUFVUfSwKKyAgeyJyZWNvcmQtbGliZGVwcyIsIHJlcXVpcmVkX2FyZ3Vt ZW50LCBOVUxMLCAnTCd9LAogICB7TlVMTCwgbm9fYXJndW1lbnQsIE5VTEwsIDB9CiB9Owog CkBAIC0yNzksMTMgKzI4NSwxMyBAQCB1c2FnZSAoaW50IGhlbHApCiAjaWYgQkZEX1NVUFBP UlRTX1BMVUdJTlMKICAgLyogeGdldHRleHQ6Yy1mb3JtYXQgKi8KICAgY29uc3QgY2hhciAq Y29tbWFuZF9saW5lCi0gICAgPSBfKCJVc2FnZTogJXMgW2VtdWxhdGlvbiBvcHRpb25zXSBb LV17ZG1wcXJzdHh9W2FiY0RmaWxNTm9PUHNTVHV2Vl0iCisgICAgPSBfKCJVc2FnZTogJXMg W2VtdWxhdGlvbiBvcHRpb25zXSBbLV17ZG1wcXJzdHh9W2FiY0RmaWxMTU5vT1BzU1R1dlZd IgogCSIgWy0tcGx1Z2luIDxuYW1lPl0gW21lbWJlci1uYW1lXSBbY291bnRdIGFyY2hpdmUt ZmlsZSBmaWxlLi4uXG4iKTsKIAogI2Vsc2UKICAgLyogeGdldHRleHQ6Yy1mb3JtYXQgKi8K ICAgY29uc3QgY2hhciAqY29tbWFuZF9saW5lCi0gICAgPSBfKCJVc2FnZTogJXMgW2VtdWxh dGlvbiBvcHRpb25zXSBbLV17ZG1wcXJzdHh9W2FiY0RmaWxNTm9PUHNTVHV2Vl0iCisgICAg PSBfKCJVc2FnZTogJXMgW2VtdWxhdGlvbiBvcHRpb25zXSBbLV17ZG1wcXJzdHh9W2FiY0Rm aWxMTU5vT1BzU1R1dlZdIgogCSIgW21lbWJlci1uYW1lXSBbY291bnRdIGFyY2hpdmUtZmls ZSBmaWxlLi4uXG4iKTsKICNlbmRpZgogICBzID0gaGVscCA/IHN0ZG91dCA6IHN0ZGVycjsK QEAgLTMyOSw2ICszMzUsNyBAQCB1c2FnZSAoaW50IGhlbHApCiAgIGZwcmludGYgKHMsIF8o IiBnZW5lcmljIG1vZGlmaWVyczpcbiIpKTsKICAgZnByaW50ZiAocywgXygiICBbY10gICAg ICAgICAgLSBkbyBub3Qgd2FybiBpZiB0aGUgbGlicmFyeSBoYWQgdG8gYmUgY3JlYXRlZFxu IikpOwogICBmcHJpbnRmIChzLCBfKCIgIFtzXSAgICAgICAgICAtIGNyZWF0ZSBhbiBhcmNo aXZlIGluZGV4IChjZi4gcmFubGliKVxuIikpOworICBmcHJpbnRmIChzLCBfKCIgIFtMIExJ QkRFUFNdICAtIHNwZWNpZnkgZGVwZW5kZW5jaWVzIG9mIHRoaXMgbGlicmFyeVxuIikpOwog ICBmcHJpbnRmIChzLCBfKCIgIFtTXSAgICAgICAgICAtIGRvIG5vdCBidWlsZCBhIHN5bWJv bCB0YWJsZVxuIikpOwogICBmcHJpbnRmIChzLCBfKCIgIFtUXSAgICAgICAgICAtIG1ha2Ug YSB0aGluIGFyY2hpdmVcbiIpKTsKICAgZnByaW50ZiAocywgXygiICBbdl0gICAgICAgICAg LSBiZSB2ZXJib3NlXG4iKSk7CkBAIC0zMzYsNiArMzQzLDcgQEAgdXNhZ2UgKGludCBoZWxw KQogICBmcHJpbnRmIChzLCBfKCIgIEA8ZmlsZT4gICAgICAtIHJlYWQgb3B0aW9ucyBmcm9t IDxmaWxlPlxuIikpOwogICBmcHJpbnRmIChzLCBfKCIgIC0tdGFyZ2V0PUJGRE5BTUUgLSBz cGVjaWZ5IHRoZSB0YXJnZXQgb2JqZWN0IGZvcm1hdCBhcyBCRkROQU1FXG4iKSk7CiAgIGZw cmludGYgKHMsIF8oIiAgLS1vdXRwdXQ9RElSTkFNRSAtIHNwZWNpZnkgdGhlIG91dHB1dCBk aXJlY3RvcnkgZm9yIGV4dHJhY3Rpb24gb3BlcmF0aW9uc1xuIikpOworICBmcHJpbnRmIChz LCBfKCIgIC0tcmVjb3JkLWxpYmRlcHM9TElCREVQUyAtIHNwZWNpZnkgZGVwZW5kZW5jaWVz IG9mIHRoaXMgbGlicmFyeVxuIikpOwogI2lmIEJGRF9TVVBQT1JUU19QTFVHSU5TCiAgIGZw cmludGYgKHMsIF8oIiBvcHRpb25hbDpcbiIpKTsKICAgZnByaW50ZiAocywgXygiICAtLXBs dWdpbiA8cD4gLSBsb2FkIHRoZSBzcGVjaWZpZWQgcGx1Z2luXG4iKSk7CkBAIC00ODcsNyAr NDk1LDcgQEAgZGVjb2RlX29wdGlvbnMgKGludCBhcmdjLCBjaGFyICoqYXJndikKICAgICAg IGFyZ3YgPSBuZXdfYXJndjsKICAgICB9CiAKLSAgd2hpbGUgKChjID0gZ2V0b3B0X2xvbmcg KGFyZ2MsIGFyZ3YsICJoZG1wcXJ0eGxjb09Wc1N1dmFiaU1OZlBURFUiLAorICB3aGlsZSAo KGMgPSBnZXRvcHRfbG9uZyAoYXJnYywgYXJndiwgImhkbXBxcnR4bEw6Y29PVnNTdXZhYmlN TmZQVERVIiwKIAkJCSAgIGxvbmdfb3B0aW9ucywgTlVMTCkpICE9IEVPRikKICAgICB7CiAg ICAgICBzd2l0Y2ggKGMpCkBAIC01MzYsNiArNTQ0LDExIEBAIGRlY29kZV9vcHRpb25zIChp bnQgYXJnYywgY2hhciAqKmFyZ3YpCiAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2Ug J2wnOgogICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlICdMJzoKKwkgIGlmIChMaWJk ZXBzICE9IE5VTEwpCisgICAgICAgICAgICBmYXRhbCAoXygiTGliZGVwcyBzcGVjaWZpZWQg bW9yZSB0aGFuIG9uY2UiKSk7CisgICAgICAgICAgTGliZGVwcyA9IG9wdGFyZzsKKyAgICAg ICAgICBicmVhazsKICAgICAgICAgY2FzZSAnYyc6CiAgICAgICAgICAgc2lsZW50X2NyZWF0 ZSA9IDE7CiAgICAgICAgICAgYnJlYWs7CkBAIC04NDcsNiArODYwLDUwIEBAIG1haW4gKGlu dCBhcmdjLCBjaGFyICoqYXJndikKICAgICAgIGlmIChvcGVyYXRpb24gPT0gZXh0cmFjdCAm JiBiZmRfaXNfdGhpbl9hcmNoaXZlIChhcmNoKSkKIAlmYXRhbCAoXygiYHgnIGNhbm5vdCBi ZSB1c2VkIG9uIHRoaW4gYXJjaGl2ZXMuIikpOwogCisgICAgICBpZiAoTGliZGVwcykKKyAg ICAgICAgeworICAgICAgICAgIGNoYXIgKipuZXdfZmlsZXM7CisgICAgICAgICAgYmZkX3Np emVfdHlwZSByZWNsZW4gPSBzdHJsZW4oTGliZGVwcykrMTsKKworICAgICAgICAgIC8qIENy ZWF0ZSBhIGJmZCB0byBjb250YWluIHRoZSBkZXBlbmRlbmNpZXMuCisJICAgICBJdCBpbmhl cml0cyBpdHMgdHlwZSBmcm9tIGFyY2gsIGJ1dCB3ZSBtdXN0CisJICAgICBzZXQgdGhlIHR5 cGUgdG8gImJpbmFyeSIgb3RoZXJ3aXNlIGJmZF9id3JpdGUoKQorCSAgICAgd2lsbCBmYWls LiBBZnRlciB3cml0aW5nLCB3ZSBtdXN0IHNldCB0aGUgdHlwZQorCSAgICAgYmFjayB0byAi cGx1Z2luIiBvdGhlcndpc2UgYWRkaW5nIGl0IHRvIHRoZQorCSAgICAgYXJjaGl2ZSB3aWxs IGZhaWwuICovCisgICAgICAgICAgTGliZGVwc19iZmQgPSBiZmRfY3JlYXRlKExJQkRFUFMs IGFyY2gpOworCSAgaWYgKExpYmRlcHNfYmZkID09IE5VTEwpCisJICAgIGZhdGFsIChfKCJD YW5ub3QgY3JlYXRlIExpYmRlcHMgcmVjb3JkLiIpKTsKKworICAgICAgICAgIGlmIChiZmRf ZmluZF90YXJnZXQoImJpbmFyeSIsIExpYmRlcHNfYmZkKSA9PSBOVUxMKQorCSAgICBmYXRh bCAoXygiQ2Fubm90IHNldCBMaWJkZXBzIHJlY29yZCB0eXBlIHRvIGJpbmFyeS4iKSk7CisK KyAgICAgICAgICBpZiAoIWJmZF9zZXRfZm9ybWF0KExpYmRlcHNfYmZkLCBiZmRfb2JqZWN0 KSkKKwkgICAgZmF0YWwgKF8oIkNhbm5vdCBzZXQgTGliZGVwcyBvYmplY3QgZm9ybWF0LiIp KTsKKworICAgICAgICAgIGlmICghYmZkX21ha2Vfd3JpdGFibGUoTGliZGVwc19iZmQpKQor CSAgICBmYXRhbCAoXygiQ2Fubm90IG1ha2UgTGliZGVwcyBvYmplY3Qgd3JpdGFibGUuIikp OworCisJICBpZiAoYmZkX2J3cml0ZShMaWJkZXBzLCByZWNsZW4sIExpYmRlcHNfYmZkKSAh PSByZWNsZW4pCisJICAgIGZhdGFsIChfKCJDYW5ub3Qgd3JpdGUgTGliZGVwcyByZWNvcmQu IikpOworCisgICAgICAgICAgaWYgKCFiZmRfbWFrZV9yZWFkYWJsZShMaWJkZXBzX2JmZCkp CisJICAgIGZhdGFsIChfKCJDYW5ub3QgbWFrZSBMaWJkZXBzIG9iamVjdCByZWFkYWJsZS4i KSk7CisKKyAgICAgICAgICBpZiAoYmZkX2ZpbmRfdGFyZ2V0KCJwbHVnaW4iLCBMaWJkZXBz X2JmZCkgPT0gTlVMTCkKKwkgICAgZmF0YWwgKF8oIkNhbm5vdCByZXNldCBMaWJkZXBzIHJl Y29yZCB0eXBlLiIpKTsKKworCSAgLyogQXBwZW5kIG91ciBMaWJkZXBzIHJlY29yZCB0byB0 aGUgbGlzdCBvZiBmaWxlcworCSAgICAgYmVpbmcgb3BlcmF0ZWQgb24uICovCisgICAgICAg ICAgbmV3X2ZpbGVzID0geG1hbGxvYygoZmlsZV9jb3VudCsyKSAqIHNpemVvZihjaGFyICop KTsKKyAgICAgICAgICBmb3IgKGk9MDsgaTxmaWxlX2NvdW50OyBpKyspCisgICAgICAgICAg ICBuZXdfZmlsZXNbaV0gPSBmaWxlc1tpXTsKKyAgICAgICAgICBuZXdfZmlsZXNbaSsrXSA9 IExJQkRFUFM7CisgICAgICAgICAgZmlsZV9jb3VudCA9IGk7CisgICAgICAgICAgZmlsZXMg PSBuZXdfZmlsZXM7CisgICAgICAgICAgZmlsZXNbaV0gPSBOVUxMOworICAgICAgICB9CisK ICAgICAgIHN3aXRjaCAob3BlcmF0aW9uKQogCXsKIAljYXNlIHByaW50X3RhYmxlOgpAQCAt MTQzMiw2ICsxNDg5LDcgQEAgcmVwbGFjZV9tZW1iZXJzIChiZmQgKmFyY2gsIGNoYXIgKipm aWxlc190b19tb3ZlLCBiZmRfYm9vbGVhbiBxdWljaykKIAkJCQlub3JtYWxpemUgKGJmZF9n ZXRfZmlsZW5hbWUgKGN1cnJlbnQpLCBhcmNoKSkgPT0gMAogCQkgICYmIGN1cnJlbnQtPmFy ZWx0X2RhdGEgIT0gTlVMTCkKIAkJeworCQkgIGJmZF9ib29sZWFuIHJlcGxhY2VkOwogCQkg IGlmIChuZXdlcl9vbmx5KQogCQkgICAgewogCQkgICAgICBzdHJ1Y3Qgc3RhdCBmc2J1Ziwg YXNidWY7CkBAIC0xNDUzLDggKzE1MTEsMTggQEAgcmVwbGFjZV9tZW1iZXJzIChiZmQgKmFy Y2gsIGNoYXIgKipmaWxlc190b19tb3ZlLCBiZmRfYm9vbGVhbiBxdWljaykKIAogCQkgIGFm dGVyX2JmZCA9IGdldF9wb3NfYmZkICgmYXJjaC0+YXJjaGl2ZV9uZXh0LCBwb3NfYWZ0ZXIs CiAJCQkJCSAgIGJmZF9nZXRfZmlsZW5hbWUgKGN1cnJlbnQpKTsKLQkJICBpZiAoYXJfZW11 bF9yZXBsYWNlIChhZnRlcl9iZmQsICpmaWxlc190b19tb3ZlLAotCQkJCSAgICAgICB0YXJn ZXQsIHZlcmJvc2UpKQorCQkgIGlmIChMaWJkZXBzICYmIEZJTEVOQU1FX0NNUCAobm9ybWFs aXplICgqZmlsZXNfdG9fbW92ZSwgYXJjaCksCisJCQkJCQlMSUJERVBTKSA9PSAwKQorCQkg ICAgeworCQkgICAgICByZXBsYWNlZCA9IGFyX2VtdWxfcmVwbGFjZV9iZmQgKGFmdGVyX2Jm ZCwgTGliZGVwc19iZmQsCisJCQkJICAgICAgIHZlcmJvc2UpOworCQkgICAgfQorCQkgIGVs c2UKKwkJICAgIHsKKwkJICAgICAgcmVwbGFjZWQgPSBhcl9lbXVsX3JlcGxhY2UgKGFmdGVy X2JmZCwgKmZpbGVzX3RvX21vdmUsCisJCQkJICAgICAgIHRhcmdldCwgdmVyYm9zZSk7CisJ CSAgICB9CisJCSAgaWYgKHJlcGxhY2VkKQogCQkgICAgewogCQkgICAgICAvKiBTbmlwIG91 dCB0aGlzIGVudHJ5IGZyb20gdGhlIGNoYWluLiAgKi8KIAkJICAgICAgKmN1cnJlbnRfcHRy ID0gKCpjdXJyZW50X3B0ciktPmFyY2hpdmVfbmV4dDsKQEAgLTE0NzAsOSArMTUzOCwxNiBA QCByZXBsYWNlX21lbWJlcnMgKGJmZCAqYXJjaCwgY2hhciAqKmZpbGVzX3RvX21vdmUsIGJm ZF9ib29sZWFuIHF1aWNrKQogICAgICAgLyogQWRkIHRvIHRoZSBlbmQgb2YgdGhlIGFyY2hp dmUuICAqLwogICAgICAgYWZ0ZXJfYmZkID0gZ2V0X3Bvc19iZmQgKCZhcmNoLT5hcmNoaXZl X25leHQsIHBvc19lbmQsIE5VTEwpOwogCi0gICAgICBpZiAoYXJfZW11bF9hcHBlbmQgKGFm dGVyX2JmZCwgKmZpbGVzX3RvX21vdmUsIHRhcmdldCwKLQkJCSAgdmVyYm9zZSwgbWFrZV90 aGluX2FyY2hpdmUpKQotCWNoYW5nZWQgPSBUUlVFOworICAgICAgaWYgKExpYmRlcHMgJiYg RklMRU5BTUVfQ01QIChub3JtYWxpemUgKCpmaWxlc190b19tb3ZlLCBhcmNoKSwgTElCREVQ UykgPT0gMCkKKyAgICAgICAgeworCSAgY2hhbmdlZCB8PSBhcl9lbXVsX2FwcGVuZF9iZmQg KGFmdGVyX2JmZCwgTGliZGVwc19iZmQsCisJCQkgIHZlcmJvc2UsIG1ha2VfdGhpbl9hcmNo aXZlKTsKKwl9CisgICAgICBlbHNlCisgICAgICAgIHsKKwkgIGNoYW5nZWQgfD0gYXJfZW11 bF9hcHBlbmQgKGFmdGVyX2JmZCwgKmZpbGVzX3RvX21vdmUsIHRhcmdldCwKKwkJCSAgdmVy Ym9zZSwgbWFrZV90aGluX2FyY2hpdmUpOworCX0KIAogICAgIG5leHRfZmlsZTo7CiAKZGlm ZiAtLWdpdCBhL2JpbnV0aWxzL2JpbmVtdWwuYyBiL2JpbnV0aWxzL2JpbmVtdWwuYwppbmRl eCA3YzcxYjViNzhjLi44YTA1MTJlYmQ5IDEwMDY0NAotLS0gYS9iaW51dGlscy9iaW5lbXVs LmMKKysrIGIvYmludXRpbHMvYmluZW11bC5jCkBAIC00MSw5ICs0MSwyNCBAQCBhcl9lbXVs X2RlZmF1bHRfdXNhZ2UgKEZJTEUgKmZwKQogYmZkX2Jvb2xlYW4KIGFyX2VtdWxfYXBwZW5k IChiZmQgKiphZnRlcl9iZmQsIGNoYXIgKmZpbGVfbmFtZSwgY29uc3QgY2hhciAqdGFyZ2V0 LAogCQliZmRfYm9vbGVhbiB2ZXJib3NlLCBiZmRfYm9vbGVhbiBmbGF0dGVuKQoreworICBi ZmQgKm5ld19iZmQ7CisKKyAgbmV3X2JmZCA9IGJmZF9vcGVuciAoZmlsZV9uYW1lLCB0YXJn ZXQpOworICBBUl9FTVVMX0VMRU1FTlRfQ0hFQ0sgKG5ld19iZmQsIGZpbGVfbmFtZSk7Cisg IGlmIChiaW5fZHVtbXlfZW11bGF0aW9uLmFyX2FwcGVuZCkKKyAgICByZXR1cm4gYmluX2R1 bW15X2VtdWxhdGlvbi5hcl9hcHBlbmQgKGFmdGVyX2JmZCwgbmV3X2JmZCwKKwkJCQkJICB2 ZXJib3NlLCBmbGF0dGVuKTsKKworICByZXR1cm4gRkFMU0U7Cit9CisKK2JmZF9ib29sZWFu Cithcl9lbXVsX2FwcGVuZF9iZmQgKGJmZCAqKmFmdGVyX2JmZCwgYmZkICpuZXdfYmZkLAor CQliZmRfYm9vbGVhbiB2ZXJib3NlLCBiZmRfYm9vbGVhbiBmbGF0dGVuKQogewogICBpZiAo YmluX2R1bW15X2VtdWxhdGlvbi5hcl9hcHBlbmQpCi0gICAgcmV0dXJuIGJpbl9kdW1teV9l bXVsYXRpb24uYXJfYXBwZW5kIChhZnRlcl9iZmQsIGZpbGVfbmFtZSwgdGFyZ2V0LAorICAg IHJldHVybiBiaW5fZHVtbXlfZW11bGF0aW9uLmFyX2FwcGVuZCAoYWZ0ZXJfYmZkLCBuZXdf YmZkLAogCQkJCQkgIHZlcmJvc2UsIGZsYXR0ZW4pOwogCiAgIHJldHVybiBGQUxTRTsKQEAg LTkzLDE0ICsxMDgsOSBAQCBkb19hcl9lbXVsX2FwcGVuZCAoYmZkICoqYWZ0ZXJfYmZkLCBi ZmQgKm5ld19iZmQsCiB9CiAKIGJmZF9ib29sZWFuCi1hcl9lbXVsX2RlZmF1bHRfYXBwZW5k IChiZmQgKiphZnRlcl9iZmQsIGNoYXIgKmZpbGVfbmFtZSwKLQkJCWNvbnN0IGNoYXIgKnRh cmdldCwgYmZkX2Jvb2xlYW4gdmVyYm9zZSwKLQkJCWJmZF9ib29sZWFuIGZsYXR0ZW4pCith cl9lbXVsX2RlZmF1bHRfYXBwZW5kIChiZmQgKiphZnRlcl9iZmQsIGJmZCAqbmV3X2JmZCwK KwkJCWJmZF9ib29sZWFuIHZlcmJvc2UsIGJmZF9ib29sZWFuIGZsYXR0ZW4pCiB7Ci0gIGJm ZCAqbmV3X2JmZDsKLQotICBuZXdfYmZkID0gYmZkX29wZW5yIChmaWxlX25hbWUsIHRhcmdl dCk7Ci0gIEFSX0VNVUxfRUxFTUVOVF9DSEVDSyAobmV3X2JmZCwgZmlsZV9uYW1lKTsKICAg cmV0dXJuIGRvX2FyX2VtdWxfYXBwZW5kIChhZnRlcl9iZmQsIG5ld19iZmQsIHZlcmJvc2Us IGZsYXR0ZW4sIGFueV9vayk7CiB9CiAKQEAgLTEwOCwyMyArMTE4LDM0IEBAIGJmZF9ib29s ZWFuCiBhcl9lbXVsX3JlcGxhY2UgKGJmZCAqKmFmdGVyX2JmZCwgY2hhciAqZmlsZV9uYW1l LCBjb25zdCBjaGFyICp0YXJnZXQsCiAJCSBiZmRfYm9vbGVhbiB2ZXJib3NlKQogeworICBi ZmQgKm5ld19iZmQ7CisKKyAgbmV3X2JmZCA9IGJmZF9vcGVuciAoZmlsZV9uYW1lLCB0YXJn ZXQpOworICBBUl9FTVVMX0VMRU1FTlRfQ0hFQ0sgKG5ld19iZmQsIGZpbGVfbmFtZSk7CisK ICAgaWYgKGJpbl9kdW1teV9lbXVsYXRpb24uYXJfcmVwbGFjZSkKLSAgICByZXR1cm4gYmlu X2R1bW15X2VtdWxhdGlvbi5hcl9yZXBsYWNlIChhZnRlcl9iZmQsIGZpbGVfbmFtZSwKLQkJ CQkJICAgdGFyZ2V0LCB2ZXJib3NlKTsKKyAgICByZXR1cm4gYmluX2R1bW15X2VtdWxhdGlv bi5hcl9yZXBsYWNlIChhZnRlcl9iZmQsIG5ld19iZmQsCisJCQkJCSAgIHZlcmJvc2UpOwog CiAgIHJldHVybiBGQUxTRTsKIH0KIAogYmZkX2Jvb2xlYW4KLWFyX2VtdWxfZGVmYXVsdF9y ZXBsYWNlIChiZmQgKiphZnRlcl9iZmQsIGNoYXIgKmZpbGVfbmFtZSwKLQkJCSBjb25zdCBj aGFyICp0YXJnZXQsIGJmZF9ib29sZWFuIHZlcmJvc2UpCithcl9lbXVsX3JlcGxhY2VfYmZk IChiZmQgKiphZnRlcl9iZmQsIGJmZCAqbmV3X2JmZCwKKwkJIGJmZF9ib29sZWFuIHZlcmJv c2UpCiB7Ci0gIGJmZCAqbmV3X2JmZDsKKyAgaWYgKGJpbl9kdW1teV9lbXVsYXRpb24uYXJf cmVwbGFjZSkKKyAgICByZXR1cm4gYmluX2R1bW15X2VtdWxhdGlvbi5hcl9yZXBsYWNlIChh ZnRlcl9iZmQsIG5ld19iZmQsCisJCQkJCSAgIHZlcmJvc2UpOwogCi0gIG5ld19iZmQgPSBi ZmRfb3BlbnIgKGZpbGVfbmFtZSwgdGFyZ2V0KTsKLSAgQVJfRU1VTF9FTEVNRU5UX0NIRUNL IChuZXdfYmZkLCBmaWxlX25hbWUpOworICByZXR1cm4gRkFMU0U7Cit9CiAKLSAgQVJfRU1V TF9SRVBMQUNFX1BSSU5UX1ZFUkJPU0UgKHZlcmJvc2UsIGZpbGVfbmFtZSk7CitiZmRfYm9v bGVhbgorYXJfZW11bF9kZWZhdWx0X3JlcGxhY2UgKGJmZCAqKmFmdGVyX2JmZCwgYmZkICpu ZXdfYmZkLAorCQkJIGJmZF9ib29sZWFuIHZlcmJvc2UpCit7CisgIEFSX0VNVUxfUkVQTEFD RV9QUklOVF9WRVJCT1NFICh2ZXJib3NlLCBiZmRfZ2V0X2ZpbGVuYW1lIChuZXdfYmZkKSk7 CiAKICAgbmV3X2JmZC0+YXJjaGl2ZV9uZXh0ID0gKmFmdGVyX2JmZDsKICAgKmFmdGVyX2Jm ZCA9IG5ld19iZmQ7CmRpZmYgLS1naXQgYS9iaW51dGlscy9iaW5lbXVsLmggYi9iaW51dGls cy9iaW5lbXVsLmgKaW5kZXggZDRhMTRlZGZlYi4uMTZjMWY4OTA2MiAxMDA2NDQKLS0tIGEv YmludXRpbHMvYmluZW11bC5oCisrKyBiL2JpbnV0aWxzL2JpbmVtdWwuaApAQCAtMzAsMTUg KzMwLDE5IEBAIGV4dGVybiB2b2lkIGFyX2VtdWxfdXNhZ2UgKEZJTEUgKik7CiBleHRlcm4g dm9pZCBhcl9lbXVsX2RlZmF1bHRfdXNhZ2UgKEZJTEUgKik7CiBleHRlcm4gYmZkX2Jvb2xl YW4gYXJfZW11bF9hcHBlbmQgKGJmZCAqKiwgY2hhciAqLCBjb25zdCBjaGFyICosCiAJCQkJ ICAgYmZkX2Jvb2xlYW4sIGJmZF9ib29sZWFuKTsKLWV4dGVybiBiZmRfYm9vbGVhbiBhcl9l bXVsX2RlZmF1bHRfYXBwZW5kIChiZmQgKiosIGNoYXIgKiwgY29uc3QgY2hhciAqLAorZXh0 ZXJuIGJmZF9ib29sZWFuIGFyX2VtdWxfYXBwZW5kX2JmZCAoYmZkICoqLCBiZmQgKiwKKwkJ CQkgICBiZmRfYm9vbGVhbiwgYmZkX2Jvb2xlYW4pOworZXh0ZXJuIGJmZF9ib29sZWFuIGFy X2VtdWxfZGVmYXVsdF9hcHBlbmQgKGJmZCAqKiwgYmZkICosCiAJCQkJCSAgIGJmZF9ib29s ZWFuLCBiZmRfYm9vbGVhbik7CiBleHRlcm4gYmZkX2Jvb2xlYW4gZG9fYXJfZW11bF9hcHBl bmQgKGJmZCAqKiwgYmZkICosCiAJCQkJICAgICAgYmZkX2Jvb2xlYW4sIGJmZF9ib29sZWFu LAogCQkJCSAgICAgIGJmZF9ib29sZWFuICgqKShiZmQgKikpOwogZXh0ZXJuIGJmZF9ib29s ZWFuIGFyX2VtdWxfcmVwbGFjZSAoYmZkICoqLCBjaGFyICosIGNvbnN0IGNoYXIgKiwKIAkJ CQkgICAgYmZkX2Jvb2xlYW4pOwotZXh0ZXJuIGJmZF9ib29sZWFuIGFyX2VtdWxfZGVmYXVs dF9yZXBsYWNlIChiZmQgKiosIGNoYXIgKiwKLQkJCQkJICAgIGNvbnN0IGNoYXIgKiwgYmZk X2Jvb2xlYW4pOworZXh0ZXJuIGJmZF9ib29sZWFuIGFyX2VtdWxfcmVwbGFjZV9iZmQgKGJm ZCAqKiwgYmZkICosCisJCQkJICAgIGJmZF9ib29sZWFuKTsKK2V4dGVybiBiZmRfYm9vbGVh biBhcl9lbXVsX2RlZmF1bHRfcmVwbGFjZSAoYmZkICoqLCBiZmQgKiwKKwkJCQkJICAgIGJm ZF9ib29sZWFuKTsKIGV4dGVybiBiZmRfYm9vbGVhbiBhcl9lbXVsX3BhcnNlX2FyZyAoY2hh ciAqKTsKIGV4dGVybiBiZmRfYm9vbGVhbiBhcl9lbXVsX2RlZmF1bHRfcGFyc2VfYXJnIChj aGFyICopOwogCkBAIC02MSw5ICs2NSw4IEBAIHR5cGVkZWYgc3RydWN0IGJpbl9lbXVsYXRp b25feGZlcl9zdHJ1Y3QKIHsKICAgLyogUHJpbnQgb3V0IHRoZSBleHRyYSBvcHRpb25zLiAg Ki8KICAgdm9pZCAoKiBhcl91c2FnZSkgKEZJTEUgKmZwKTsKLSAgYmZkX2Jvb2xlYW4gKCog YXJfYXBwZW5kKSAoYmZkICoqLCBjaGFyICosIGNvbnN0IGNoYXIgKiwgYmZkX2Jvb2xlYW4s Ci0JCQkgICAgIGJmZF9ib29sZWFuKTsKLSAgYmZkX2Jvb2xlYW4gKCogYXJfcmVwbGFjZSkg KGJmZCAqKiwgY2hhciAqLCBjb25zdCBjaGFyICosIGJmZF9ib29sZWFuKTsKKyAgYmZkX2Jv b2xlYW4gKCogYXJfYXBwZW5kKSAoYmZkICoqLCBiZmQgKiwgYmZkX2Jvb2xlYW4sIGJmZF9i b29sZWFuKTsKKyAgYmZkX2Jvb2xlYW4gKCogYXJfcmVwbGFjZSkgKGJmZCAqKiwgYmZkICos IGJmZF9ib29sZWFuKTsKICAgYmZkX2Jvb2xlYW4gKCogYXJfcGFyc2VfYXJnKSAoY2hhciAq KTsKIH0KIGJpbl9lbXVsYXRpb25feGZlcl90eXBlOwpkaWZmIC0tZ2l0IGEvYmludXRpbHMv ZG9jL2JpbnV0aWxzLnRleGkgYi9iaW51dGlscy9kb2MvYmludXRpbHMudGV4aQppbmRleCAz NWE1YTY3MDQxLi43MGQ5NzU2NWI1IDEwMDY0NAotLS0gYS9iaW51dGlscy9kb2MvYmludXRp bHMudGV4aQorKysgYi9iaW51dGlscy9kb2MvYmludXRpbHMudGV4aQpAQCAtMTcwLDcgKzE3 MCw3IEBAIGluIHRoZSBzZWN0aW9uIGVudGl0bGVkIGBgR05VIEZyZWUgRG9jdW1lbnRhdGlv biBMaWNlbnNlJycuCiBAYyBtYW4gdGl0bGUgYXIgY3JlYXRlLCBtb2RpZnksIGFuZCBleHRy YWN0IGZyb20gYXJjaGl2ZXMKIAogQHNtYWxsZXhhbXBsZQotYXIgWy1dQHZhcntwfVtAdmFy e21vZH1dIFtAb3B0aW9uey0tcGx1Z2lufSBAdmFye25hbWV9XSBbQG9wdGlvbnstLXRhcmdl dH0gQHZhcntiZmRuYW1lfV0gW0BvcHRpb257LS1vdXRwdXR9IEB2YXJ7ZGlybmFtZX1dIFtA dmFye3JlbHBvc31dIFtAdmFye2NvdW50fV0gQHZhcnthcmNoaXZlfSBbQHZhcnttZW1iZXJ9 QGRvdHN7fV0KK2FyIFstXUB2YXJ7cH1bQHZhcnttb2R9XSBbQG9wdGlvbnstLXBsdWdpbn0g QHZhcntuYW1lfV0gW0BvcHRpb257LS10YXJnZXR9IEB2YXJ7YmZkbmFtZX1dIFtAb3B0aW9u ey0tb3V0cHV0fSBAdmFye2Rpcm5hbWV9XSBbQG9wdGlvbnstLXJlY29yZC1saWJkZXBzfSBA dmFye2xpYmRlcHN9XSBbQHZhcntyZWxwb3N9XSBbQHZhcntjb3VudH1dIEB2YXJ7YXJjaGl2 ZX0gW0B2YXJ7bWVtYmVyfUBkb3Rze31dCiBhciAtTSBbIDxtcmktc2NyaXB0IF0KIEBlbmQg c21hbGxleGFtcGxlCiAKQEAgLTE5Niw3ICsxOTYsOSBAQCBjaGFyYWN0ZXJzICh0eXBpY2Fs IG9mIGZvcm1hdHMgcmVsYXRlZCB0byBjb2ZmKS4KIEBjaW5kZXggbGlicmFyaWVzCiBAY29t bWFuZHthcn0gaXMgY29uc2lkZXJlZCBhIGJpbmFyeSB1dGlsaXR5IGJlY2F1c2UgYXJjaGl2 ZXMgb2YgdGhpcyBzb3J0CiBhcmUgbW9zdCBvZnRlbiB1c2VkIGFzIEBkZm57bGlicmFyaWVz fSBob2xkaW5nIGNvbW1vbmx5IG5lZWRlZAotc3Vicm91dGluZXMuCitzdWJyb3V0aW5lcy4g IFNpbmNlIGxpYnJhcmllcyBvZnRlbiB3aWxsIGRlcGVuZCBvbiBvdGhlciBsaWJyYXJpZXMs CitAY29tbWFuZHthcn0gY2FuIGFsc28gcmVjb3JkIHRoZSBkZXBlbmRlbmNpZXMgb2YgYSBs aWJyYXJ5IHdoZW4gdGhlCitAb3B0aW9uey0tcmVjb3JkLWxpYmRlcHN9IG9wdGlvbiBpcyBz cGVjaWZpZWQuCiAKIEBjaW5kZXggc3ltYm9sIGluZGV4CiBAY29tbWFuZHthcn0gY3JlYXRl cyBhbiBpbmRleCB0byB0aGUgc3ltYm9scyBkZWZpbmVkIGluIHJlbG9jYXRhYmxlCkBAIC0y NTQsNyArMjU2LDcgQEAgcHJvZ3JhbS4KIAogQHNtYWxsZXhhbXBsZQogQGMgbWFuIGJlZ2lu IFNZTk9QU0lTIGFyCi1hciBbQG9wdGlvbnstWDMyXzY0fV0gW0BvcHRpb257LX1dQHZhcntw fVtAdmFye21vZH1dIFtAb3B0aW9uey0tcGx1Z2lufSBAdmFye25hbWV9XSBbQG9wdGlvbnst LXRhcmdldH0gQHZhcntiZmRuYW1lfV0gW0BvcHRpb257LS1vdXRwdXR9IEB2YXJ7ZGlybmFt ZX1dIFtAdmFye3JlbHBvc31dIFtAdmFye2NvdW50fV0gQHZhcnthcmNoaXZlfSBbQHZhcntt ZW1iZXJ9QGRvdHN7fV0KK2FyIFtAb3B0aW9uey1YMzJfNjR9XSBbQG9wdGlvbnstfV1AdmFy e3B9W0B2YXJ7bW9kfV0gW0BvcHRpb257LS1wbHVnaW59IEB2YXJ7bmFtZX1dIFtAb3B0aW9u ey0tdGFyZ2V0fSBAdmFye2JmZG5hbWV9XSBbQG9wdGlvbnstLW91dHB1dH0gQHZhcntkaXJu YW1lfV0gW0BvcHRpb257LS1yZWNvcmQtbGliZGVwc30gQHZhcntsaWJkZXBzfV0gW0B2YXJ7 cmVscG9zfV0gW0B2YXJ7Y291bnR9XSBAdmFye2FyY2hpdmV9IFtAdmFye21lbWJlcn1AZG90 c3t9XQogQGMgbWFuIGVuZAogQGVuZCBzbWFsbGV4YW1wbGUKIApAQCAtNDUyLDYgKzQ1NCwx MyBAQCBUaGlzIG1vZGlmaWVyIGlzIGFjY2VwdGVkIGJ1dCBub3QgdXNlZC4KIEBjIHdoYWZm b3IgYXIgbCBtb2RpZmllcj8/PyBwcmVzdW1hYmx5IGNvbXBhdDsgd2l0aAogQGMgd2hhdD8/ Py0tLWRvY0BAY3lnbnVzLmNvbSwgMjVqYW45MQogCitAaXRlbSBMCitTcGVjaWZ5IGRlcGVu ZGVuY2llcyBvZiB0aGlzIGxpYnJhcnkuICBUaGUgZGVwZW5kZW5jaWVzIG11c3QgaW1tZWRp YXRlbHkKK2ZvbGxvdyB0aGlzIG9wdGlvbiBjaGFyYWN0ZXIsIG11c3QgdXNlIHRoZSBzYW1l IHN5bnRheCBhcyB0aGUgbGlua2VyCitjb21tYW5kIGxpbmUsIGFuZCBtdXN0IGJlIHNwZWNp ZmllZCB3aXRoaW4gYSBzaW5nbGUgYXJndW1lbnQuICBJLmUuLCBpZgorbXVsdGlwbGUgaXRl bXMgYXJlIG5lZWRlZCwgdGhleSBtdXN0IGJlIHF1b3RlZCB0byBmb3JtIGEgc2luZ2xlIGNv bW1hbmQKK2xpbmUgYXJndW1lbnQuICBGb3IgZXhhbXBsZSBAc2FtcHtMICItTC91c3IvbG9j YWwvbGliIC1sbXlkZXAxIC1sbXlkZXAyIn0KKwogQGl0ZW0gTgogVXNlcyB0aGUgQHZhcntj b3VudH0gcGFyYW1ldGVyLiAgVGhpcyBpcyB1c2VkIGlmIHRoZXJlIGFyZSBtdWx0aXBsZQog ZW50cmllcyBpbiB0aGUgYXJjaGl2ZSB3aXRoIHRoZSBzYW1lIG5hbWUuICBFeHRyYWN0IG9y IGRlbGV0ZSBpbnN0YW5jZQpAQCAtNTkyLDYgKzYwMSwxMCBAQCBOb3RlIC0gYWx0aG91Z2gg dGhlIHByZXNlbmNlIG9mIHRoaXMgb3B0aW9uIGRvZXMgaW1wbHkgYSBAb3B0aW9ue3h9CiBl eHRyYWN0aW9uIG9wZXJhdGlvbiB0aGF0IG9wdGlvbiBtdXN0IHN0aWxsIGJlIGluY2x1ZGVk IG9uIHRoZSBjb21tYW5kCiBsaW5lLgogCitAaXRlbSAtLXJlY29yZC1saWJkZXBzIEB2YXJ7 bGliZGVwc30KK1RoZSBAb3B0aW9uey0tcmVjb3JkLWxpYmRlcHN9IG9wdGlvbiBpcyBpZGVu dGljYWwgdG8gdGhlIEBvcHRpb257TH0gbW9kaWZpZXIsCitqdXN0IGhhbmRsZWQgaW4gbG9u ZyBmb3JtLgorCiBAZW5kIHRhYmxlCiBAYyBtYW4gZW5kCiAKZGlmZiAtLWdpdCBhL2JpbnV0 aWxzL2VtdWxfYWl4LmMgYi9iaW51dGlscy9lbXVsX2FpeC5jCmluZGV4IGM1NGUxMDgzZTUu LjcyNmNiM2I3MGMgMTAwNjQ0Ci0tLSBhL2JpbnV0aWxzL2VtdWxfYWl4LmMKKysrIGIvYmlu dXRpbHMvZW11bF9haXguYwpAQCAtNjcsMzAgKzY3LDIwIEBAIGNoZWNrX2FpeCAoYmZkICp0 cnlfYmZkKQogfQogCiBzdGF0aWMgYmZkX2Jvb2xlYW4KLWFyX2VtdWxfYWl4X2FwcGVuZCAo YmZkICoqYWZ0ZXJfYmZkLCBjaGFyICpmaWxlX25hbWUsIGNvbnN0IGNoYXIgKnRhcmdldCwK K2FyX2VtdWxfYWl4X2FwcGVuZCAoYmZkICoqYWZ0ZXJfYmZkLCBiZmQgKm5ld19iZmQsCiAJ CSAgICBiZmRfYm9vbGVhbiB2ZXJib3NlLCBiZmRfYm9vbGVhbiBmbGF0dGVuKQogewotICBi ZmQgKm5ld19iZmQ7Ci0KLSAgbmV3X2JmZCA9IGJmZF9vcGVuciAoZmlsZV9uYW1lLCB0YXJn ZXQpOwotICBBUl9FTVVMX0VMRU1FTlRfQ0hFQ0sgKG5ld19iZmQsIGZpbGVfbmFtZSk7Ci0K ICAgcmV0dXJuIGRvX2FyX2VtdWxfYXBwZW5kIChhZnRlcl9iZmQsIG5ld19iZmQsIHZlcmJv c2UsIGZsYXR0ZW4sIGNoZWNrX2FpeCk7CiB9CiAKIHN0YXRpYyBiZmRfYm9vbGVhbgotYXJf ZW11bF9haXhfcmVwbGFjZSAoYmZkICoqYWZ0ZXJfYmZkLCBjaGFyICpmaWxlX25hbWUsIGNv bnN0IGNoYXIgKnRhcmdldCwKK2FyX2VtdWxfYWl4X3JlcGxhY2UgKGJmZCAqKmFmdGVyX2Jm ZCwgYmZkICpuZXdfYmZkLAogCQkgICAgIGJmZF9ib29sZWFuIHZlcmJvc2UpCiB7Ci0gIGJm ZCAqbmV3X2JmZDsKLQotICBuZXdfYmZkID0gYmZkX29wZW5yIChmaWxlX25hbWUsIHRhcmdl dCk7Ci0gIEFSX0VNVUxfRUxFTUVOVF9DSEVDSyAobmV3X2JmZCwgZmlsZV9uYW1lKTsKLQog ICBpZiAoIWNoZWNrX2FpeCAobmV3X2JmZCkpCiAgICAgcmV0dXJuIEZBTFNFOwogCi0gIEFS X0VNVUxfUkVQTEFDRV9QUklOVF9WRVJCT1NFICh2ZXJib3NlLCBmaWxlX25hbWUpOworICBB Ul9FTVVMX1JFUExBQ0VfUFJJTlRfVkVSQk9TRSAodmVyYm9zZSwgYmZkX2dldF9maWxlbmFt ZSAobmV3X2JmZCkpOwogCiAgIG5ld19iZmQtPmFyY2hpdmVfbmV4dCA9ICphZnRlcl9iZmQ7 CiAgICphZnRlcl9iZmQgPSBuZXdfYmZkOwpkaWZmIC0tZ2l0IGEvYmludXRpbHMvdGVzdHN1 aXRlL2JpbnV0aWxzLWFsbC9hci5leHAgYi9iaW51dGlscy90ZXN0c3VpdGUvYmludXRpbHMt YWxsL2FyLmV4cAppbmRleCA1YTlkMjdjNmQwLi4yNzNhMGEzOTA5IDEwMDY0NAotLS0gYS9i aW51dGlscy90ZXN0c3VpdGUvYmludXRpbHMtYWxsL2FyLmV4cAorKysgYi9iaW51dGlscy90 ZXN0c3VpdGUvYmludXRpbHMtYWxsL2FyLmV4cApAQCAtNzE1LDYgKzcxNSw0NiBAQCBwcm9j IG1hbnlfZmlsZXMgeyB9IHsKICAgICBwYXNzICR0ZXN0bmFtZQogfQogCitwcm9jIHRlc3Rf YWRkX2RlcGVuZGVuY2llcyB7IH0geworICAgIGdsb2JhbCBBUgorICAgIGdsb2JhbCBBUwor ICAgIGdsb2JhbCBzcmNkaXIKKyAgICBnbG9iYWwgc3ViZGlyCisgICAgZ2xvYmFsIG9iagor CisgICAgc2V0IHRlc3RuYW1lICJhciBhZGRpbmcgbGlicmFyeSBkZXBlbmRlbmNpZXMiCisK KyAgICBpZiAhW2JpbnV0aWxzX2Fzc2VtYmxlICRzcmNkaXIvJHN1YmRpci9iaW50ZXN0LnMg dG1wZGlyL2JpbnRlc3QuJHtvYmp9XSB7CisJdW5yZXNvbHZlZCAkdGVzdG5hbWUKKwlyZXR1 cm4KKyAgICB9CisKKyAgICBpZiBbaXNfcmVtb3RlIGhvc3RdIHsKKwlzZXQgYXJjaGl2ZSBh cnRlc3QuYQorCXNldCBvYmpmaWxlIFtyZW1vdGVfZG93bmxvYWQgaG9zdCB0bXBkaXIvYmlu dGVzdC4ke29ian1dCisJcmVtb3RlX2ZpbGUgaG9zdCBkZWxldGUgJGFyY2hpdmUKKyAgICB9 IGVsc2UgeworCXNldCBhcmNoaXZlIHRtcGRpci9hcnRlc3QuYQorCXNldCBvYmpmaWxlIHRt cGRpci9iaW50ZXN0LiR7b2JqfQorICAgIH0KKworICAgIHJlbW90ZV9maWxlIGJ1aWxkIGRl bGV0ZSB0bXBkaXIvYXJ0ZXN0LmEKKworICAgIHNldCBnb3QgW2JpbnV0aWxzX3J1biAkQVIg Ii1yIC1jICRhcmNoaXZlIC0tcmVjb3JkLWxpYmRlcHMgL2Zvby9iYXIgJHtvYmpmaWxlfSJd CisgICAgaWYgIVtzdHJpbmcgbWF0Y2ggIiIgJGdvdF0geworCWZhaWwgJHRlc3RuYW1lCisJ cmV0dXJuCisgICAgfQorCisgICAgc2V0IGdvdCBbYmludXRpbHNfcnVuICRBUiAiLXQgJGFy Y2hpdmUiXQorICAgIGlmICFbc3RyaW5nIG1hdGNoICIqYmludGVzdC4ke29ian0NX18uTElC REVQKiIgJGdvdF0geworCWZhaWwgJHRlc3RuYW1lCisJcmV0dXJuCisgICAgfQorCisgICAg cGFzcyAkdGVzdG5hbWUKK30KKwogIyBSdW4gdGhlIHRlc3RzLgogCiAjIE9ubHkgcnVuIHRo ZSBiZmR0ZXN0IGNoZWNrcyBpZiB0aGUgcHJvZ3JhbXMgZXhpc3QuICBTaW5jZSB0aGVzZQpA QCAtNzQzLDYgKzc4Myw3IEBAIG1vdmVfYW5fZWxlbWVudAogZW1wdHlfYXJjaGl2ZQogZXh0 cmFjdF9hbl9lbGVtZW50CiBtYW55X2ZpbGVzCit0ZXN0X2FkZF9kZXBlbmRlbmNpZXMKIAog aWYgeyBbaXNfZWxmX2Zvcm1hdF0gJiYgW3N1cHBvcnRzX2dudV91bmlxdWVdIH0gewogICAg IHVuaXF1ZV9zeW1ib2wKLS0gCjIuMjAuMQoK --------------C8D5A67038F6BDCC8A0B29BA--