From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 27922 invoked by alias); 27 Apr 2011 00:17:32 -0000 Received: (qmail 27912 invoked by uid 22791); 27 Apr 2011 00:17:29 -0000 X-SWARE-Spam-Status: No, hits=-2.2 required=5.0 tests=AWL,BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,SPF_HELO_PASS,T_RP_MATCHES_RCVD X-Spam-Check-By: sourceware.org Received: from smtp-out.google.com (HELO smtp-out.google.com) (74.125.121.67) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Wed, 27 Apr 2011 00:17:12 +0000 Received: from kpbe13.cbf.corp.google.com (kpbe13.cbf.corp.google.com [172.25.105.77]) by smtp-out.google.com with ESMTP id p3R0HAtx016159 for ; Tue, 26 Apr 2011 17:17:10 -0700 Received: from gxk21 (gxk21.prod.google.com [10.202.11.21]) by kpbe13.cbf.corp.google.com with ESMTP id p3R0GD6M029572 (version=TLSv1/SSLv3 cipher=RC4-SHA bits=128 verify=NOT) for ; Tue, 26 Apr 2011 17:17:09 -0700 Received: by gxk21 with SMTP id 21so433984gxk.19 for ; Tue, 26 Apr 2011 17:17:09 -0700 (PDT) MIME-Version: 1.0 Received: by 10.101.190.6 with SMTP id s6mr942036anp.20.1303863428871; Tue, 26 Apr 2011 17:17:08 -0700 (PDT) Received: by 10.100.131.8 with HTTP; Tue, 26 Apr 2011 17:17:08 -0700 (PDT) Date: Wed, 27 Apr 2011 00:17:00 -0000 Message-ID: Subject: [gold patch] Incremental 18/22: Linker-defined (common) symbols From: Cary Coutant To: Ian Lance Taylor , Binutils Content-Type: multipart/mixed; boundary=00163691fc2d83768b04a1db5c06 X-System-Of-Record: true X-IsSubscribed: yes Mailing-List: contact binutils-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: binutils-owner@sourceware.org X-SW-Source: 2011-04/txt/msg00391.txt.bz2 --00163691fc2d83768b04a1db5c06 Content-Type: text/plain; charset=ISO-8859-1 Content-length: 1854 This patch adds support for linker-defined (e.g., common) symbols in incremental links. -cary 2011-04-14 Cary Coutant * common.cc (Symbol_table::do_allocate_commons_list): For incremental update, allocate common from bss section's free list. * incremental-dump.cc (dump_incremental_inputs): Print flag for linker-defined symbols. * incremental.cc (Sized_incremental_binary::do_process_got_plt): Skip GOT and PLT entries that are no longer referenced. (Output_section_incremental_inputs::write_info_blocks): Mark linker-defined symbols. (Sized_incr_relobj::do_add_symbols): Process linker-defined symbols. * output.cc (Output_section::allocate): New function. * output.h (Output_section::allocate): New function. * resolve.cc (Symbol_table::report_resolve_problem): Add case for linker-defined symbols. (Symbol::override_base_with_special): Copy is_predefined_ flag. * symtab.cc (Symbol::init_fields): Initialize is_predefined_ flag. (Symbol::init_base_output_data): Likewise. (Symbol::init_base_output_segment): Likewise. (Symbol::init_base_constant): Likewise. (Sized_symbol::init_output_data): Likewise. (Sized_symbol::init_output_segment): Likewise. (Sized_symbol::init_constant): Likewise. (Symbol_table::do_define_in_output_data): Likewise. (Symbol_table::do_define_in_output_segment): Likewise. (Symbol_table::do_define_as_constant): Likewise. * symtab.h (Symbol::is_predefined): New function. (Symbol::init_base_output_data): Add is_predefined parameter. (Symbol::init_base_output_segment): Likewise. (Symbol::init_base_constant): Likewise. (Symbol::is_predefined_): New data member. (Sized_symbol::init_output_data): Add is_predefined parameter. (Sized_symbol::init_output_segment): Likewise. (Sized_symbol::init_constant): Likewise. (enum Symbol_table::Defined): Add INCREMENTAL_BASE. --00163691fc2d83768b04a1db5c06 Content-Type: text/plain; charset=US-ASCII; name="incr-patch-18b.txt" Content-Disposition: attachment; filename="incr-patch-18b.txt" Content-Transfer-Encoding: base64 X-Attachment-Id: f_gmzilfzm0 Content-length: 25405 QWRkIHN1cHBvcnQgZm9yIGxpbmtlci1kZWZpbmVkIChlLmcuLCBjb21tb24p IHN5bWJvbHMgaW4gaW5jcmVtZW50YWwgbGlua3MuCgoKMjAxMS0wNC0xNCBD YXJ5IENvdXRhbnQgIDxjY291dGFudEBnb29nbGUuY29tPgoKCSogY29tbW9u LmNjIChTeW1ib2xfdGFibGU6OmRvX2FsbG9jYXRlX2NvbW1vbnNfbGlzdCk6 IEZvciBpbmNyZW1lbnRhbAoJdXBkYXRlLCBhbGxvY2F0ZSBjb21tb24gZnJv bSBic3Mgc2VjdGlvbidzIGZyZWUgbGlzdC4KCSogaW5jcmVtZW50YWwtZHVt cC5jYyAoZHVtcF9pbmNyZW1lbnRhbF9pbnB1dHMpOiBQcmludCBmbGFnIGZv cgoJbGlua2VyLWRlZmluZWQgc3ltYm9scy4KCSogaW5jcmVtZW50YWwuY2Mg KFNpemVkX2luY3JlbWVudGFsX2JpbmFyeTo6ZG9fcHJvY2Vzc19nb3RfcGx0 KToKCVNraXAgR09UIGFuZCBQTFQgZW50cmllcyB0aGF0IGFyZSBubyBsb25n ZXIgcmVmZXJlbmNlZC4KCShPdXRwdXRfc2VjdGlvbl9pbmNyZW1lbnRhbF9p bnB1dHM6OndyaXRlX2luZm9fYmxvY2tzKTogTWFyawoJbGlua2VyLWRlZmlu ZWQgc3ltYm9scy4KCShTaXplZF9pbmNyX3JlbG9iajo6ZG9fYWRkX3N5bWJv bHMpOiBQcm9jZXNzIGxpbmtlci1kZWZpbmVkIHN5bWJvbHMuCgkqIG91dHB1 dC5jYyAoT3V0cHV0X3NlY3Rpb246OmFsbG9jYXRlKTogTmV3IGZ1bmN0aW9u LgoJKiBvdXRwdXQuaCAoT3V0cHV0X3NlY3Rpb246OmFsbG9jYXRlKTogTmV3 IGZ1bmN0aW9uLgoJKiByZXNvbHZlLmNjIChTeW1ib2xfdGFibGU6OnJlcG9y dF9yZXNvbHZlX3Byb2JsZW0pOiBBZGQgY2FzZSBmb3IKCWxpbmtlci1kZWZp bmVkIHN5bWJvbHMuCgkoU3ltYm9sOjpvdmVycmlkZV9iYXNlX3dpdGhfc3Bl Y2lhbCk6IENvcHkgaXNfcHJlZGVmaW5lZF8gZmxhZy4KCSogc3ltdGFiLmNj IChTeW1ib2w6OmluaXRfZmllbGRzKTogSW5pdGlhbGl6ZSBpc19wcmVkZWZp bmVkXyBmbGFnLgoJKFN5bWJvbDo6aW5pdF9iYXNlX291dHB1dF9kYXRhKTog TGlrZXdpc2UuCgkoU3ltYm9sOjppbml0X2Jhc2Vfb3V0cHV0X3NlZ21lbnQp OiBMaWtld2lzZS4KCShTeW1ib2w6OmluaXRfYmFzZV9jb25zdGFudCk6IExp a2V3aXNlLgoJKFNpemVkX3N5bWJvbDo6aW5pdF9vdXRwdXRfZGF0YSk6IExp a2V3aXNlLgoJKFNpemVkX3N5bWJvbDo6aW5pdF9vdXRwdXRfc2VnbWVudCk6 IExpa2V3aXNlLgoJKFNpemVkX3N5bWJvbDo6aW5pdF9jb25zdGFudCk6IExp a2V3aXNlLgoJKFN5bWJvbF90YWJsZTo6ZG9fZGVmaW5lX2luX291dHB1dF9k YXRhKTogTGlrZXdpc2UuCgkoU3ltYm9sX3RhYmxlOjpkb19kZWZpbmVfaW5f b3V0cHV0X3NlZ21lbnQpOiBMaWtld2lzZS4KCShTeW1ib2xfdGFibGU6OmRv X2RlZmluZV9hc19jb25zdGFudCk6IExpa2V3aXNlLgoJKiBzeW10YWIuaCAo U3ltYm9sOjppc19wcmVkZWZpbmVkKTogTmV3IGZ1bmN0aW9uLgoJKFN5bWJv bDo6aW5pdF9iYXNlX291dHB1dF9kYXRhKTogQWRkIGlzX3ByZWRlZmluZWQg cGFyYW1ldGVyLgoJKFN5bWJvbDo6aW5pdF9iYXNlX291dHB1dF9zZWdtZW50 KTogTGlrZXdpc2UuCgkoU3ltYm9sOjppbml0X2Jhc2VfY29uc3RhbnQpOiBM aWtld2lzZS4KCShTeW1ib2w6OmlzX3ByZWRlZmluZWRfKTogTmV3IGRhdGEg bWVtYmVyLgoJKFNpemVkX3N5bWJvbDo6aW5pdF9vdXRwdXRfZGF0YSk6IEFk ZCBpc19wcmVkZWZpbmVkIHBhcmFtZXRlci4KCShTaXplZF9zeW1ib2w6Omlu aXRfb3V0cHV0X3NlZ21lbnQpOiBMaWtld2lzZS4KCShTaXplZF9zeW1ib2w6 OmluaXRfY29uc3RhbnQpOiBMaWtld2lzZS4KCShlbnVtIFN5bWJvbF90YWJs ZTo6RGVmaW5lZCk6IEFkZCBJTkNSRU1FTlRBTF9CQVNFLgoKCmRpZmYgLS1n aXQgYS9nb2xkL2NvbW1vbi5jYyBiL2dvbGQvY29tbW9uLmNjCmluZGV4IDZh Y2QyYjUuLmJmZmE4MjkgMTAwNjQ0Ci0tLSBhL2dvbGQvY29tbW9uLmNjCisr KyBiL2dvbGQvY29tbW9uLmNjCkBAIC0yODYsMTIgKzI4NiwyMyBAQCBTeW1i b2xfdGFibGU6OmRvX2FsbG9jYXRlX2NvbW1vbnNfbGlzdCgKICAgICAgIGdv bGRfdW5yZWFjaGFibGUoKTsKICAgICB9CiAKLSAgT3V0cHV0X2RhdGFfc3Bh Y2UqIHBvYyA9IG5ldyBPdXRwdXRfZGF0YV9zcGFjZShhZGRyYWxpZ24sIGRz X25hbWUpOwotICBPdXRwdXRfc2VjdGlvbiogb3MgPSBsYXlvdXQtPmFkZF9v dXRwdXRfc2VjdGlvbl9kYXRhKG5hbWUsCi0JCQkJCQkgICAgICAgZWxmY3Bw OjpTSFRfTk9CSVRTLAotCQkJCQkJICAgICAgIGZsYWdzLCBwb2MsCi0JCQkJ CQkgICAgICAgT1JERVJfSU5WQUxJRCwKLQkJCQkJCSAgICAgICBmYWxzZSk7 CisgIE91dHB1dF9kYXRhX3NwYWNlKiBwb2M7CisgIE91dHB1dF9zZWN0aW9u KiBvczsKKworICBpZiAoIXBhcmFtZXRlcnMtPmluY3JlbWVudGFsX3VwZGF0 ZSgpKQorICAgIHsKKyAgICAgIHBvYyA9IG5ldyBPdXRwdXRfZGF0YV9zcGFj ZShhZGRyYWxpZ24sIGRzX25hbWUpOworICAgICAgb3MgPSBsYXlvdXQtPmFk ZF9vdXRwdXRfc2VjdGlvbl9kYXRhKG5hbWUsIGVsZmNwcDo6U0hUX05PQklU UywgZmxhZ3MsCisJCQkJCSAgIHBvYywgT1JERVJfSU5WQUxJRCwgZmFsc2Up OworICAgIH0KKyAgZWxzZQorICAgIHsKKyAgICAgIC8vIFdoZW4gZG9pbmcg YW4gaW5jcmVtZW50YWwgdXBkYXRlLCB3ZSBuZWVkIHRvIGFsbG9jYXRlIGVh Y2ggY29tbW9uCisgICAgICAvLyBkaXJlY3RseSBmcm9tIHRoZSBvdXRwdXQg c2VjdGlvbidzIGZyZWUgbGlzdC4KKyAgICAgIHBvYyA9IE5VTEw7CisgICAg ICBvcyA9IGxheW91dC0+ZmluZF9vdXRwdXRfc2VjdGlvbihuYW1lKTsKKyAg ICB9CisKICAgaWYgKG9zICE9IE5VTEwpCiAgICAgewogICAgICAgaWYgKGNv bW1vbnNfc2VjdGlvbl90eXBlID09IENPTU1PTlNfU01BTEwpCkBAIC0zMjks MTIgKzM0MCwyNiBAQCBTeW1ib2xfdGFibGU6OmRvX2FsbG9jYXRlX2NvbW1v bnNfbGlzdCgKICAgICAgIGlmIChtYXBmaWxlICE9IE5VTEwpCiAJbWFwZmls ZS0+cmVwb3J0X2FsbG9jYXRlX2NvbW1vbihzeW0sIHNzeW0tPnN5bXNpemUo KSk7CiAKLSAgICAgIG9mZiA9IGFsaWduX2FkZHJlc3Mob2ZmLCBzc3ltLT52 YWx1ZSgpKTsKLSAgICAgIHNzeW0tPmFsbG9jYXRlX2NvbW1vbihwb2MsIG9m Zik7Ci0gICAgICBvZmYgKz0gc3N5bS0+c3ltc2l6ZSgpOworICAgICAgaWYg KHBvYyAhPSBOVUxMKQorCXsKKwkgIG9mZiA9IGFsaWduX2FkZHJlc3Mob2Zm LCBzc3ltLT52YWx1ZSgpKTsKKwkgIHNzeW0tPmFsbG9jYXRlX2NvbW1vbihw b2MsIG9mZik7CisJICBvZmYgKz0gc3N5bS0+c3ltc2l6ZSgpOworCX0KKyAg ICAgIGVsc2UKKwl7CisJICAvLyBGb3IgYW4gaW5jcmVtZW50YWwgdXBkYXRl LCBhbGxvY2F0ZSBmcm9tIHRoZSBmcmVlIGxpc3QuCisJICBvZmYgPSBvcy0+ YWxsb2NhdGUoc3N5bS0+c3ltc2l6ZSgpLCBzc3ltLT52YWx1ZSgpKTsKKwkg IGlmIChvZmYgPT0gLTEpCisJICAgIGdvbGRfZmF0YWwoXygib3V0IG9mIHBh dGNoIHNwYWNlIGluIHNlY3Rpb24gJXM7ICIKKwkJCSAicmVsaW5rIHdpdGgg LS1pbmNyZW1lbnRhbC1mdWxsIiksCisJCQkgb3MtPm5hbWUoKSk7CisJICBz c3ltLT5hbGxvY2F0ZV9jb21tb24ob3MsIG9mZik7CisJfQogICAgIH0KIAot ICBwb2MtPnNldF9jdXJyZW50X2RhdGFfc2l6ZShvZmYpOworICBpZiAocG9j ICE9IE5VTEwpCisgICAgcG9jLT5zZXRfY3VycmVudF9kYXRhX3NpemUob2Zm KTsKIAogICBjb21tb25zLT5jbGVhcigpOwogfQpkaWZmIC0tZ2l0IGEvZ29s ZC9pbmNyZW1lbnRhbC1kdW1wLmNjIGIvZ29sZC9pbmNyZW1lbnRhbC1kdW1w LmNjCmluZGV4IGU3ZTgzOGEuLmZiM2QyNWYgMTAwNjQ0Ci0tLSBhL2dvbGQv aW5jcmVtZW50YWwtZHVtcC5jYworKysgYi9nb2xkL2luY3JlbWVudGFsLWR1 bXAuY2MKQEAgLTMyMiwxMiArMzIyLDE0IEBAIGR1bXBfaW5jcmVtZW50YWxf aW5wdXRzKGNvbnN0IGNoYXIqIGFyZ3YwLCBjb25zdCBjaGFyKiBmaWxlbmFt ZSwKIAkJc3ltbmFtZSA9ICI8dW5rbm93bj4iOwogCSAgICAgIHByaW50Zigi ICAgICU2ZCAgJTZkICAlOGQgICU4ZCAgJThkICAlOGQgICUtNXMgICVzXG4i LAogCQkgICAgIG91dHB1dF9zeW1uZHgsCi0JCSAgICAgaW5mby5zaG5keCgp LAorCQkgICAgIGluZm8uc2huZHgoKSA9PSAtMVUgPyAtMSA6IGluZm8uc2hu ZHgoKSwKIAkJICAgICBpbnB1dF9maWxlLmdldF9zeW1ib2xfb2Zmc2V0KHN5 bW5keCksCiAJCSAgICAgaW5mby5uZXh0X29mZnNldCgpLAogCQkgICAgIGlu Zm8ucmVsb2NfY291bnQoKSwKIAkJICAgICBpbmZvLnJlbG9jX29mZnNldCgp LAotCQkgICAgIGluZm8uc2huZHgoKSAhPSBlbGZjcHA6OlNITl9VTkRFRiA/ ICJERUYiIDogIlVOREVGIiwKKwkJICAgICAoaW5mby5zaG5keCgpID09IC0x VQorCQkgICAgICA/ICJCQVNFIgorCQkgICAgICA6IGluZm8uc2huZHgoKSA9 PSAwID8gIlVOREVGIiA6ICJERUYiKSwKIAkJICAgICBzeW1uYW1lKTsKIAkg ICAgfQogCX0KZGlmZiAtLWdpdCBhL2dvbGQvaW5jcmVtZW50YWwuY2MgYi9n b2xkL2luY3JlbWVudGFsLmNjCmluZGV4IDU4MDUyNDkuLjJkMWVhNWYgMTAw NjQ0Ci0tLSBhL2dvbGQvaW5jcmVtZW50YWwuY2MKKysrIGIvZ29sZC9pbmNy ZW1lbnRhbC5jYwpAQCAtNjMwLDEwICs2MzAsMTQgQEAgU2l6ZWRfaW5jcmVt ZW50YWxfYmluYXJ5PHNpemUsIGJpZ19lbmRpYW4+Ojpkb19wcm9jZXNzX2dv dF9wbHQoCiAJICAvLyBGSVhNRTogVGhpcyBzaG91bGQgcmVhbGx5IGJlIGEg ZmF0YWwgZXJyb3IgKGNvcnJ1cHQgaW5wdXQpLgogCSAgZ29sZF9hc3NlcnQo c3ltbmR4ID49IGZpcnN0X2dsb2JhbCAmJiBzeW1uZHggPCBzeW10YWJfY291 bnQpOwogCSAgU3ltYm9sKiBzeW0gPSB0aGlzLT5nbG9iYWxfc3ltYm9sKHN5 bW5keCAtIGZpcnN0X2dsb2JhbCk7Ci0JICBnb2xkX2RlYnVnKERFQlVHX0lO Q1JFTUVOVEFMLAotCQkgICAgICJHT1QgZW50cnkgJWQsIHR5cGUgJTAyeDog JXMiLAotCQkgICAgIGksIGdvdF90eXBlLCBzeW0tPm5hbWUoKSk7Ci0JICB0 YXJnZXQtPnJlc2VydmVfZ2xvYmFsX2dvdF9lbnRyeShpLCBzeW0sIGdvdF90 eXBlKTsKKwkgIC8vIEFkZCB0aGUgR09UIGVudHJ5IG9ubHkgaWYgdGhlIHN5 bWJvbCBpcyBzdGlsbCByZWZlcmVuY2VkLgorCSAgaWYgKHN5bSAhPSBOVUxM ICYmIHN5bS0+aW5fcmVnKCkpCisJICAgIHsKKwkgICAgICBnb2xkX2RlYnVn KERFQlVHX0lOQ1JFTUVOVEFMLAorCQkJICJHT1QgZW50cnkgJWQsIHR5cGUg JTAyeDogJXMiLAorCQkJIGksIGdvdF90eXBlLCBzeW0tPm5hbWUoKSk7CisJ ICAgICAgdGFyZ2V0LT5yZXNlcnZlX2dsb2JhbF9nb3RfZW50cnkoaSwgc3lt LCBnb3RfdHlwZSk7CisJICAgIH0KIAl9CiAgICAgfQogCkBAIC02NDQsMTAg KzY0OCwxNCBAQCBTaXplZF9pbmNyZW1lbnRhbF9iaW5hcnk8c2l6ZSwgYmln X2VuZGlhbj46OmRvX3Byb2Nlc3NfZ290X3BsdCgKICAgICAgIC8vIEZJWE1F OiBUaGlzIHNob3VsZCByZWFsbHkgYmUgYSBmYXRhbCBlcnJvciAoY29ycnVw dCBpbnB1dCkuCiAgICAgICBnb2xkX2Fzc2VydChwbHRfZGVzYyA+PSBmaXJz dF9nbG9iYWwgJiYgcGx0X2Rlc2MgPCBzeW10YWJfY291bnQpOwogICAgICAg U3ltYm9sKiBzeW0gPSB0aGlzLT5nbG9iYWxfc3ltYm9sKHBsdF9kZXNjIC0g Zmlyc3RfZ2xvYmFsKTsKLSAgICAgIGdvbGRfZGVidWcoREVCVUdfSU5DUkVN RU5UQUwsCi0JCSAiUExUIGVudHJ5ICVkOiAlcyIsCi0JCSBpLCBzeW0tPm5h bWUoKSk7Ci0gICAgICB0YXJnZXQtPnJlZ2lzdGVyX2dsb2JhbF9wbHRfZW50 cnkoaSwgc3ltKTsKKyAgICAgIC8vIEFkZCB0aGUgUExUIGVudHJ5IG9ubHkg aWYgdGhlIHN5bWJvbCBpcyBzdGlsbCByZWZlcmVuY2VkLgorICAgICAgaWYg KHN5bS0+aW5fcmVnKCkpCisJeworCSAgZ29sZF9kZWJ1ZyhERUJVR19JTkNS RU1FTlRBTCwKKwkJICAgICAiUExUIGVudHJ5ICVkOiAlcyIsCisJCSAgICAg aSwgc3ltLT5uYW1lKCkpOworCSAgdGFyZ2V0LT5yZWdpc3Rlcl9nbG9iYWxf cGx0X2VudHJ5KGksIHN5bSk7CisJfQogICAgIH0KIH0KIApAQCAtMTU0MCwx NCArMTU0OCwyNCBAQCBPdXRwdXRfc2VjdGlvbl9pbmNyZW1lbnRhbF9pbnB1 dHM8c2l6ZSwgYmlnX2VuZGlhbj46OndyaXRlX2luZm9fYmxvY2tzKAogCQlp ZiAoc3ltLT5pc19mb3J3YXJkZXIoKSkKIAkJICBzeW0gPSB0aGlzLT5zeW10 YWJfLT5yZXNvbHZlX2ZvcndhcmRzKHN5bSk7CiAJCXVuc2lnbmVkIGludCBz aG5keCA9IDA7Ci0JCWlmIChzeW0tPnNvdXJjZSgpID09IFN5bWJvbDo6RlJP TV9PQkpFQ1QKLQkJICAgICYmIHN5bS0+b2JqZWN0KCkgPT0gb2JqCi0JCSAg ICAmJiBzeW0tPmlzX2RlZmluZWQoKSkKKwkJaWYgKHN5bS0+c291cmNlKCkg IT0gU3ltYm9sOjpGUk9NX09CSkVDVCkKKwkJICB7CisJCSAgICAvLyBUaGUg c3ltYm9sIHdhcyBkZWZpbmVkIGJ5IHRoZSBsaW5rZXIgKGUuZy4sIGNvbW1v bikuCisJCSAgICAvLyBXZSBtYXJrIHRoZXNlIHN5bWJvbHMgd2l0aCBhIHNw ZWNpYWwgU0hORFggb2YgLTEsCisJCSAgICAvLyBidXQgZXhjbHVkZSBsaW5r ZXItcHJlZGVmaW5lZCBzeW1ib2xzIGFuZCBzeW1ib2xzCisJCSAgICAvLyBj b3BpZWQgZnJvbSBzaGFyZWQgb2JqZWN0cy4KKwkJICAgIGlmICghc3ltLT5p c19wcmVkZWZpbmVkKCkKKwkJICAgICAgICAmJiAhc3ltLT5pc19jb3BpZWRf ZnJvbV9keW5vYmooKSkKKwkJICAgICAgc2huZHggPSAtMVU7CisJCSAgfQor CQllbHNlIGlmIChzeW0tPm9iamVjdCgpID09IG9iaiAmJiBzeW0tPmlzX2Rl ZmluZWQoKSkKIAkJICB7CiAJCSAgICBib29sIGlzX29yZGluYXJ5OwogCQkg ICAgdW5zaWduZWQgaW50IG9yaWdfc2huZHggPSBzeW0tPnNobmR4KCZpc19v cmRpbmFyeSk7CiAJCSAgICBpZiAoaXNfb3JkaW5hcnkpCiAJCSAgICAgIHNo bmR4ID0gaW5kZXhfbWFwW29yaWdfc2huZHhdOworCQkgICAgZWxzZQorCQkg ICAgICBzaG5keCA9IDE7CiAJCSAgfQogCQl1bnNpZ25lZCBpbnQgc3ltdGFi X2luZGV4ID0gc3ltLT5zeW10YWJfaW5kZXgoKTsKIAkJdW5zaWduZWQgaW50 IGNoYWluID0gMDsKQEAgLTIwMTcsNyArMjAzNSw3IEBAIFNpemVkX2luY3Jf cmVsb2JqPHNpemUsIGJpZ19lbmRpYW4+Ojpkb19hZGRfc3ltYm9scygKICAg ICAgICAgc3RfYmluZCA9IGVsZmNwcDo6U1RCX0dMT0JBTDsKIAogICAgICAg dW5zaWduZWQgaW50IGlucHV0X3NobmR4ID0gaW5mby5zaG5keCgpOwotICAg ICAgaWYgKGlucHV0X3NobmR4ID09IDApCisgICAgICBpZiAoaW5wdXRfc2hu ZHggPT0gMCB8fCBpbnB1dF9zaG5keCA9PSAtMVUpCiAJewogCSAgc2huZHgg PSBlbGZjcHA6OlNITl9VTkRFRjsKIAkgIHYgPSAwOwpAQCAtMjA0NCwxMCAr MjA2Miw0MCBAQCBTaXplZF9pbmNyX3JlbG9iajxzaXplLCBiaWdfZW5kaWFu Pjo6ZG9fYWRkX3N5bWJvbHMoCiAgICAgICBvc3ltLnB1dF9zdF9vdGhlcihn c3ltLmdldF9zdF9vdGhlcigpKTsKICAgICAgIG9zeW0ucHV0X3N0X3NobmR4 KHNobmR4KTsKIAotICAgICAgdGhpcy0+c3ltYm9sc19baV0gPQotCXN5bXRh Yi0+YWRkX2Zyb21faW5jcm9iaih0aGlzLCBuYW1lLCBOVUxMLCAmc3ltKTsK LSAgICAgIHRoaXMtPmliYXNlXy0+YWRkX2dsb2JhbF9zeW1ib2wob3V0cHV0 X3N5bW5keCAtIGZpcnN0X2dsb2JhbCwKLQkJCQkgICAgICB0aGlzLT5zeW1i b2xzX1tpXSk7CisgICAgICBTeW1ib2wqIHJlcyA9IHN5bXRhYi0+YWRkX2Zy b21faW5jcm9iaih0aGlzLCBuYW1lLCBOVUxMLCAmc3ltKTsKKworICAgICAg Ly8gSWYgdGhpcyBpcyBhIGxpbmtlci1kZWZpbmVkIHN5bWJvbCB0aGF0IGhh c24ndCB5ZXQgYmVlbiBkZWZpbmVkLAorICAgICAgLy8gZGVmaW5lIGl0IG5v dy4KKyAgICAgIGlmIChpbnB1dF9zaG5keCA9PSAtMVUgJiYgIXJlcy0+aXNf ZGVmaW5lZCgpKQorCXsKKwkgIHNobmR4ID0gZ3N5bS5nZXRfc3Rfc2huZHgo KTsKKwkgIHYgPSBnc3ltLmdldF9zdF92YWx1ZSgpOworCSAgRWxmX3NpemVf dHlwZSBzeW1zaXplID0gZ3N5bS5nZXRfc3Rfc2l6ZSgpOworCSAgaWYgKHNo bmR4ID09IGVsZmNwcDo6U0hOX0FCUykKKwkgICAgeworCSAgICAgIHN5bXRh Yi0+ZGVmaW5lX2FzX2NvbnN0YW50KG5hbWUsIE5VTEwsCisJCQkJCSBTeW1i b2xfdGFibGU6OklOQ1JFTUVOVEFMX0JBU0UsCisJCQkJCSB2LCBzeW1zaXpl LCBzdF90eXBlLCBzdF9iaW5kLAorCQkJCQkgZ3N5bS5nZXRfc3RfdmlzaWJp bGl0eSgpLCAwLAorCQkJCQkgZmFsc2UsIGZhbHNlKTsKKwkgICAgfQorCSAg ZWxzZQorCSAgICB7CisJICAgICAgT3V0cHV0X3NlY3Rpb24qIG9zID0gdGhp cy0+aWJhc2VfLT5vdXRwdXRfc2VjdGlvbihzaG5keCk7CisJICAgICAgZ29s ZF9hc3NlcnQob3MgIT0gTlVMTCAmJiBvcy0+aGFzX2ZpeGVkX2xheW91dCgp KTsKKwkgICAgICB2IC09IG9zLT5hZGRyZXNzKCk7CisJICAgICAgaWYgKHN5 bXNpemUgPiAwKQorCQlvcy0+cmVzZXJ2ZSh2LCBzeW1zaXplKTsKKwkgICAg ICBzeW10YWItPmRlZmluZV9pbl9vdXRwdXRfZGF0YShuYW1lLCBOVUxMLAor CQkJCQkgICAgU3ltYm9sX3RhYmxlOjpJTkNSRU1FTlRBTF9CQVNFLAorCQkJ CQkgICAgb3MsIHYsIHN5bXNpemUsIHN0X3R5cGUsIHN0X2JpbmQsCisJCQkJ CSAgICBnc3ltLmdldF9zdF92aXNpYmlsaXR5KCksIDAsCisJCQkJCSAgICBm YWxzZSwgZmFsc2UpOworCSAgICB9CisJfQorCisgICAgICB0aGlzLT5zeW1i b2xzX1tpXSA9IHJlczsKKyAgICAgIHRoaXMtPmliYXNlXy0+YWRkX2dsb2Jh bF9zeW1ib2wob3V0cHV0X3N5bW5keCAtIGZpcnN0X2dsb2JhbCwgcmVzKTsK ICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL2dvbGQvb3V0cHV0LmNjIGIvZ29s ZC9vdXRwdXQuY2MKaW5kZXggNDg3MDAxMS4uODMyNDI4ZSAxMDA2NDQKLS0t IGEvZ29sZC9vdXRwdXQuY2MKKysrIGIvZ29sZC9vdXRwdXQuY2MKQEAgLTM2 MDYsMTIgKzM2MDYsMjIgQEAgT3V0cHV0X3NlY3Rpb246OnNldF9maXhlZF9s YXlvdXQodWludDY0X3Qgc2hfYWRkciwgb2ZmX3Qgc2hfb2Zmc2V0LAogCiAv LyBSZXNlcnZlIHNwYWNlIHdpdGhpbiB0aGUgZml4ZWQgbGF5b3V0IGZvciB0 aGUgc2VjdGlvbi4gIFVzZWQgZm9yCiAvLyBpbmNyZW1lbnRhbCB1cGRhdGUg bGlua3MuCisKIHZvaWQKIE91dHB1dF9zZWN0aW9uOjpyZXNlcnZlKHVpbnQ2 NF90IHNoX29mZnNldCwgdWludDY0X3Qgc2hfc2l6ZSkKIHsKICAgdGhpcy0+ ZnJlZV9saXN0Xy5yZW1vdmUoc2hfb2Zmc2V0LCBzaF9vZmZzZXQgKyBzaF9z aXplKTsKIH0KIAorLy8gQWxsb2NhdGUgc3BhY2UgZnJvbSB0aGUgZnJlZSBs aXN0IGZvciB0aGUgc2VjdGlvbi4gIFVzZWQgZm9yCisvLyBpbmNyZW1lbnRh bCB1cGRhdGUgbGlua3MuCisKK29mZl90CitPdXRwdXRfc2VjdGlvbjo6YWxs b2NhdGUob2ZmX3QgbGVuLCB1aW50NjRfdCBhZGRyYWxpZ24pCit7CisgIHJl dHVybiB0aGlzLT5mcmVlX2xpc3RfLmFsbG9jYXRlKGxlbiwgYWRkcmFsaWdu LCAwKTsKK30KKwogLy8gT3V0cHV0IHNlZ21lbnQgbWV0aG9kcy4KIAogT3V0 cHV0X3NlZ21lbnQ6Ok91dHB1dF9zZWdtZW50KGVsZmNwcDo6RWxmX1dvcmQg dHlwZSwgZWxmY3BwOjpFbGZfV29yZCBmbGFncykKZGlmZiAtLWdpdCBhL2dv bGQvb3V0cHV0LmggYi9nb2xkL291dHB1dC5oCmluZGV4IDM2MTc5NDguLmFl MmY3ZDIgMTAwNjQ0Ci0tLSBhL2dvbGQvb3V0cHV0LmgKKysrIGIvZ29sZC9v dXRwdXQuaApAQCAtMzQ3Nyw2ICszNDc3LDExIEBAIGNsYXNzIE91dHB1dF9z ZWN0aW9uIDogcHVibGljIE91dHB1dF9kYXRhCiAgIHZvaWQKICAgcmVzZXJ2 ZSh1aW50NjRfdCBzaF9vZmZzZXQsIHVpbnQ2NF90IHNoX3NpemUpOwogCisg IC8vIEFsbG9jYXRlIHNwYWNlIGZyb20gdGhlIGZyZWUgbGlzdCBmb3IgdGhl IHNlY3Rpb24uICBVc2VkIGZvcgorICAvLyBpbmNyZW1lbnRhbCB1cGRhdGUg bGlua3MuCisgIG9mZl90CisgIGFsbG9jYXRlKG9mZl90IGxlbiwgdWludDY0 X3QgYWRkcmFsaWduKTsKKwogIHByb3RlY3RlZDoKICAgLy8gUmV0dXJuIHRo ZSBvdXRwdXQgc2VjdGlvbi0taS5lLiwgdGhlIG9iamVjdCBpdHNlbGYuCiAg IE91dHB1dF9zZWN0aW9uKgpkaWZmIC0tZ2l0IGEvZ29sZC9yZXNvbHZlLmNj IGIvZ29sZC9yZXNvbHZlLmNjCmluZGV4IGE5YTg5ZmEuLmZkMGZlYTYgMTAw NjQ0Ci0tLSBhL2dvbGQvcmVzb2x2ZS5jYworKysgYi9nb2xkL3Jlc29sdmUu Y2MKQEAgLTgzMCw2ICs4MzAsNyBAQCBTeW1ib2xfdGFibGU6OnJlcG9ydF9y ZXNvbHZlX3Byb2JsZW0oYm9vbCBpc19lcnJvciwgY29uc3QgY2hhciogbXNn LAogICAgICAgb2JqbmFtZSA9IF8oImxpbmtlciBzY3JpcHQiKTsKICAgICAg IGJyZWFrOwogICAgIGNhc2UgUFJFREVGSU5FRDoKKyAgICBjYXNlIElOQ1JF TUVOVEFMX0JBU0U6CiAgICAgICBvYmpuYW1lID0gXygibGlua2VyIGRlZmlu ZWQiKTsKICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6CkBAIC05MDgsNiAr OTA5LDggQEAgU3ltYm9sOjpvdmVycmlkZV9iYXNlX3dpdGhfc3BlY2lhbChj b25zdCBTeW1ib2wqIGZyb20pCiAgIGlmIChmcm9tLT5uZWVkc19keW5zeW1f dmFsdWVfKQogICAgIHRoaXMtPm5lZWRzX2R5bnN5bV92YWx1ZV8gPSB0cnVl OwogCisgIHRoaXMtPmlzX3ByZWRlZmluZWRfID0gZnJvbS0+aXNfcHJlZGVm aW5lZF87CisKICAgLy8gV2Ugc2hvdWxkbid0IHNlZSB0aGVzZSBmbGFncy4g IElmIHdlIGRvLCB3ZSBuZWVkIHRvIGhhbmRsZSB0aGVtCiAgIC8vIHNvbWVo b3cuCiAgIGdvbGRfYXNzZXJ0KCFmcm9tLT5pc19mb3J3YXJkZXJfKTsKZGlm ZiAtLWdpdCBhL2dvbGQvc3ltdGFiLmNjIGIvZ29sZC9zeW10YWIuY2MKaW5k ZXggMDQyMWI2Ni4uNGY5NWE2NCAxMDA2NDQKLS0tIGEvZ29sZC9zeW10YWIu Y2MKKysrIGIvZ29sZC9zeW10YWIuY2MKQEAgLTc5LDYgKzc5LDcgQEAgU3lt Ym9sOjppbml0X2ZpZWxkcyhjb25zdCBjaGFyKiBuYW1lLCBjb25zdCBjaGFy KiB2ZXJzaW9uLAogICB0aGlzLT5pc19kZWZpbmVkX2luX2Rpc2NhcmRlZF9z ZWN0aW9uXyA9IGZhbHNlOwogICB0aGlzLT51bmRlZl9iaW5kaW5nX3NldF8g PSBmYWxzZTsKICAgdGhpcy0+dW5kZWZfYmluZGluZ193ZWFrXyA9IGZhbHNl OworICB0aGlzLT5pc19wcmVkZWZpbmVkXyA9IGZhbHNlOwogfQogCiAvLyBS ZXR1cm4gdGhlIGRlbWFuZ2xlZCB2ZXJzaW9uIG9mIHRoZSBzeW1ib2wncyBu YW1lLCBidXQgb25seQpAQCAtMTMzLDcgKzEzNCw4IEBAIHZvaWQKIFN5bWJv bDo6aW5pdF9iYXNlX291dHB1dF9kYXRhKGNvbnN0IGNoYXIqIG5hbWUsIGNv bnN0IGNoYXIqIHZlcnNpb24sCiAJCQkgICAgICBPdXRwdXRfZGF0YSogb2Qs IGVsZmNwcDo6U1RUIHR5cGUsCiAJCQkgICAgICBlbGZjcHA6OlNUQiBiaW5k aW5nLCBlbGZjcHA6OlNUViB2aXNpYmlsaXR5LAotCQkJICAgICAgdW5zaWdu ZWQgY2hhciBub252aXMsIGJvb2wgb2Zmc2V0X2lzX2Zyb21fZW5kKQorCQkJ ICAgICAgdW5zaWduZWQgY2hhciBub252aXMsIGJvb2wgb2Zmc2V0X2lzX2Zy b21fZW5kLAorCQkJICAgICAgYm9vbCBpc19wcmVkZWZpbmVkKQogewogICB0 aGlzLT5pbml0X2ZpZWxkcyhuYW1lLCB2ZXJzaW9uLCB0eXBlLCBiaW5kaW5n LCB2aXNpYmlsaXR5LCBub252aXMpOwogICB0aGlzLT51Xy5pbl9vdXRwdXRf ZGF0YS5vdXRwdXRfZGF0YSA9IG9kOwpAQCAtMTQxLDYgKzE0Myw3IEBAIFN5 bWJvbDo6aW5pdF9iYXNlX291dHB1dF9kYXRhKGNvbnN0IGNoYXIqIG5hbWUs IGNvbnN0IGNoYXIqIHZlcnNpb24sCiAgIHRoaXMtPnNvdXJjZV8gPSBJTl9P VVRQVVRfREFUQTsKICAgdGhpcy0+aW5fcmVnXyA9IHRydWU7CiAgIHRoaXMt PmluX3JlYWxfZWxmXyA9IHRydWU7CisgIHRoaXMtPmlzX3ByZWRlZmluZWRf ID0gaXNfcHJlZGVmaW5lZDsKIH0KIAogLy8gSW5pdGlhbGl6ZSB0aGUgZmll bGRzIGluIHRoZSBiYXNlIGNsYXNzIFN5bWJvbCBmb3IgYSBzeW1ib2wgZGVm aW5lZApAQCAtMTUxLDcgKzE1NCw4IEBAIFN5bWJvbDo6aW5pdF9iYXNlX291 dHB1dF9zZWdtZW50KGNvbnN0IGNoYXIqIG5hbWUsIGNvbnN0IGNoYXIqIHZl cnNpb24sCiAJCQkJIE91dHB1dF9zZWdtZW50KiBvcywgZWxmY3BwOjpTVFQg dHlwZSwKIAkJCQkgZWxmY3BwOjpTVEIgYmluZGluZywgZWxmY3BwOjpTVFYg dmlzaWJpbGl0eSwKIAkJCQkgdW5zaWduZWQgY2hhciBub252aXMsCi0JCQkJ IFNlZ21lbnRfb2Zmc2V0X2Jhc2Ugb2Zmc2V0X2Jhc2UpCisJCQkJIFNlZ21l bnRfb2Zmc2V0X2Jhc2Ugb2Zmc2V0X2Jhc2UsCisJCQkJIGJvb2wgaXNfcHJl ZGVmaW5lZCkKIHsKICAgdGhpcy0+aW5pdF9maWVsZHMobmFtZSwgdmVyc2lv biwgdHlwZSwgYmluZGluZywgdmlzaWJpbGl0eSwgbm9udmlzKTsKICAgdGhp cy0+dV8uaW5fb3V0cHV0X3NlZ21lbnQub3V0cHV0X3NlZ21lbnQgPSBvczsK QEAgLTE1OSw2ICsxNjMsNyBAQCBTeW1ib2w6OmluaXRfYmFzZV9vdXRwdXRf c2VnbWVudChjb25zdCBjaGFyKiBuYW1lLCBjb25zdCBjaGFyKiB2ZXJzaW9u LAogICB0aGlzLT5zb3VyY2VfID0gSU5fT1VUUFVUX1NFR01FTlQ7CiAgIHRo aXMtPmluX3JlZ18gPSB0cnVlOwogICB0aGlzLT5pbl9yZWFsX2VsZl8gPSB0 cnVlOworICB0aGlzLT5pc19wcmVkZWZpbmVkXyA9IGlzX3ByZWRlZmluZWQ7 CiB9CiAKIC8vIEluaXRpYWxpemUgdGhlIGZpZWxkcyBpbiB0aGUgYmFzZSBj bGFzcyBTeW1ib2wgZm9yIGEgc3ltYm9sIGRlZmluZWQKQEAgLTE2NywxMiAr MTcyLDE0IEBAIFN5bWJvbDo6aW5pdF9iYXNlX291dHB1dF9zZWdtZW50KGNv bnN0IGNoYXIqIG5hbWUsIGNvbnN0IGNoYXIqIHZlcnNpb24sCiB2b2lkCiBT eW1ib2w6OmluaXRfYmFzZV9jb25zdGFudChjb25zdCBjaGFyKiBuYW1lLCBj b25zdCBjaGFyKiB2ZXJzaW9uLAogCQkJICAgZWxmY3BwOjpTVFQgdHlwZSwg ZWxmY3BwOjpTVEIgYmluZGluZywKLQkJCSAgIGVsZmNwcDo6U1RWIHZpc2li aWxpdHksIHVuc2lnbmVkIGNoYXIgbm9udmlzKQorCQkJICAgZWxmY3BwOjpT VFYgdmlzaWJpbGl0eSwgdW5zaWduZWQgY2hhciBub252aXMsCisJCQkgICBi b29sIGlzX3ByZWRlZmluZWQpCiB7CiAgIHRoaXMtPmluaXRfZmllbGRzKG5h bWUsIHZlcnNpb24sIHR5cGUsIGJpbmRpbmcsIHZpc2liaWxpdHksIG5vbnZp cyk7CiAgIHRoaXMtPnNvdXJjZV8gPSBJU19DT05TVEFOVDsKICAgdGhpcy0+ aW5fcmVnXyA9IHRydWU7CiAgIHRoaXMtPmluX3JlYWxfZWxmXyA9IHRydWU7 CisgIHRoaXMtPmlzX3ByZWRlZmluZWRfID0gaXNfcHJlZGVmaW5lZDsKIH0K IAogLy8gSW5pdGlhbGl6ZSB0aGUgZmllbGRzIGluIHRoZSBiYXNlIGNsYXNz IFN5bWJvbCBmb3IgYW4gdW5kZWZpbmVkCkBAIC0yMjcsMTAgKzIzNCwxMSBA QCBTaXplZF9zeW1ib2w8c2l6ZT46OmluaXRfb3V0cHV0X2RhdGEoY29uc3Qg Y2hhciogbmFtZSwgY29uc3QgY2hhciogdmVyc2lvbiwKIAkJCQkgICAgIGVs ZmNwcDo6U1RCIGJpbmRpbmcsCiAJCQkJICAgICBlbGZjcHA6OlNUViB2aXNp YmlsaXR5LAogCQkJCSAgICAgdW5zaWduZWQgY2hhciBub252aXMsCi0JCQkJ ICAgICBib29sIG9mZnNldF9pc19mcm9tX2VuZCkKKwkJCQkgICAgIGJvb2wg b2Zmc2V0X2lzX2Zyb21fZW5kLAorCQkJCSAgICAgYm9vbCBpc19wcmVkZWZp bmVkKQogewogICB0aGlzLT5pbml0X2Jhc2Vfb3V0cHV0X2RhdGEobmFtZSwg dmVyc2lvbiwgb2QsIHR5cGUsIGJpbmRpbmcsIHZpc2liaWxpdHksCi0JCQkg ICAgICBub252aXMsIG9mZnNldF9pc19mcm9tX2VuZCk7CisJCQkgICAgICBu b252aXMsIG9mZnNldF9pc19mcm9tX2VuZCwgaXNfcHJlZGVmaW5lZCk7CiAg IHRoaXMtPnZhbHVlXyA9IHZhbHVlOwogICB0aGlzLT5zeW1zaXplXyA9IHN5 bXNpemU7CiB9CkBAIC0yNDYsMTAgKzI1NCwxMSBAQCBTaXplZF9zeW1ib2w8 c2l6ZT46OmluaXRfb3V0cHV0X3NlZ21lbnQoY29uc3QgY2hhciogbmFtZSwg Y29uc3QgY2hhciogdmVyc2lvbiwKIAkJCQkJZWxmY3BwOjpTVEIgYmluZGlu ZywKIAkJCQkJZWxmY3BwOjpTVFYgdmlzaWJpbGl0eSwKIAkJCQkJdW5zaWdu ZWQgY2hhciBub252aXMsCi0JCQkJCVNlZ21lbnRfb2Zmc2V0X2Jhc2Ugb2Zm c2V0X2Jhc2UpCisJCQkJCVNlZ21lbnRfb2Zmc2V0X2Jhc2Ugb2Zmc2V0X2Jh c2UsCisJCQkJCWJvb2wgaXNfcHJlZGVmaW5lZCkKIHsKICAgdGhpcy0+aW5p dF9iYXNlX291dHB1dF9zZWdtZW50KG5hbWUsIHZlcnNpb24sIG9zLCB0eXBl LCBiaW5kaW5nLCB2aXNpYmlsaXR5LAotCQkJCSBub252aXMsIG9mZnNldF9i YXNlKTsKKwkJCQkgbm9udmlzLCBvZmZzZXRfYmFzZSwgaXNfcHJlZGVmaW5l ZCk7CiAgIHRoaXMtPnZhbHVlXyA9IHZhbHVlOwogICB0aGlzLT5zeW1zaXpl XyA9IHN5bXNpemU7CiB9CkBAIC0yNjIsOSArMjcxLDExIEBAIHZvaWQKIFNp emVkX3N5bWJvbDxzaXplPjo6aW5pdF9jb25zdGFudChjb25zdCBjaGFyKiBu YW1lLCBjb25zdCBjaGFyKiB2ZXJzaW9uLAogCQkJCSAgVmFsdWVfdHlwZSB2 YWx1ZSwgU2l6ZV90eXBlIHN5bXNpemUsCiAJCQkJICBlbGZjcHA6OlNUVCB0 eXBlLCBlbGZjcHA6OlNUQiBiaW5kaW5nLAotCQkJCSAgZWxmY3BwOjpTVFYg dmlzaWJpbGl0eSwgdW5zaWduZWQgY2hhciBub252aXMpCisJCQkJICBlbGZj cHA6OlNUViB2aXNpYmlsaXR5LCB1bnNpZ25lZCBjaGFyIG5vbnZpcywKKwkJ CQkgIGJvb2wgaXNfcHJlZGVmaW5lZCkKIHsKLSAgdGhpcy0+aW5pdF9iYXNl X2NvbnN0YW50KG5hbWUsIHZlcnNpb24sIHR5cGUsIGJpbmRpbmcsIHZpc2li aWxpdHksIG5vbnZpcyk7CisgIHRoaXMtPmluaXRfYmFzZV9jb25zdGFudChu YW1lLCB2ZXJzaW9uLCB0eXBlLCBiaW5kaW5nLCB2aXNpYmlsaXR5LCBub252 aXMsCisJCQkgICBpc19wcmVkZWZpbmVkKTsKICAgdGhpcy0+dmFsdWVfID0g dmFsdWU7CiAgIHRoaXMtPnN5bXNpemVfID0gc3ltc2l6ZTsKIH0KQEAgLTE4 NDMsNyArMTg1NCw4IEBAIFN5bWJvbF90YWJsZTo6ZG9fZGVmaW5lX2luX291 dHB1dF9kYXRhKAogICAgIHJldHVybiBOVUxMOwogCiAgIHN5bS0+aW5pdF9v dXRwdXRfZGF0YShuYW1lLCB2ZXJzaW9uLCBvZCwgdmFsdWUsIHN5bXNpemUs IHR5cGUsIGJpbmRpbmcsCi0JCQl2aXNpYmlsaXR5LCBub252aXMsIG9mZnNl dF9pc19mcm9tX2VuZCk7CisJCQl2aXNpYmlsaXR5LCBub252aXMsIG9mZnNl dF9pc19mcm9tX2VuZCwKKwkJCWRlZmluZWQgPT0gUFJFREVGSU5FRCk7CiAK ICAgaWYgKG9sZHN5bSA9PSBOVUxMKQogICAgIHsKQEAgLTE5NTYsNyArMTk2 OCw4IEBAIFN5bWJvbF90YWJsZTo6ZG9fZGVmaW5lX2luX291dHB1dF9zZWdt ZW50KAogICAgIHJldHVybiBOVUxMOwogCiAgIHN5bS0+aW5pdF9vdXRwdXRf c2VnbWVudChuYW1lLCB2ZXJzaW9uLCBvcywgdmFsdWUsIHN5bXNpemUsIHR5 cGUsIGJpbmRpbmcsCi0JCQkgICB2aXNpYmlsaXR5LCBub252aXMsIG9mZnNl dF9iYXNlKTsKKwkJCSAgIHZpc2liaWxpdHksIG5vbnZpcywgb2Zmc2V0X2Jh c2UsCisJCQkgICBkZWZpbmVkID09IFBSRURFRklORUQpOwogCiAgIGlmIChv bGRzeW0gPT0gTlVMTCkKICAgICB7CkBAIC0yMDY4LDcgKzIwODEsNyBAQCBT eW1ib2xfdGFibGU6OmRvX2RlZmluZV9hc19jb25zdGFudCgKICAgICByZXR1 cm4gTlVMTDsKIAogICBzeW0tPmluaXRfY29uc3RhbnQobmFtZSwgdmVyc2lv biwgdmFsdWUsIHN5bXNpemUsIHR5cGUsIGJpbmRpbmcsIHZpc2liaWxpdHks Ci0JCSAgICAgbm9udmlzKTsKKwkJICAgICBub252aXMsIGRlZmluZWQgPT0g UFJFREVGSU5FRCk7CiAKICAgaWYgKG9sZHN5bSA9PSBOVUxMKQogICAgIHsK ZGlmZiAtLWdpdCBhL2dvbGQvc3ltdGFiLmggYi9nb2xkL3N5bXRhYi5oCmlu ZGV4IGU4ZDgyMzguLmU1ZWJjOTggMTAwNjQ0Ci0tLSBhL2dvbGQvc3ltdGFi LmgKKysrIGIvZ29sZC9zeW10YWIuaApAQCAtODAzLDYgKzgwMywxMSBAQCBj bGFzcyBTeW1ib2wKIAkgICAgJiYgIXRoaXMtPmlzX2Z1bmMoKSk7CiAgIH0K IAorICAvLyBSZXR1cm4gdHJ1ZSBpZiB0aGlzIHN5bWJvbCB3YXMgcHJlZGVm aW5lZCBieSB0aGUgbGlua2VyLgorICBib29sCisgIGlzX3ByZWRlZmluZWQo KSBjb25zdAorICB7IHJldHVybiB0aGlzLT5pc19wcmVkZWZpbmVkXzsgfQor CiAgcHJvdGVjdGVkOgogICAvLyBJbnN0YW5jZXMgb2YgdGhpcyBjbGFzcyBz aG91bGQgYWx3YXlzIGJlIGNyZWF0ZWQgYXQgYSBzcGVjaWZpYwogICAvLyBz aXplLgpAQCAtODI4LDcgKzgzMyw4IEBAIGNsYXNzIFN5bWJvbAogICB2b2lk CiAgIGluaXRfYmFzZV9vdXRwdXRfZGF0YShjb25zdCBjaGFyKiBuYW1lLCBj b25zdCBjaGFyKiB2ZXJzaW9uLCBPdXRwdXRfZGF0YSosCiAJCQllbGZjcHA6 OlNUVCwgZWxmY3BwOjpTVEIsIGVsZmNwcDo6U1RWLAotCQkJdW5zaWduZWQg Y2hhciBub252aXMsIGJvb2wgb2Zmc2V0X2lzX2Zyb21fZW5kKTsKKwkJCXVu c2lnbmVkIGNoYXIgbm9udmlzLCBib29sIG9mZnNldF9pc19mcm9tX2VuZCwK KwkJCWJvb2wgaXNfcHJlZGVmaW5lZCk7CiAKICAgLy8gSW5pdGlhbGl6ZSBm aWVsZHMgZm9yIGFuIE91dHB1dF9zZWdtZW50LgogICB2b2lkCkBAIC04MzYs MTMgKzg0MiwxNCBAQCBjbGFzcyBTeW1ib2wKIAkJCSAgIE91dHB1dF9zZWdt ZW50KiBvcywgZWxmY3BwOjpTVFQgdHlwZSwKIAkJCSAgIGVsZmNwcDo6U1RC IGJpbmRpbmcsIGVsZmNwcDo6U1RWIHZpc2liaWxpdHksCiAJCQkgICB1bnNp Z25lZCBjaGFyIG5vbnZpcywKLQkJCSAgIFNlZ21lbnRfb2Zmc2V0X2Jhc2Ug b2Zmc2V0X2Jhc2UpOworCQkJICAgU2VnbWVudF9vZmZzZXRfYmFzZSBvZmZz ZXRfYmFzZSwKKwkJCSAgIGJvb2wgaXNfcHJlZGVmaW5lZCk7CiAKICAgLy8g SW5pdGlhbGl6ZSBmaWVsZHMgZm9yIGEgY29uc3RhbnQuCiAgIHZvaWQKICAg aW5pdF9iYXNlX2NvbnN0YW50KGNvbnN0IGNoYXIqIG5hbWUsIGNvbnN0IGNo YXIqIHZlcnNpb24sIGVsZmNwcDo6U1RUIHR5cGUsCiAJCSAgICAgZWxmY3Bw OjpTVEIgYmluZGluZywgZWxmY3BwOjpTVFYgdmlzaWJpbGl0eSwKLQkJICAg ICB1bnNpZ25lZCBjaGFyIG5vbnZpcyk7CisJCSAgICAgdW5zaWduZWQgY2hh ciBub252aXMsIGJvb2wgaXNfcHJlZGVmaW5lZCk7CiAKICAgLy8gSW5pdGlh bGl6ZSBmaWVsZHMgZm9yIGFuIHVuZGVmaW5lZCBzeW1ib2wuCiAgIHZvaWQK QEAgLTk5MSw2ICs5OTgsOCBAQCBjbGFzcyBTeW1ib2wKICAgLy8gVHJ1ZSBp ZiB0aGlzIHN5bWJvbCB3YXMgYSB3ZWFrIHVuZGVmIHJlc29sdmVkIGJ5IGEg ZHluYW1pYyBkZWYKICAgLy8gKGJpdCAzMykuCiAgIGJvb2wgdW5kZWZfYmlu ZGluZ193ZWFrXyA6IDE7CisgIC8vIFRydWUgaWYgdGhpcyBzeW1ib2wgaXMg YSBwcmVkZWZpbmVkIGxpbmtlciBzeW1ib2wgKGJpdCAzNCkuCisgIGJvb2wg aXNfcHJlZGVmaW5lZF8gOiAxOwogfTsKIAogLy8gVGhlIHBhcnRzIG9mIGEg c3ltYm9sIHdoaWNoIGFyZSBzaXplIHNwZWNpZmljLiAgVXNpbmcgYSB0ZW1w bGF0ZQpAQCAtMTAyMCwyMCArMTAyOSwyMCBAQCBjbGFzcyBTaXplZF9zeW1i b2wgOiBwdWJsaWMgU3ltYm9sCiAgIGluaXRfb3V0cHV0X2RhdGEoY29uc3Qg Y2hhciogbmFtZSwgY29uc3QgY2hhciogdmVyc2lvbiwgT3V0cHV0X2RhdGEq LAogCQkgICBWYWx1ZV90eXBlIHZhbHVlLCBTaXplX3R5cGUgc3ltc2l6ZSwg ZWxmY3BwOjpTVFQsCiAJCSAgIGVsZmNwcDo6U1RCLCBlbGZjcHA6OlNUViwg dW5zaWduZWQgY2hhciBub252aXMsCi0JCSAgIGJvb2wgb2Zmc2V0X2lzX2Zy b21fZW5kKTsKKwkJICAgYm9vbCBvZmZzZXRfaXNfZnJvbV9lbmQsIGJvb2wg aXNfcHJlZGVmaW5lZCk7CiAKICAgLy8gSW5pdGlhbGl6ZSBmaWVsZHMgZm9y IGFuIE91dHB1dF9zZWdtZW50LgogICB2b2lkCiAgIGluaXRfb3V0cHV0X3Nl Z21lbnQoY29uc3QgY2hhciogbmFtZSwgY29uc3QgY2hhciogdmVyc2lvbiwg T3V0cHV0X3NlZ21lbnQqLAogCQkgICAgICBWYWx1ZV90eXBlIHZhbHVlLCBT aXplX3R5cGUgc3ltc2l6ZSwgZWxmY3BwOjpTVFQsCiAJCSAgICAgIGVsZmNw cDo6U1RCLCBlbGZjcHA6OlNUViwgdW5zaWduZWQgY2hhciBub252aXMsCi0J CSAgICAgIFNlZ21lbnRfb2Zmc2V0X2Jhc2Ugb2Zmc2V0X2Jhc2UpOworCQkg ICAgICBTZWdtZW50X29mZnNldF9iYXNlIG9mZnNldF9iYXNlLCBib29sIGlz X3ByZWRlZmluZWQpOwogCiAgIC8vIEluaXRpYWxpemUgZmllbGRzIGZvciBh IGNvbnN0YW50LgogICB2b2lkCiAgIGluaXRfY29uc3RhbnQoY29uc3QgY2hh ciogbmFtZSwgY29uc3QgY2hhciogdmVyc2lvbiwgVmFsdWVfdHlwZSB2YWx1 ZSwKIAkJU2l6ZV90eXBlIHN5bXNpemUsIGVsZmNwcDo6U1RULCBlbGZjcHA6 OlNUQiwgZWxmY3BwOjpTVFYsCi0JCXVuc2lnbmVkIGNoYXIgbm9udmlzKTsK KwkJdW5zaWduZWQgY2hhciBub252aXMsIGJvb2wgaXNfcHJlZGVmaW5lZCk7 CiAKICAgLy8gSW5pdGlhbGl6ZSBmaWVsZHMgZm9yIGFuIHVuZGVmaW5lZCBz eW1ib2wuCiAgIHZvaWQKQEAgLTEyNTAsNiArMTI1OSw5IEBAIGNsYXNzIFN5 bWJvbF90YWJsZQogICAgIFNDUklQVCwKICAgICAvLyBQcmVkZWZpbmVkIGJ5 IHRoZSBsaW5rZXIuCiAgICAgUFJFREVGSU5FRCwKKyAgICAvLyBEZWZpbmVk IGJ5IHRoZSBsaW5rZXIgZHVyaW5nIGFuIGluY3JlbWVudGFsIGJhc2UgbGlu aywgYnV0IG5vdAorICAgIC8vIGEgcHJlZGVmaW5lZCBzeW1ib2wgKGUuZy4s IGNvbW1vbiwgZGVmaW5lZCBpbiBzY3JpcHQpLgorICAgIElOQ1JFTUVOVEFM X0JBU0UsCiAgIH07CiAKICAgLy8gVGhlIG9yZGVyIGluIHdoaWNoIHdlIHNv cnQgY29tbW9uIHN5bWJvbHMuCg== --00163691fc2d83768b04a1db5c06--