From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 25321 invoked by alias); 16 Jun 2009 01:29:56 -0000 Received: (qmail 25306 invoked by uid 22791); 16 Jun 2009 01:29:54 -0000 X-SWARE-Spam-Status: No, hits=-0.5 required=5.0 tests=AWL,BAYES_50,SARE_MSGID_LONG40,SPF_PASS X-Spam-Check-By: sourceware.org Received: from smtp-out.google.com (HELO smtp-out.google.com) (216.239.45.13) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Tue, 16 Jun 2009 01:29:45 +0000 Received: from wpaz21.hot.corp.google.com (wpaz21.hot.corp.google.com [172.24.198.85]) by smtp-out.google.com with ESMTP id n5G1Th0Q022338 for ; Mon, 15 Jun 2009 18:29:43 -0700 Received: from qw-out-2122.google.com (qwh8.prod.google.com [10.241.194.200]) by wpaz21.hot.corp.google.com with ESMTP id n5G1TZhX009034 for ; Mon, 15 Jun 2009 18:29:41 -0700 Received: by qw-out-2122.google.com with SMTP id 8so2113511qwh.63 for ; Mon, 15 Jun 2009 18:29:40 -0700 (PDT) MIME-Version: 1.0 Received: by 10.229.80.14 with SMTP id r14mr1410742qck.100.1245115780634; Mon, 15 Jun 2009 18:29:40 -0700 (PDT) In-Reply-To: References: <8ac60eac0906081750i1faddef3pe35f4983bf5ee400@mail.gmail.com> Date: Tue, 16 Jun 2009 01:29:00 -0000 Message-ID: <8ac60eac0906151829i496768d4pf633e13421f37b59@mail.gmail.com> Subject: Re: [patch] Eliminate quadratic slow-down on number of solibs (take 2). From: Paul Pluzhnikov To: Tom Tromey Cc: gdb-patches@sourceware.org Content-Type: multipart/mixed; boundary=001636426c91cf1954046c6d1bc1 X-System-Of-Record: true X-IsSubscribed: yes Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org X-SW-Source: 2009-06/txt/msg00401.txt.bz2 --001636426c91cf1954046c6d1bc1 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Content-length: 1170 On Mon, Jun 15, 2009 at 3:20 PM, Tom Tromey wrote: > I'd be happier with a new argument, or changing the name and use of > the 'from_tty' argument -- e.g., adding a new enum and expanding this > argument to be flags-for-the-call. I selected the latter option. Attached patch tested on Linux/x86_64 with no regressions. Thanks, -- Paul Pluzhnikov 2009-06-15 Paul Pluzhnikov * solib.c (symbol_add_stub): New FLAGS parameter. (solib_read_symbols): FROM_TTY -> FLAGS, call symbol_add_stub directly. (solib_add): Defer breakpoint_re_set until after all solibs. * bsd-uthread.c (bsd_uthread_solib_loaded): Adjust. * rs6000-nat.c (objfile_symbol_add): Adjust. * symfile.c (syms_from_objfile): Merge parameters into ADD_FLAGS. (new_symfile_objfile): Likewise. (symbol_file_add_with_addrs_or_offsets): Likewise. (symbol_file_add_from_bfd): Likewise. (symbol_file_add): Likewise. * symfile.h (enum symfile_add_flags): New. Adjust prototypes. * symfile-mem.c (symbol_file_add_from_memory): Adjust. * windows-nat.c (safe_symbol_file_add_stub): Adjust. * machoread.c (macho_oso_symfile, macho_symfile_read): Adjust. --001636426c91cf1954046c6d1bc1 Content-Type: text/plain; charset=US-ASCII; name="gdb-breakpoint-20090615.txt" Content-Disposition: attachment; filename="gdb-breakpoint-20090615.txt" Content-Transfer-Encoding: base64 X-Attachment-Id: f_fvzxqo590 Content-length: 24539 SW5kZXg6IHNvbGliLmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmls ZTogL2N2cy9zcmMvc3JjL2dkYi9zb2xpYi5jLHYKcmV0cmlldmluZyByZXZp c2lvbiAxLjExOQpkaWZmIC11IC1wIC11IC1yMS4xMTkgc29saWIuYwotLS0g c29saWIuYwkzIEp1biAyMDA5IDE4OjUwOjM2IC0wMDAwCTEuMTE5CisrKyBz b2xpYi5jCTE2IEp1biAyMDA5IDAxOjE0OjM3IC0wMDAwCkBAIC00NDgsMzkg KzQ0OCwzNyBAQCBtYXN0ZXJfc29fbGlzdCAodm9pZCkKICAgcmV0dXJuIHNv X2xpc3RfaGVhZDsKIH0KIAotCi0vKiBBIHNtYWxsIHN0dWIgdG8gZ2V0IHVz IHBhc3QgdGhlIGFyZy1wYXNzaW5nIHBpbmhvbGUgb2YgY2F0Y2hfZXJyb3Jz LiAgKi8KLQotc3RhdGljIGludAotc3ltYm9sX2FkZF9zdHViICh2b2lkICph cmcpCitzdGF0aWMgdm9pZAorc3ltYm9sX2FkZF9zdHViIChzdHJ1Y3Qgc29f bGlzdCAqc28sIGludCBmbGFncykKIHsKLSAgc3RydWN0IHNvX2xpc3QgKnNv ID0gKHN0cnVjdCBzb19saXN0ICopIGFyZzsgIC8qIGNhdGNoX2VycnMgYm9n b24gKi8KICAgc3RydWN0IHNlY3Rpb25fYWRkcl9pbmZvICpzYXA7CiAKICAg LyogSGF2ZSB3ZSBhbHJlYWR5IGxvYWRlZCB0aGlzIHNoYXJlZCBvYmplY3Q/ ICAqLwogICBBTExfT0JKRklMRVMgKHNvLT5vYmpmaWxlKQogICAgIHsKICAg ICAgIGlmIChzdHJjbXAgKHNvLT5vYmpmaWxlLT5uYW1lLCBzby0+c29fbmFt ZSkgPT0gMCkKLQlyZXR1cm4gMTsKKwlyZXR1cm47CiAgICAgfQogCiAgIHNh cCA9IGJ1aWxkX3NlY3Rpb25fYWRkcl9pbmZvX2Zyb21fc2VjdGlvbl90YWJs ZSAoc28tPnNlY3Rpb25zLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHNvLT5zZWN0aW9uc19lbmQpOwog Ci0gIHNvLT5vYmpmaWxlID0gc3ltYm9sX2ZpbGVfYWRkX2Zyb21fYmZkIChz by0+YWJmZCwgc28tPmZyb21fdHR5LAotCQkJCQkgIHNhcCwgMCwgT0JKRl9T SEFSRUQgfCBPQkpGX0tFRVBCRkQpOworICBzby0+b2JqZmlsZSA9IHN5bWJv bF9maWxlX2FkZF9mcm9tX2JmZCAoc28tPmFiZmQsIGZsYWdzLAorCQkJCQkg IHNhcCwgT0JKRl9TSEFSRUQgfCBPQkpGX0tFRVBCRkQpOwogICBmcmVlX3Nl Y3Rpb25fYWRkcl9pbmZvIChzYXApOwogCi0gIHJldHVybiAoMSk7CisgIHJl dHVybjsKIH0KIAotLyogUmVhZCBpbiBzeW1ib2xzIGZvciBzaGFyZWQgb2Jq ZWN0IFNPLiAgSWYgRlJPTV9UVFkgaXMgbm9uLXplcm8sIGJlCi0gICBjaGF0 dHkgYWJvdXQgaXQuICBSZXR1cm4gbm9uLXplcm8gaWYgYW55IHN5bWJvbHMg d2VyZSBhY3R1YWxseQorLyogUmVhZCBpbiBzeW1ib2xzIGZvciBzaGFyZWQg b2JqZWN0IFNPLiAgSWYgU1lNRklMRV9WRVJCT1NFIGlzIHNldCBpbiBGTEFH UywKKyAgIGJlIGNoYXR0eSBhYm91dCBpdC4gIFJldHVybiBub24temVybyBp ZiBhbnkgc3ltYm9scyB3ZXJlIGFjdHVhbGx5CiAgICBsb2FkZWQuICAqLwog CiBpbnQKLXNvbGliX3JlYWRfc3ltYm9scyAoc3RydWN0IHNvX2xpc3QgKnNv LCBpbnQgZnJvbV90dHkpCitzb2xpYl9yZWFkX3N5bWJvbHMgKHN0cnVjdCBz b19saXN0ICpzbywgaW50IGZsYWdzKQogeworICBjb25zdCBpbnQgZnJvbV90 dHkgPSBmbGFncyAmIFNZTUZJTEVfVkVSQk9TRTsKKwogICBpZiAoc28tPnN5 bWJvbHNfbG9hZGVkKQogICAgIHsKICAgICAgIGlmIChmcm9tX3R0eSkKQEAg LTQ5MywxNSArNDkxLDIxIEBAIHNvbGliX3JlYWRfc3ltYm9scyAoc3RydWN0 IHNvX2xpc3QgKnNvLCAKICAgICB9CiAgIGVsc2UKICAgICB7Ci0gICAgICBp ZiAoY2F0Y2hfZXJyb3JzIChzeW1ib2xfYWRkX3N0dWIsIHNvLAotCQkJIkVy cm9yIHdoaWxlIHJlYWRpbmcgc2hhcmVkIGxpYnJhcnkgc3ltYm9sczpcbiIs Ci0JCQlSRVRVUk5fTUFTS19BTEwpKQotCXsKLQkgIGlmIChmcm9tX3R0eSAm JiBwcmludF9zeW1ib2xfbG9hZGluZykKLQkgICAgcHJpbnRmX3VuZmlsdGVy ZWQgKF8oIkxvYWRlZCBzeW1ib2xzIGZvciAlc1xuIiksIHNvLT5zb19uYW1l KTsKLQkgIHNvLT5zeW1ib2xzX2xvYWRlZCA9IDE7Ci0JICByZXR1cm4gMTsK LQl9CisgICAgICB2b2xhdGlsZSBzdHJ1Y3QgZ2RiX2V4Y2VwdGlvbiBleGNl cHRpb247CisgICAgICBUUllfQ0FUQ0ggKGV4Y2VwdGlvbiwgUkVUVVJOX01B U0tfQUxMKQorICAgICAgICB7CisgICAgICAgICAgc3ltYm9sX2FkZF9zdHVi IChzbywgZmxhZ3MpOworICAgICAgICB9CisgICAgICBpZiAoZXhjZXB0aW9u LnJlYXNvbiAhPSAwKQorICAgICAgICB7CisgICAgICAgICAgZXhjZXB0aW9u X2ZwcmludGYgKGdkYl9zdGRlcnIsIGV4Y2VwdGlvbiwKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIkVycm9yIHdoaWxlIHJlYWRpbmcgc2hhcmVk IGxpYnJhcnkgc3ltYm9sczpcbiIpOworICAgICAgICAgIHJldHVybiAwOwor ICAgICAgICB9CisgICAgICBpZiAoZnJvbV90dHkgJiYgcHJpbnRfc3ltYm9s X2xvYWRpbmcpCisgICAgICAgIHByaW50Zl91bmZpbHRlcmVkIChfKCJMb2Fk ZWQgc3ltYm9scyBmb3IgJXNcbiIpLCBzby0+c29fbmFtZSk7CisgICAgICBz by0+c3ltYm9sc19sb2FkZWQgPSAxOworICAgICAgcmV0dXJuIDE7CiAgICAg fQogCiAgIHJldHVybiAwOwpAQCAtNzM2LDYgKzc0MCw4IEBAIHNvbGliX2Fk ZCAoY2hhciAqcGF0dGVybiwgaW50IGZyb21fdHR5LCAKICAgewogICAgIGlu dCBhbnlfbWF0Y2hlcyA9IDA7CiAgICAgaW50IGxvYWRlZF9hbnlfc3ltYm9s cyA9IDA7CisgICAgY29uc3QgaW50IGZsYWdzID0KKyAgICAgICAgU1lNRklM RV9ERUZFUl9CUF9SRVNFVCB8IChmcm9tX3R0eSA/IFNZTUZJTEVfVkVSQk9T RSA6IDApOwogCiAgICAgZm9yIChnZGIgPSBzb19saXN0X2hlYWQ7IGdkYjsg Z2RiID0gZ2RiLT5uZXh0KQogICAgICAgaWYgKCEgcGF0dGVybiB8fCByZV9l eGVjIChnZGItPnNvX25hbWUpKQpAQCAtNzQ5LDEwICs3NTUsMTMgQEAgc29s aWJfYWRkIChjaGFyICpwYXR0ZXJuLCBpbnQgZnJvbV90dHksIAogICAgICAg ICAgICAgKHJlYWRzeW1zIHx8IGxpYnB0aHJlYWRfc29saWJfcCAoZ2RiKSk7 CiAKIAkgIGFueV9tYXRjaGVzID0gMTsKLQkgIGlmIChhZGRfdGhpc19zb2xp YiAmJiBzb2xpYl9yZWFkX3N5bWJvbHMgKGdkYiwgZnJvbV90dHkpKQorCSAg aWYgKGFkZF90aGlzX3NvbGliICYmIHNvbGliX3JlYWRfc3ltYm9scyAoZ2Ri LCBmbGFncykpCiAJICAgIGxvYWRlZF9hbnlfc3ltYm9scyA9IDE7CiAJfQog CisgICAgaWYgKGxvYWRlZF9hbnlfc3ltYm9scykKKyAgICAgIGJyZWFrcG9p bnRfcmVfc2V0ICgpOworCiAgICAgaWYgKGZyb21fdHR5ICYmIHBhdHRlcm4g JiYgISBhbnlfbWF0Y2hlcykKICAgICAgIHByaW50Zl91bmZpbHRlcmVkCiAJ KCJObyBsb2FkZWQgc2hhcmVkIGxpYnJhcmllcyBtYXRjaCB0aGUgcGF0dGVy biBgJXMnLlxuIiwgcGF0dGVybik7CkluZGV4OiBic2QtdXRocmVhZC5jCj09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvc3JjL3NyYy9n ZGIvYnNkLXV0aHJlYWQuYyx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS4yNApk aWZmIC11IC1wIC11IC1yMS4yNCBic2QtdXRocmVhZC5jCi0tLSBic2QtdXRo cmVhZC5jCTIxIE1heSAyMDA5IDE1OjQ4OjQxIC0wMDAwCTEuMjQKKysrIGJz ZC11dGhyZWFkLmMJMTYgSnVuIDIwMDkgMDE6MTQ6MzcgLTAwMDAKQEAgLTI0 OCw3ICsyNDgsNyBAQCBic2RfdXRocmVhZF9zb2xpYl9sb2FkZWQgKHN0cnVj dCBzb19saXN0CiAgICAgewogICAgICAgaWYgKHN0cm5jbXAgKHNvLT5zb19v cmlnaW5hbF9uYW1lLCAqbmFtZXMsIHN0cmxlbiAoKm5hbWVzKSkgPT0gMCkK IAl7Ci0JICBzb2xpYl9yZWFkX3N5bWJvbHMgKHNvLCBzby0+ZnJvbV90dHkp OworCSAgc29saWJfcmVhZF9zeW1ib2xzIChzbywgc28tPmZyb21fdHR5ID8g U1lNRklMRV9WRVJCT1NFIDogMCk7CiAKIAkgIGlmIChic2RfdXRocmVhZF9h Y3RpdmF0ZSAoc28tPm9iamZpbGUpKQogCSAgICB7CkluZGV4OiByczYwMDAt bmF0LmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9z cmMvc3JjL2dkYi9yczYwMDAtbmF0LmMsdgpyZXRyaWV2aW5nIHJldmlzaW9u IDEuOTMKZGlmZiAtdSAtcCAtdSAtcjEuOTMgcnM2MDAwLW5hdC5jCi0tLSBy czYwMDAtbmF0LmMJMyBKdW4gMjAwOSAxODo1MDozNiAtMDAwMAkxLjkzCisr KyByczYwMDAtbmF0LmMJMTYgSnVuIDIwMDkgMDE6MTQ6MzcgLTAwMDAKQEAg LTY5MSw4ICs2OTEsOCBAQCBvYmpmaWxlX3N5bWJvbF9hZGQgKHZvaWQgKmFy ZykKIHsKICAgc3RydWN0IG9iamZpbGUgKm9iaiA9IChzdHJ1Y3Qgb2JqZmls ZSAqKSBhcmc7CiAKLSAgc3ltc19mcm9tX29iamZpbGUgKG9iaiwgTlVMTCwg MCwgMCwgMCwgMCk7Ci0gIG5ld19zeW1maWxlX29iamZpbGUgKG9iaiwgMCwg MCk7CisgIHN5bXNfZnJvbV9vYmpmaWxlIChvYmosIE5VTEwsIDAsIDAsIDAp OworICBuZXdfc3ltZmlsZV9vYmpmaWxlIChvYmosIDApOwogICByZXR1cm4g MTsKIH0KIApJbmRleDogc3ltZmlsZS5jCj09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0KUkNTIGZpbGU6IC9jdnMvc3JjL3NyYy9nZGIvc3ltZmlsZS5jLHYKcmV0 cmlldmluZyByZXZpc2lvbiAxLjIzMApkaWZmIC11IC1wIC11IC1yMS4yMzAg c3ltZmlsZS5jCi0tLSBzeW1maWxlLmMJNCBKdW4gMjAwOSAwMDo1MDoxNiAt MDAwMAkxLjIzMAorKysgc3ltZmlsZS5jCTE2IEp1biAyMDA5IDAxOjE0OjM3 IC0wMDAwCkBAIC03NDAsMjIgKzc0MCwyMCBAQCBkZWZhdWx0X3N5bWZpbGVf c2VnbWVudHMgKGJmZCAqYWJmZCkKICAgIGxpc3QgYW55IG1vcmU7IGFsbCB3 ZSBoYXZlIGlzIHRoZSBzZWN0aW9uIG9mZnNldCB0YWJsZS4pICBJZgogICAg T0ZGU0VUUyBpcyBub24temVybywgQUREUlMgbXVzdCBiZSB6ZXJvLgogCi0g ICBNQUlOTElORSBpcyBub256ZXJvIGlmIHRoaXMgaXMgdGhlIG1haW4gc3lt Ym9sIGZpbGUsIG9yIHplcm8gaWYKLSAgIGl0J3MgYW4gZXh0cmEgc3ltYm9s IGZpbGUgc3VjaCBhcyBkeW5hbWljYWxseSBsb2FkZWQgY29kZS4KLQotICAg VkVSQk8gaXMgbm9uemVybyBpZiB0aGUgY2FsbGVyIGhhcyBwcmludGVkIGEg dmVyYm9zZSBtZXNzYWdlIGFib3V0Ci0gICB0aGUgc3ltYm9sIHJlYWRpbmcg KGFuZCBjb21wbGFpbnRzIGNhbiBiZSBtb3JlIHRlcnNlIGFib3V0IGl0KS4g ICovCisgICBBRERfRkxBR1MgZW5jb2RlcyB2ZXJib3NpdHkgbGV2ZWwsIHdo ZXRoZXIgdGhpcyBpcyBtYWluIHN5bWJvbCBvcgorICAgYW4gZXh0cmEgc3lt Ym9sIGZpbGUgc3VjaCBhcyBkeW5hbWljYWxseSBsb2FkZWQgY29kZSwgYW5k IHdldGhlcgorICAgYnJlYWtwb2ludCByZXNldCBzaG91bGQgYmUgZGVmZXJy ZWQuICAqLwogCiB2b2lkCiBzeW1zX2Zyb21fb2JqZmlsZSAoc3RydWN0IG9i amZpbGUgKm9iamZpbGUsCiAgICAgICAgICAgICAgICAgICAgc3RydWN0IHNl Y3Rpb25fYWRkcl9pbmZvICphZGRycywKICAgICAgICAgICAgICAgICAgICBz dHJ1Y3Qgc2VjdGlvbl9vZmZzZXRzICpvZmZzZXRzLAogICAgICAgICAgICAg ICAgICAgIGludCBudW1fb2Zmc2V0cywKLQkJICAgaW50IG1haW5saW5lLAot ICAgICAgICAgICAgICAgICAgIGludCB2ZXJibykKKwkJICAgaW50IGFkZF9m bGFncykKIHsKICAgc3RydWN0IHNlY3Rpb25fYWRkcl9pbmZvICpsb2NhbF9h ZGRyID0gTlVMTDsKICAgc3RydWN0IGNsZWFudXAgKm9sZF9jaGFpbjsKKyAg Y29uc3QgaW50IG1haW5saW5lID0gYWRkX2ZsYWdzICYgU1lNRklMRV9NQUlO TElORTsKIAogICBnZGJfYXNzZXJ0ICghIChhZGRycyAmJiBvZmZzZXRzKSk7 CiAKQEAgLTg3NSw3ICs4NzMsNyBAQCBzeW1zX2Zyb21fb2JqZmlsZSAoc3Ry dWN0IG9iamZpbGUgKm9iamZpCiAgICAgIGluaXRpYWwgc3ltYm9sIHJlYWRp bmcgZm9yIHRoaXMgZmlsZS4gKi8KIAogICAoKm9iamZpbGUtPnNmLT5zeW1f aW5pdCkgKG9iamZpbGUpOwotICBjbGVhcl9jb21wbGFpbnRzICgmc3ltZmls ZV9jb21wbGFpbnRzLCAxLCB2ZXJibyk7CisgIGNsZWFyX2NvbXBsYWludHMg KCZzeW1maWxlX2NvbXBsYWludHMsIDEsIGFkZF9mbGFncyAmIFNZTUZJTEVf VkVSQk9TRSk7CiAKICAgaWYgKGFkZHJzKQogICAgICgqb2JqZmlsZS0+c2Yt PnN5bV9vZmZzZXRzKSAob2JqZmlsZSwgYWRkcnMpOwpAQCAtOTA2LDI2ICs5 MDQsMjYgQEAgc3ltc19mcm9tX29iamZpbGUgKHN0cnVjdCBvYmpmaWxlICpv YmpmaQogICAgb2JqZmlsZS4gKi8KIAogdm9pZAotbmV3X3N5bWZpbGVfb2Jq ZmlsZSAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsIGludCBtYWlubGluZSwg aW50IHZlcmJvKQorbmV3X3N5bWZpbGVfb2JqZmlsZSAoc3RydWN0IG9iamZp bGUgKm9iamZpbGUsIGludCBhZGRfZmxhZ3MpCiB7CiAKICAgLyogSWYgdGhp cyBpcyB0aGUgbWFpbiBzeW1ib2wgZmlsZSB3ZSBoYXZlIHRvIGNsZWFuIHVw IGFsbCB1c2VycyBvZiB0aGUKICAgICAgb2xkIG1haW4gc3ltYm9sIGZpbGUu IE90aGVyd2lzZSBpdCBpcyBzdWZmaWNpZW50IHRvIGZpeHVwIGFsbCB0aGUK ICAgICAgYnJlYWtwb2ludHMgdGhhdCBtYXkgaGF2ZSBiZWVuIHJlZGVmaW5l ZCBieSB0aGlzIHN5bWJvbCBmaWxlLiAgKi8KLSAgaWYgKG1haW5saW5lKQor ICBpZiAoYWRkX2ZsYWdzICYgU1lNRklMRV9NQUlOTElORSkKICAgICB7CiAg ICAgICAvKiBPSywgbWFrZSBpdCB0aGUgInJlYWwiIHN5bWJvbCBmaWxlLiAg Ki8KICAgICAgIHN5bWZpbGVfb2JqZmlsZSA9IG9iamZpbGU7CiAKICAgICAg IGNsZWFyX3N5bXRhYl91c2VycyAoKTsKICAgICB9Ci0gIGVsc2UKKyAgZWxz ZSBpZiAoKGFkZF9mbGFncyAmIFNZTUZJTEVfREVGRVJfQlBfUkVTRVQpID09 IDApCiAgICAgewogICAgICAgYnJlYWtwb2ludF9yZV9zZXRfb2JqZmlsZSAo b2JqZmlsZSk7CiAgICAgfQogCiAgIC8qIFdlJ3JlIGRvbmUgcmVhZGluZyB0 aGUgc3ltYm9sIGZpbGU7IGZpbmlzaCBvZmYgY29tcGxhaW50cy4gICovCi0g IGNsZWFyX2NvbXBsYWludHMgKCZzeW1maWxlX2NvbXBsYWludHMsIDAsIHZl cmJvKTsKKyAgY2xlYXJfY29tcGxhaW50cyAoJnN5bWZpbGVfY29tcGxhaW50 cywgMCwgYWRkX2ZsYWdzICYgU1lNRklMRV9WRVJCT1NFKTsKIH0KIAogLyog UHJvY2VzcyBhIHN5bWJvbCBmaWxlLCBhcyBlaXRoZXIgdGhlIG1haW4gZmls ZSBvciBhcyBhIGR5bmFtaWNhbGx5CkBAIC05MzQsMjMgKzkzMiwyMyBAQCBu ZXdfc3ltZmlsZV9vYmpmaWxlIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqCiAgICBB QkZEIGlzIGEgQkZEIGFscmVhZHkgb3BlbiBvbiB0aGUgZmlsZSwgYXMgZnJv bSBzeW1maWxlX2JmZF9vcGVuLgogICAgVGhpcyBCRkQgd2lsbCBiZSBjbG9z ZWQgb24gZXJyb3IsIGFuZCBpcyBhbHdheXMgY29uc3VtZWQgYnkgdGhpcyBm dW5jdGlvbi4KIAotICAgRlJPTV9UVFkgc2F5cyBob3cgdmVyYm9zZSB0byBi ZS4KLQotICAgTUFJTkxJTkUgc3BlY2lmaWVzIHdoZXRoZXIgdGhpcyBpcyB0 aGUgbWFpbiBzeW1ib2wgZmlsZSwgb3Igd2hldGhlcgotICAgaXQncyBhbiBl eHRyYSBzeW1ib2wgZmlsZSBzdWNoIGFzIGR5bmFtaWNhbGx5IGxvYWRlZCBj b2RlLgorICAgQUREX0ZMQUdTIGVuY29kZXMgdmVyYm9zaXR5LCB3aGV0aGVy IHRoaXMgaXMgbWFpbiBzeW1ib2wgZmlsZSBvcgorICAgZXh0cmEsIHN1Y2gg YXMgZHluYW1pY2FsbHkgbG9hZGVkIGNvZGUsIGFuZCB3aGF0IHRvIGRvIHdp dGggYnJlYWtwb2lucy4KIAogICAgQUREUlMsIE9GRlNFVFMsIGFuZCBOVU1f T0ZGU0VUUyBhcmUgYXMgZGVzY3JpYmVkIGZvcgotICAgc3ltc19mcm9tX29i amZpbGUsIGFib3ZlLiAgQUREUlMgaXMgaWdub3JlZCB3aGVuIE1BSU5MSU5F IGlzCi0gICBub24temVyby4KKyAgIHN5bXNfZnJvbV9vYmpmaWxlLCBhYm92 ZS4KKyAgIEFERFJTIGlzIGlnbm9yZWQgd2hlbiBTWU1GSUxFX01BSU5MSU5F IGJpdCBpcyBzZXQgaW4gQUREX0ZMQUdTLgogCiAgICBVcG9uIHN1Y2Nlc3Ms IHJldHVybnMgYSBwb2ludGVyIHRvIHRoZSBvYmpmaWxlIHRoYXQgd2FzIGFk ZGVkLgogICAgVXBvbiBmYWlsdXJlLCBqdW1wcyBiYWNrIHRvIGNvbW1hbmQg bGV2ZWwgKG5ldmVyIHJldHVybnMpLiAqLworCiBzdGF0aWMgc3RydWN0IG9i amZpbGUgKgotc3ltYm9sX2ZpbGVfYWRkX3dpdGhfYWRkcnNfb3Jfb2Zmc2V0 cyAoYmZkICphYmZkLCBpbnQgZnJvbV90dHksCitzeW1ib2xfZmlsZV9hZGRf d2l0aF9hZGRyc19vcl9vZmZzZXRzIChiZmQgKmFiZmQsCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgYWRkX2ZsYWdzLAog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0 IHNlY3Rpb25fYWRkcl9pbmZvICphZGRycywKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBzZWN0aW9uX29mZnNldHMg Km9mZnNldHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBpbnQgbnVtX29mZnNldHMsCi0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBpbnQgbWFpbmxpbmUsIGludCBmbGFncykKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBmbGFn cykKIHsKICAgc3RydWN0IG9iamZpbGUgKm9iamZpbGU7CiAgIHN0cnVjdCBw YXJ0aWFsX3N5bXRhYiAqcHN5bXRhYjsKQEAgLTk1OCw2ICs5NTYsNyBAQCBz eW1ib2xfZmlsZV9hZGRfd2l0aF9hZGRyc19vcl9vZmZzZXRzIChiCiAgIHN0 cnVjdCBzZWN0aW9uX2FkZHJfaW5mbyAqb3JpZ19hZGRycyA9IE5VTEw7CiAg IHN0cnVjdCBjbGVhbnVwICpteV9jbGVhbnVwczsKICAgY29uc3QgY2hhciAq bmFtZSA9IGJmZF9nZXRfZmlsZW5hbWUgKGFiZmQpOworICBjb25zdCBpbnQg ZnJvbV90dHkgPSBhZGRfZmxhZ3MgJiBTWU1GSUxFX1ZFUkJPU0U7CiAKICAg bXlfY2xlYW51cHMgPSBtYWtlX2NsZWFudXBfYmZkX2Nsb3NlIChhYmZkKTsK IApAQCAtOTY1LDcgKzk2NCw3IEBAIHN5bWJvbF9maWxlX2FkZF93aXRoX2Fk ZHJzX29yX29mZnNldHMgKGIKICAgICAgaW50ZXJhY3RpdmVseSB3aXBpbmcg b3V0IGFueSBleGlzdGluZyBzeW1ib2xzLiAgKi8KIAogICBpZiAoKGhhdmVf ZnVsbF9zeW1ib2xzICgpIHx8IGhhdmVfcGFydGlhbF9zeW1ib2xzICgpKQot ICAgICAgJiYgbWFpbmxpbmUKKyAgICAgICYmIChhZGRfZmxhZ3MgJiBTWU1G SUxFX01BSU5MSU5FKQogICAgICAgJiYgZnJvbV90dHkKICAgICAgICYmICFx dWVyeSAoXygiTG9hZCBuZXcgc3ltYm9sIHRhYmxlIGZyb20gXCIlc1wiPyAi KSwgbmFtZSkpCiAgICAgZXJyb3IgKF8oIk5vdCBjb25maXJtZWQuIikpOwpA QCAtOTk3LDcgKzk5Niw3IEBAIHN5bWJvbF9maWxlX2FkZF93aXRoX2FkZHJz X29yX29mZnNldHMgKGIKIAl9CiAgICAgfQogICBzeW1zX2Zyb21fb2JqZmls ZSAob2JqZmlsZSwgYWRkcnMsIG9mZnNldHMsIG51bV9vZmZzZXRzLAotCQkg ICAgIG1haW5saW5lLCBmcm9tX3R0eSk7CisJCSAgICAgYWRkX2ZsYWdzKTsK IAogICAvKiBXZSBub3cgaGF2ZSBhdCBsZWFzdCBhIHBhcnRpYWwgc3ltYm9s IHRhYmxlLiAgQ2hlY2sgdG8gc2VlIGlmIHRoZQogICAgICB1c2VyIHJlcXVl c3RlZCB0aGF0IGFsbCBzeW1ib2xzIGJlIHJlYWQgb24gaW5pdGlhbCBhY2Nl c3MgdmlhIGVpdGhlcgpAQCAtMTAzMSwxMiArMTAzMCwxMiBAQCBzeW1ib2xf ZmlsZV9hZGRfd2l0aF9hZGRyc19vcl9vZmZzZXRzIChiCiAgICAgICBpZiAo YWRkcnMgIT0gTlVMTCkKIAl7CiAJICBvYmpmaWxlLT5zZXBhcmF0ZV9kZWJ1 Z19vYmpmaWxlCi0gICAgICAgICAgICA9IHN5bWJvbF9maWxlX2FkZCAoZGVi dWdmaWxlLCBmcm9tX3R0eSwgb3JpZ19hZGRycywgMCwgZmxhZ3MpOworICAg ICAgICAgICAgPSBzeW1ib2xfZmlsZV9hZGQgKGRlYnVnZmlsZSwgYWRkX2Zs YWdzLCBvcmlnX2FkZHJzLCBmbGFncyk7CiAJfQogICAgICAgZWxzZQogCXsK IAkgIG9iamZpbGUtPnNlcGFyYXRlX2RlYnVnX29iamZpbGUKLSAgICAgICAg ICAgID0gc3ltYm9sX2ZpbGVfYWRkIChkZWJ1Z2ZpbGUsIGZyb21fdHR5LCBO VUxMLCAwLCBmbGFncyk7CisgICAgICAgICAgICA9IHN5bWJvbF9maWxlX2Fk ZCAoZGVidWdmaWxlLCBhZGRfZmxhZ3MsIE5VTEwsIGZsYWdzKTsKIAl9CiAg ICAgICBvYmpmaWxlLT5zZXBhcmF0ZV9kZWJ1Z19vYmpmaWxlLT5zZXBhcmF0 ZV9kZWJ1Z19vYmpmaWxlX2JhY2tsaW5rCiAgICAgICAgID0gb2JqZmlsZTsK QEAgLTEwODEsNyArMTA4MCw3IEBAIHN5bWJvbF9maWxlX2FkZF93aXRoX2Fk ZHJzX29yX29mZnNldHMgKGIKICAgaWYgKG9iamZpbGUtPnNmID09IE5VTEwp CiAgICAgcmV0dXJuIG9iamZpbGU7CS8qIE5vIHN5bWJvbHMuICovCiAKLSAg bmV3X3N5bWZpbGVfb2JqZmlsZSAob2JqZmlsZSwgbWFpbmxpbmUsIGZyb21f dHR5KTsKKyAgbmV3X3N5bWZpbGVfb2JqZmlsZSAob2JqZmlsZSwgYWRkX2Zs YWdzKTsKIAogICBvYnNlcnZlcl9ub3RpZnlfbmV3X29iamZpbGUgKG9iamZp bGUpOwogCkBAIC0xMDk2LDEzICsxMDk1LDEyIEBAIHN5bWJvbF9maWxlX2Fk ZF93aXRoX2FkZHJzX29yX29mZnNldHMgKGIKICAgIFNlZSBzeW1ib2xfZmls ZV9hZGRfd2l0aF9hZGRyc19vcl9vZmZzZXRzJ3MgY29tbWVudHMgZm9yCiAg ICBkZXRhaWxzLiAgKi8KIHN0cnVjdCBvYmpmaWxlICoKLXN5bWJvbF9maWxl X2FkZF9mcm9tX2JmZCAoYmZkICphYmZkLCBpbnQgZnJvbV90dHksCitzeW1i b2xfZmlsZV9hZGRfZnJvbV9iZmQgKGJmZCAqYWJmZCwgaW50IGFkZF9mbGFn cywKICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHNlY3Rpb25f YWRkcl9pbmZvICphZGRycywKLSAgICAgICAgICAgICAgICAgICAgICAgICAg aW50IG1haW5saW5lLCBpbnQgZmxhZ3MpCisgICAgICAgICAgICAgICAgICAg ICAgICAgIGludCBmbGFncykKIHsKLSAgcmV0dXJuIHN5bWJvbF9maWxlX2Fk ZF93aXRoX2FkZHJzX29yX29mZnNldHMgKGFiZmQsCi0JCQkJCQlmcm9tX3R0 eSwgYWRkcnMsIDAsIDAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBtYWlubGluZSwgZmxhZ3MpOworICByZXR1 cm4gc3ltYm9sX2ZpbGVfYWRkX3dpdGhfYWRkcnNfb3Jfb2Zmc2V0cyAoYWJm ZCwgYWRkX2ZsYWdzLCBhZGRycywgMCwgMCwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsYWdzKTsKIH0KIAog CkBAIC0xMTEwLDExICsxMTA4LDExIEBAIHN5bWJvbF9maWxlX2FkZF9mcm9t X2JmZCAoYmZkICphYmZkLCBpbnQKICAgIGxvYWRlZCBmaWxlLiAgU2VlIHN5 bWJvbF9maWxlX2FkZF93aXRoX2FkZHJzX29yX29mZnNldHMncyBjb21tZW50 cwogICAgZm9yIGRldGFpbHMuICAqLwogc3RydWN0IG9iamZpbGUgKgotc3lt Ym9sX2ZpbGVfYWRkIChjaGFyICpuYW1lLCBpbnQgZnJvbV90dHksIHN0cnVj dCBzZWN0aW9uX2FkZHJfaW5mbyAqYWRkcnMsCi0JCSBpbnQgbWFpbmxpbmUs IGludCBmbGFncykKK3N5bWJvbF9maWxlX2FkZCAoY2hhciAqbmFtZSwgaW50 IGFkZF9mbGFncywgc3RydWN0IHNlY3Rpb25fYWRkcl9pbmZvICphZGRycywK KwkJIGludCBmbGFncykKIHsKLSAgcmV0dXJuIHN5bWJvbF9maWxlX2FkZF9m cm9tX2JmZCAoc3ltZmlsZV9iZmRfb3BlbiAobmFtZSksIGZyb21fdHR5LAot ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRycywgbWFp bmxpbmUsIGZsYWdzKTsKKyAgcmV0dXJuIHN5bWJvbF9maWxlX2FkZF9mcm9t X2JmZCAoc3ltZmlsZV9iZmRfb3BlbiAobmFtZSksIGFkZF9mbGFncywgYWRk cnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsYWdz KTsKIH0KIAogCkBAIC0xMTM1LDcgKzExMzMsOCBAQCBzeW1ib2xfZmlsZV9h ZGRfbWFpbiAoY2hhciAqYXJncywgaW50IGZyCiBzdGF0aWMgdm9pZAogc3lt Ym9sX2ZpbGVfYWRkX21haW5fMSAoY2hhciAqYXJncywgaW50IGZyb21fdHR5 LCBpbnQgZmxhZ3MpCiB7Ci0gIHN5bWJvbF9maWxlX2FkZCAoYXJncywgZnJv bV90dHksIE5VTEwsIDEsIGZsYWdzKTsKKyAgY29uc3QgaW50IGFkZF9mbGFn cyA9IFNZTUZJTEVfTUFJTkxJTkUgfCAoZnJvbV90dHkgPyBTWU1GSUxFX1ZF UkJPU0UgOiAwKTsKKyAgc3ltYm9sX2ZpbGVfYWRkIChhcmdzLCBhZGRfZmxh Z3MsIE5VTEwsIGZsYWdzKTsKIAogICAvKiBHZXR0aW5nIG5ldyBzeW1ib2xz IG1heSBjaGFuZ2Ugb3VyIG9waW5pb24gYWJvdXQKICAgICAgd2hhdCBpcyBm cmFtZWxlc3MuICAqLwpAQCAtMjIyNCw3ICsyMjIzLDggQEAgYWRkX3N5bWJv bF9maWxlX2NvbW1hbmQgKGNoYXIgKmFyZ3MsIGludAogICBpZiAoZnJvbV90 dHkgJiYgKCFxdWVyeSAoIiVzIiwgIiIpKSkKICAgICBlcnJvciAoXygiTm90 IGNvbmZpcm1lZC4iKSk7CiAKLSAgc3ltYm9sX2ZpbGVfYWRkIChmaWxlbmFt ZSwgZnJvbV90dHksIHNlY3Rpb25fYWRkcnMsIDAsIGZsYWdzKTsKKyAgc3lt Ym9sX2ZpbGVfYWRkIChmaWxlbmFtZSwgZnJvbV90dHkgPyBTWU1GSUxFX1ZF UkJPU0UgOiAwLAorICAgICAgICAgICAgICAgICAgIHNlY3Rpb25fYWRkcnMs IGZsYWdzKTsKIAogICAvKiBHZXR0aW5nIG5ldyBzeW1ib2xzIG1heSBjaGFu Z2Ugb3VyIG9waW5pb24gYWJvdXQgd2hhdCBpcwogICAgICBmcmFtZWxlc3Mu ICAqLwpAQCAtMjUwNiwxMCArMjUwNiw5IEBAIHJlcmVhZF9zZXBhcmF0ZV9z eW1ib2xzIChzdHJ1Y3Qgb2JqZmlsZSAKICAgICAgIG9iamZpbGUtPnNlcGFy YXRlX2RlYnVnX29iamZpbGUKICAgICAgICAgPSAoc3ltYm9sX2ZpbGVfYWRk X3dpdGhfYWRkcnNfb3Jfb2Zmc2V0cwogICAgICAgICAgICAoc3ltZmlsZV9i ZmRfb3BlbiAoZGVidWdfZmlsZSksCi0gICAgICAgICAgICBpbmZvX3ZlcmJv c2UsIC8qIGZyb21fdHR5OiBEb24ndCBvdmVycmlkZSB0aGUgZGVmYXVsdC4g Ki8KKyAgICAgICAgICAgIGluZm9fdmVyYm9zZSA/IFNZTUZJTEVfVkVSQk9T RSA6IDAsCiAgICAgICAgICAgICAwLCAvKiBObyBhZGRyIHRhYmxlLiAgKi8K ICAgICAgICAgICAgIG9iamZpbGUtPnNlY3Rpb25fb2Zmc2V0cywgb2JqZmls ZS0+bnVtX3NlY3Rpb25zLAotICAgICAgICAgICAgMCwgLyogTm90IG1haW5s aW5lLiAgU2VlIGNvbW1lbnRzIGFib3V0IHRoaXMgYWJvdmUuICAqLwogICAg ICAgICAgICAgb2JqZmlsZS0+ZmxhZ3MgJiAoT0JKRl9SRU9SREVSRUQgfCBP QkpGX1NIQVJFRCB8IE9CSkZfUkVBRE5PVwogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgfCBPQkpGX1VTRVJMT0FERUQpKSk7CiAgICAgICBvYmpm aWxlLT5zZXBhcmF0ZV9kZWJ1Z19vYmpmaWxlLT5zZXBhcmF0ZV9kZWJ1Z19v YmpmaWxlX2JhY2tsaW5rCkluZGV4OiBzeW1maWxlLmgKPT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9zcmMvc3JjL2dkYi9zeW1maWxl LmgsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuNTAKZGlmZiAtdSAtcCAtdSAt cjEuNTAgc3ltZmlsZS5oCi0tLSBzeW1maWxlLmgJMjIgTWF5IDIwMDkgMjM6 NDk6MTQgLTAwMDAJMS41MAorKysgc3ltZmlsZS5oCTE2IEp1biAyMDA5IDAx OjE0OjM3IC0wMDAwCkBAIC0yMTAsMTggKzIxMCwyNSBAQCBleHRlcm4gaW50 IGZyZWVfbmFtZWRfc3ltdGFicyAoY2hhciAqKTsKIAogZXh0ZXJuIHZvaWQg YWRkX3N5bXRhYl9mbnMgKHN0cnVjdCBzeW1fZm5zICopOwogCitlbnVtIHN5 bWZpbGVfYWRkX2ZsYWdzCisgIHsKKyAgICBTWU1GSUxFX1ZFUkJPU0UgPSAx IDw8IDEsCisgICAgU1lNRklMRV9NQUlOTElORSA9IDEgPDwgMiwKKyAgICBT WU1GSUxFX0RFRkVSX0JQX1JFU0VUID0gMSA8PCAzCisgIH07CisKIGV4dGVy biB2b2lkIHN5bXNfZnJvbV9vYmpmaWxlIChzdHJ1Y3Qgb2JqZmlsZSAqLAog CQkJICAgICAgIHN0cnVjdCBzZWN0aW9uX2FkZHJfaW5mbyAqLAotCQkJICAg ICAgIHN0cnVjdCBzZWN0aW9uX29mZnNldHMgKiwgaW50LCBpbnQsIGludCk7 CisJCQkgICAgICAgc3RydWN0IHNlY3Rpb25fb2Zmc2V0cyAqLCBpbnQsIGlu dCk7CiAKLWV4dGVybiB2b2lkIG5ld19zeW1maWxlX29iamZpbGUgKHN0cnVj dCBvYmpmaWxlICosIGludCwgaW50KTsKK2V4dGVybiB2b2lkIG5ld19zeW1m aWxlX29iamZpbGUgKHN0cnVjdCBvYmpmaWxlICosIGludCk7CiAKIGV4dGVy biBzdHJ1Y3Qgb2JqZmlsZSAqc3ltYm9sX2ZpbGVfYWRkIChjaGFyICosIGlu dCwKLQkJCQkJc3RydWN0IHNlY3Rpb25fYWRkcl9pbmZvICosIGludCwgaW50 KTsKKwkJCQkJc3RydWN0IHNlY3Rpb25fYWRkcl9pbmZvICosIGludCk7CiAK IGV4dGVybiBzdHJ1Y3Qgb2JqZmlsZSAqc3ltYm9sX2ZpbGVfYWRkX2Zyb21f YmZkIChiZmQgKiwgaW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBzZWN0aW9uX2FkZHJfaW5m byAqLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGludCwgaW50KTsKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQpOwogCiAvKiBDcmVhdGUg YSBuZXcgc2VjdGlvbl9hZGRyX2luZm8sIHdpdGggcm9vbSBmb3IgTlVNX1NF Q1RJT05TLiAgKi8KIApJbmRleDogc3ltZmlsZS1tZW0uYwo9PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL3NyYy9zcmMvZ2RiL3N5bWZp bGUtbWVtLmMsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMTcKZGlmZiAtdSAt cCAtdSAtcjEuMTcgc3ltZmlsZS1tZW0uYwotLS0gc3ltZmlsZS1tZW0uYwky MSBGZWIgMjAwOSAxNjoxNDo0OSAtMDAwMAkxLjE3CisrKyBzeW1maWxlLW1l bS5jCTE2IEp1biAyMDA5IDAxOjE0OjM4IC0wMDAwCkBAIC0xMDcsOCArMTA3 LDggQEAgc3ltYm9sX2ZpbGVfYWRkX2Zyb21fbWVtb3J5IChzdHJ1Y3QgYmZk IAogCSsraTsKICAgICAgIH0KIAotICBvYmpmID0gc3ltYm9sX2ZpbGVfYWRk X2Zyb21fYmZkIChuYmZkLCBmcm9tX3R0eSwKLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgc2FpLCAwLCBPQkpGX1NIQVJFRCk7CisgIG9i amYgPSBzeW1ib2xfZmlsZV9hZGRfZnJvbV9iZmQgKG5iZmQsIGZyb21fdHR5 ID8gU1lNRklMRV9WRVJCT1NFIDogMCwKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgc2FpLCBPQkpGX1NIQVJFRCk7CiAKICAgLyogVGhp cyBtaWdodCBjaGFuZ2Ugb3VyIGlkZWFzIGFib3V0IGZyYW1lcyBhbHJlYWR5 IGxvb2tlZCBhdC4gICovCiAgIHJlaW5pdF9mcmFtZV9jYWNoZSAoKTsKSW5k ZXg6IHdpbmRvd3MtbmF0LmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1Mg ZmlsZTogL2N2cy9zcmMvc3JjL2dkYi93aW5kb3dzLW5hdC5jLHYKcmV0cmll dmluZyByZXZpc2lvbiAxLjE5MwpkaWZmIC11IC1wIC11IC1yMS4xOTMgd2lu ZG93cy1uYXQuYwotLS0gd2luZG93cy1uYXQuYwk3IEp1biAyMDA5IDE2OjQ2 OjQ4IC0wMDAwCTEuMTkzCisrKyB3aW5kb3dzLW5hdC5jCTE2IEp1biAyMDA5 IDAxOjE0OjM4IC0wMDAwCkBAIC01NTYsNyArNTU2LDkgQEAgc3RhdGljIGlu dAogc2FmZV9zeW1ib2xfZmlsZV9hZGRfc3R1YiAodm9pZCAqYXJndikKIHsK ICNkZWZpbmUgcCAoKHN0cnVjdCBzYWZlX3N5bWJvbF9maWxlX2FkZF9hcmdz ICopIGFyZ3YpCi0gIHAtPnJldCA9IHN5bWJvbF9maWxlX2FkZCAocC0+bmFt ZSwgcC0+ZnJvbV90dHksIHAtPmFkZHJzLCBwLT5tYWlubGluZSwgcC0+Zmxh Z3MpOworICBjb25zdCBpbnQgYWRkX2ZsYWdzID0gKHAtPmZyb21fdHR5ID8g U1lNRklMRV9WRVJCT1NFIDogMCkKKyAgICAgIHwgKHAtPm1haW5saW5lID8g U1lNRklMRV9NQUlOTElORSA6IDApOworICBwLT5yZXQgPSBzeW1ib2xfZmls ZV9hZGQgKHAtPm5hbWUsIGFkZF9mbGFncywgcC0+YWRkcnMsIHAtPmZsYWdz KTsKICAgcmV0dXJuICEhcC0+cmV0OwogI3VuZGVmIHAKIH0KSW5kZXg6IHNw dS1saW51eC1uYXQuYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxl OiAvY3ZzL3NyYy9zcmMvZ2RiL3NwdS1saW51eC1uYXQuYyx2CnJldHJpZXZp bmcgcmV2aXNpb24gMS4yMQpkaWZmIC11IC1wIC11IC1yMS4yMSBzcHUtbGlu dXgtbmF0LmMKLS0tIHNwdS1saW51eC1uYXQuYwkyMSBNYXkgMjAwOSAxNTo0 ODo0MSAtMDAwMAkxLjIxCisrKyBzcHUtbGludXgtbmF0LmMJMTYgSnVuIDIw MDkgMDE6MTQ6MzggLTAwMDAKQEAgLTM3Miw3ICszNzIsOCBAQCBzcHVfc3lt Ym9sX2ZpbGVfYWRkX2Zyb21fbWVtb3J5IChpbnQgaW5mCiAgIC8qIE9wZW4g QkZEIHJlcHJlc2VudGluZyBTUEUgZXhlY3V0YWJsZSBhbmQgcmVhZCBpdHMg c3ltYm9scy4gICovCiAgIG5iZmQgPSBzcHVfYmZkX29wZW4gKGFkZHIpOwog ICBpZiAobmJmZCkKLSAgICBzeW1ib2xfZmlsZV9hZGRfZnJvbV9iZmQgKG5i ZmQsIDEsIE5VTEwsIDEsIDApOworICAgIHN5bWJvbF9maWxlX2FkZF9mcm9t X2JmZCAobmJmZCwgU1lNRklMRV9WRVJCT1NFIHwgU1lNRklMRV9NQUlOTElO RSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsIDApOwog fQogCiAKQEAgLTYwMCw0ICs2MDEsMyBAQCBfaW5pdGlhbGl6ZV9zcHVfbmF0 ICh2b2lkKQogICAvKiBSZWdpc3RlciBTUFUgdGFyZ2V0LiAgKi8KICAgYWRk X3RhcmdldCAodCk7CiB9Ci0KSW5kZXg6IG1hY2hvcmVhZC5jCj09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvc3JjL3NyYy9nZGIvbWFj aG9yZWFkLmMsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMwpkaWZmIC11IC1w IC11IC1yMS4zIG1hY2hvcmVhZC5jCi0tLSBtYWNob3JlYWQuYwk0IEZlYiAy MDA5IDA4OjQ3OjU2IC0wMDAwCTEuMworKysgbWFjaG9yZWFkLmMJMTYgSnVu IDIwMDkgMDE6MTQ6MzggLTAwMDAKQEAgLTQwNiw3ICs0MDYsNyBAQCBtYWNo b19vc29fc3ltZmlsZSAoc3RydWN0IG9iamZpbGUgKm1haW5fCiAJICAgICAg YmZkX2Nsb3NlIChtZW1iZXJfYmZkKTsKIAkgICAgfQogCSAgICBlbHNlCi0J ICAgICAgc3ltYm9sX2ZpbGVfYWRkX2Zyb21fYmZkIChtZW1iZXJfYmZkLCAw LCBhZGRycywgMCwgMCk7CisJICAgICAgc3ltYm9sX2ZpbGVfYWRkX2Zyb21f YmZkIChtZW1iZXJfYmZkLCAwLCBhZGRycywgMCk7CiAJfQogICAgICAgZWxz ZQogCXsKQEAgLTQyOSw3ICs0MjksNyBAQCBtYWNob19vc29fc3ltZmlsZSAo c3RydWN0IG9iamZpbGUgKm1haW5fCiAJICAgICAgY29udGludWU7CiAJICAg IH0KICAgCi0JICBzeW1ib2xfZmlsZV9hZGRfZnJvbV9iZmQgKGFiZmQsIDAs IGFkZHJzLCAwLCAwKTsKKwkgIHN5bWJvbF9maWxlX2FkZF9mcm9tX2JmZCAo YWJmZCwgMCwgYWRkcnMsIDApOwogCX0KICAgICAgIHhmcmVlIChvc28tPnN5 bWJvbHMpOwogICAgICAgeGZyZWUgKG9zby0+b2Zmc2V0cyk7CkBAIC01OTIs NyArNTkyLDcgQEAgbWFjaG9fc3ltZmlsZV9yZWFkIChzdHJ1Y3Qgb2JqZmls ZSAqb2JqZgogCSAgb3NvX3ZlY3RvciA9IE5VTEw7CiAKIAkgIC8qIE5vdyBy ZWN1cnNlOiByZWFkIGR3YXJmIGZyb20gZHN5bS4gICovCi0JICBzeW1ib2xf ZmlsZV9hZGRfZnJvbV9iZmQgKGRzeW1fYmZkLCAwLCBOVUxMLCAwLCAwKTsK KwkgIHN5bWJvbF9maWxlX2FkZF9mcm9tX2JmZCAoZHN5bV9iZmQsIDAsIE5V TEwsIDApOwogICAgICAgCiAJICAvKiBEb24ndCB0cnkgdG8gcmVhZCBkd2Fy ZjIgZnJvbSBtYWluIGZpbGUgb3Igc2hhcmVkIGxpYnJhcmllcy4gICovCiAJ ICByZXR1cm47Cg== --001636426c91cf1954046c6d1bc1--