From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 12421 invoked by alias); 24 May 2011 22:54:30 -0000 Received: (qmail 12413 invoked by uid 22791); 24 May 2011 22:54:28 -0000 X-SWARE-Spam-Status: No, hits=-1.7 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) (216.239.44.51) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Tue, 24 May 2011 22:54:12 +0000 Received: from kpbe16.cbf.corp.google.com (kpbe16.cbf.corp.google.com [172.25.105.80]) by smtp-out.google.com with ESMTP id p4OMsBO3001716 for ; Tue, 24 May 2011 15:54:11 -0700 Received: from ywl2 (ywl2.prod.google.com [10.192.12.2]) by kpbe16.cbf.corp.google.com with ESMTP id p4OMqltR030606 (version=TLSv1/SSLv3 cipher=RC4-MD5 bits=128 verify=NOT) for ; Tue, 24 May 2011 15:54:10 -0700 Received: by ywl2 with SMTP id 2so3298463ywl.12 for ; Tue, 24 May 2011 15:54:10 -0700 (PDT) MIME-Version: 1.0 Received: by 10.101.190.6 with SMTP id s6mr5658559anp.20.1306277649737; Tue, 24 May 2011 15:54:09 -0700 (PDT) Received: by 10.100.131.8 with HTTP; Tue, 24 May 2011 15:54:09 -0700 (PDT) In-Reply-To: References: Date: Tue, 24 May 2011 22:54:00 -0000 Message-ID: Subject: Re: [gold patch] Incremental 15/18: Add --incremental-base option. From: Cary Coutant To: Ian Lance Taylor Cc: Binutils Content-Type: multipart/mixed; boundary=00163691fc2d4a677104a40d7736 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-05/txt/msg00341.txt.bz2 --00163691fc2d4a677104a40d7736 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Content-length: 1734 >> You're going to some mild contortions to map in the base file, and then >> you are throwing away the mapping. =A0If you are going to stick with this >> copying approach, then I think it would be simpler to just map the >> output file as for a non-incremental link, and then open() the base file >> and read() the contents into the mapping you just created. =A0That will = be >> just as efficient--it's a nice sequential read--and will save you from >> running out of memory when you in effect map the output file twice. > > Argh, good point. I'll rework this. Revised patch attached. -cary 2011-05-24 Cary Coutant * gold.cc (queue_initial_tasks): Pass incremental base filename to Output_file::open_base_file; don't print error message. * incremental-dump.cc (main): Adjust call to Output_file::open_for_modification. * incremental-dump.cc (main): Likewise. * incremental.cc (Incremental_inputs::report_command_line): Ignore --incremental-base option when comparing command lines. Ignore parameter when given as separate argument. * options.h (class General_options): Add --incremental-base. * output.cc (Output_file::Output_file): (Output_file::open_base_file): Add base_name and writable parameters; read base file into new file; print error message here. (Output_file::map_no_anonymous): Add writable parameter; adjust all callers. * output.h (Output_file::open_for_modification): Rename to... (Output_file::open_base_file): ...this; add base_name and writable parameters; adjust all callers. (Output_file::map_no_anonymous): Add writable parameter; adjust all callers. * testsuite/Makefile.am (incremental_test_4): Test --incremental-base. * testsuite/Makefile.in: Regenerate. --00163691fc2d4a677104a40d7736 Content-Type: text/plain; charset=US-ASCII; name="incr-patch-15c.txt" Content-Disposition: attachment; filename="incr-patch-15c.txt" Content-Transfer-Encoding: base64 X-Attachment-Id: f_go3fyn3r0 Content-length: 17341 QWRkIC0taW5jcmVtZW50YWwtYmFzZSBvcHRpb24uCgoKMjAxMS0wNC0xNCBD YXJ5IENvdXRhbnQgIDxjY291dGFudEBnb29nbGUuY29tPgoKCSogZ29sZC5j YyAocXVldWVfaW5pdGlhbF90YXNrcyk6IFBhc3MgaW5jcmVtZW50YWwgYmFz ZSBmaWxlbmFtZQoJdG8gT3V0cHV0X2ZpbGU6Om9wZW5fYmFzZV9maWxlOyBk b24ndCBwcmludCBlcnJvciBtZXNzYWdlLgoJKiBpbmNyZW1lbnRhbC1kdW1w LmNjIChtYWluKTogQWRqdXN0IGNhbGwgdG8KCU91dHB1dF9maWxlOjpvcGVu X2Zvcl9tb2RpZmljYXRpb24uCgkqIGluY3JlbWVudGFsLWR1bXAuY2MgKG1h aW4pOiBMaWtld2lzZS4KCSogaW5jcmVtZW50YWwuY2MgKEluY3JlbWVudGFs X2lucHV0czo6cmVwb3J0X2NvbW1hbmRfbGluZSk6CglJZ25vcmUgLS1pbmNy ZW1lbnRhbC1iYXNlIG9wdGlvbiB3aGVuIGNvbXBhcmluZyBjb21tYW5kIGxp bmVzLgoJSWdub3JlIHBhcmFtZXRlciB3aGVuIGdpdmVuIGFzIHNlcGFyYXRl IGFyZ3VtZW50LgoJKiBvcHRpb25zLmggKGNsYXNzIEdlbmVyYWxfb3B0aW9u cyk6IEFkZCAtLWluY3JlbWVudGFsLWJhc2UuCgkqIG91dHB1dC5jYyAoT3V0 cHV0X2ZpbGU6Ok91dHB1dF9maWxlKToKCShPdXRwdXRfZmlsZTo6b3Blbl9i YXNlX2ZpbGUpOiBBZGQgYmFzZV9uYW1lIGFuZCB3cml0YWJsZSBwYXJhbWV0 ZXJzOwoJcmVhZCBiYXNlIGZpbGUgaW50byBuZXcgZmlsZTsgcHJpbnQgZXJy b3IgbWVzc2FnZSBoZXJlLgoJKE91dHB1dF9maWxlOjptYXBfbm9fYW5vbnlt b3VzKTogQWRkIHdyaXRhYmxlIHBhcmFtZXRlcjsgYWRqdXN0IGFsbAoJY2Fs bGVycy4KCSogb3V0cHV0LmggKE91dHB1dF9maWxlOjpvcGVuX2Zvcl9tb2Rp ZmljYXRpb24pOiBSZW5hbWUgdG8uLi4KCShPdXRwdXRfZmlsZTo6b3Blbl9i YXNlX2ZpbGUpOiAuLi50aGlzOyBhZGQgYmFzZV9uYW1lIGFuZAoJd3JpdGFi bGUgcGFyYW1ldGVyczsgYWRqdXN0IGFsbCBjYWxsZXJzLgoJKE91dHB1dF9m aWxlOjptYXBfbm9fYW5vbnltb3VzKTogQWRkIHdyaXRhYmxlIHBhcmFtZXRl cjsgYWRqdXN0IGFsbAoJY2FsbGVycy4KCSogdGVzdHN1aXRlL01ha2VmaWxl LmFtIChpbmNyZW1lbnRhbF90ZXN0XzQpOiBUZXN0CgktLWluY3JlbWVudGFs LWJhc2UuCgkqIHRlc3RzdWl0ZS9NYWtlZmlsZS5pbjogUmVnZW5lcmF0ZS4K CgpkaWZmIC0tZ2l0IGEvZ29sZC9nb2xkLmNjIGIvZ29sZC9nb2xkLmNjCmlu ZGV4IGJmNWFjODkuLjRmMWY4NzEgMTAwNjQ0Ci0tLSBhL2dvbGQvZ29sZC5j YworKysgYi9nb2xkL2dvbGQuY2MKQEAgLTIwNCwxMSArMjA0LDcgQEAgcXVl dWVfaW5pdGlhbF90YXNrcyhjb25zdCBHZW5lcmFsX29wdGlvbnMmIG9wdGlv bnMsCiAgICAgICBpZiAocGFyYW1ldGVycy0+aW5jcmVtZW50YWxfdXBkYXRl KCkpCiAJewogCSAgT3V0cHV0X2ZpbGUqIG9mID0gbmV3IE91dHB1dF9maWxl KG9wdGlvbnMub3V0cHV0X2ZpbGVfbmFtZSgpKTsKLQkgIGlmICghb2YtPm9w ZW5fZm9yX21vZGlmaWNhdGlvbigpKQotCSAgICBnb2xkX2luZm8oXygiaW5j cmVtZW50YWwgdXBkYXRlIG5vdCBwb3NzaWJsZTogIgotCQkJImNhbm5vdCBv cGVuICVzIiksCi0JCSAgICAgIG9wdGlvbnMub3V0cHV0X2ZpbGVfbmFtZSgp KTsKLQkgIGVsc2UKKwkgIGlmIChvZi0+b3Blbl9iYXNlX2ZpbGUob3B0aW9u cy5pbmNyZW1lbnRhbF9iYXNlKCksIHRydWUpKQogCSAgICB7CiAJICAgICAg aWJhc2UgPSBvcGVuX2luY3JlbWVudGFsX2JpbmFyeShvZik7CiAJICAgICAg aWYgKGliYXNlICE9IE5VTEwKZGlmZiAtLWdpdCBhL2dvbGQvaW5jcmVtZW50 YWwtZHVtcC5jYyBiL2dvbGQvaW5jcmVtZW50YWwtZHVtcC5jYwppbmRleCAx ODg3ZGI4Li5hNzI3ZWI1IDEwMDY0NAotLS0gYS9nb2xkL2luY3JlbWVudGFs LWR1bXAuY2MKKysrIGIvZ29sZC9pbmNyZW1lbnRhbC1kdW1wLmNjCkBAIC00 NDksMTAgKzQ0OSwxMCBAQCBtYWluKGludCBhcmdjLCBjaGFyKiogYXJndikK IAogICBPdXRwdXRfZmlsZSogZmlsZSA9IG5ldyBPdXRwdXRfZmlsZShmaWxl bmFtZSk7CiAKLSAgYm9vbCB0ID0gZmlsZS0+b3Blbl9mb3JfbW9kaWZpY2F0 aW9uKCk7CisgIGJvb2wgdCA9IGZpbGUtPm9wZW5fYmFzZV9maWxlKE5VTEws IGZhbHNlKTsKICAgaWYgKCF0KQogICAgIHsKLSAgICAgIGZwcmludGYoc3Rk ZXJyLCAiJXM6IG9wZW5fZm9yX21vZGlmaWNhdGlvbiglcyk6ICVzXG4iLCBh cmd2WzBdLCBmaWxlbmFtZSwKKyAgICAgIGZwcmludGYoc3RkZXJyLCAiJXM6 IG9wZW5fYmFzZV9maWxlKCVzKTogJXNcbiIsIGFyZ3ZbMF0sIGZpbGVuYW1l LAogICAgICAgICAgICAgICBzdHJlcnJvcihlcnJubykpOwogICAgICAgcmV0 dXJuIDE7CiAgICAgfQpkaWZmIC0tZ2l0IGEvZ29sZC9pbmNyZW1lbnRhbC5j YyBiL2dvbGQvaW5jcmVtZW50YWwuY2MKaW5kZXggMGE4OTk0MC4uYTI3YWZl ZSAxMDA2NDQKLS0tIGEvZ29sZC9pbmNyZW1lbnRhbC5jYworKysgYi9nb2xk L2luY3JlbWVudGFsLmNjCkBAIC04NjEsOCArODYxLDE3IEBAIEluY3JlbWVu dGFsX2lucHV0czo6cmVwb3J0X2NvbW1hbmRfbGluZShpbnQgYXJnYywgY29u c3QgY2hhciogY29uc3QqIGFyZ3YpCiAJICB8fCBzdHJjbXAoYXJndltpXSwg Ii0taW5jcmVtZW50YWwtY2hhbmdlZCIpID09IDAKIAkgIHx8IHN0cmNtcChh cmd2W2ldLCAiLS1pbmNyZW1lbnRhbC11bmNoYW5nZWQiKSA9PSAwCiAJICB8 fCBzdHJjbXAoYXJndltpXSwgIi0taW5jcmVtZW50YWwtdW5rbm93biIpID09 IDAKKwkgIHx8IGlzX3ByZWZpeF9vZigiLS1pbmNyZW1lbnRhbC1iYXNlPSIs IGFyZ3ZbaV0pCiAJICB8fCBpc19wcmVmaXhfb2YoIi0tZGVidWc9IiwgYXJn dltpXSkpCiAgICAgICAgIGNvbnRpbnVlOworICAgICAgaWYgKHN0cmNtcChh cmd2W2ldLCAiLS1pbmNyZW1lbnRhbC1iYXNlIikgPT0gMAorCSAgfHwgc3Ry Y21wKGFyZ3ZbaV0sICItLWRlYnVnIikgPT0gMCkKKwl7CisJICAvLyBXaGVu IHRoZXNlIG9wdGlvbnMgYXJlIHVzZWQgd2l0aG91dCB0aGUgJz0nLCBza2lw IHRoZQorCSAgLy8gZm9sbG93aW5nIHBhcmFtZXRlciBhcyB3ZWxsLgorCSAg KytpOworCSAgY29udGludWU7CisJfQogCiAgICAgICBhcmdzLmFwcGVuZCgi ICciKTsKICAgICAgIC8vIE5vdyBhcHBlbmQgYXJndltpXSwgYnV0IHdpdGgg YWxsIHNpbmdsZS1xdW90ZXMgZXNjYXBlZApkaWZmIC0tZ2l0IGEvZ29sZC9v cHRpb25zLmggYi9nb2xkL29wdGlvbnMuaAppbmRleCAzOTQ5NjkwLi5lMjcy YWU3IDEwMDY0NAotLS0gYS9nb2xkL29wdGlvbnMuaAorKysgYi9nb2xkL29w dGlvbnMuaApAQCAtNzkwLDYgKzc5MCwxMSBAQCBjbGFzcyBHZW5lcmFsX29w dGlvbnMKICAgREVGSU5FX3NwZWNpYWwoaW5jcmVtZW50YWxfdXBkYXRlLCBv cHRpb25zOjpUV09fREFTSEVTLCAnXDAnLAogCQkgTl8oIkRvIGFuIGluY3Jl bWVudGFsIGxpbms7IGV4aXQgaWYgbm90IHBvc3NpYmxlIiksIE5VTEwpOwog CisgIERFRklORV9zdHJpbmcoaW5jcmVtZW50YWxfYmFzZSwgb3B0aW9uczo6 VFdPX0RBU0hFUywgJ1wwJywgTlVMTCwKKyAgICAgICAgICAgICAgICBOXygi U2V0IGJhc2UgZmlsZSBmb3IgaW5jcmVtZW50YWwgbGlua2luZyIKKyAgICAg ICAgICAgICAgICAgICAiIChkZWZhdWx0IGlzIG91dHB1dCBmaWxlKSIpLAor ICAgICAgICAgICAgICAgIE5fKCJGSUxFIikpOworCiAgIERFRklORV9zcGVj aWFsKGluY3JlbWVudGFsX2NoYW5nZWQsIG9wdGlvbnM6OlRXT19EQVNIRVMs ICdcMCcsCiAgICAgICAgICAgICAgICAgIE5fKCJBc3N1bWUgZmlsZXMgY2hh bmdlZCIpLCBOVUxMKTsKIApkaWZmIC0tZ2l0IGEvZ29sZC9vdXRwdXQuY2Mg Yi9nb2xkL291dHB1dC5jYwppbmRleCA4MzU0ZGE5Li5mMjY0MjFkIDEwMDY0 NAotLS0gYS9nb2xkL291dHB1dC5jYworKysgYi9nb2xkL291dHB1dC5jYwpA QCAtNDQ5MiwzMSArNDQ5Miw3NyBAQCBPdXRwdXRfZmlsZTo6T3V0cHV0X2Zp bGUoY29uc3QgY2hhciogbmFtZSkKIH0KIAogLy8gVHJ5IHRvIG9wZW4gYW4g ZXhpc3RpbmcgZmlsZS4gIFJldHVybnMgZmFsc2UgaWYgdGhlIGZpbGUgZG9l c24ndAotLy8gZXhpc3QsIGhhcyBhIHNpemUgb2YgMCBvciBjYW4ndCBiZSBt bWFwcGVkLgorLy8gZXhpc3QsIGhhcyBhIHNpemUgb2YgMCBvciBjYW4ndCBi ZSBtbWFwcGVkLiAgSWYgQkFTRV9OQU1FIGlzIG5vdAorLy8gTlVMTCwgb3Bl biB0aGF0IGZpbGUgYXMgdGhlIGJhc2UgZm9yIGluY3JlbWVudGFsIGxpbmtp bmcsIGFuZAorLy8gY29weSBpdHMgY29udGVudHMgdG8gdGhlIG5ldyBvdXRw dXQgZmlsZS4gIFRoaXMgcm91dGluZSBjYW4KKy8vIGJlIGNhbGxlZCBmb3Ig aW5jcmVtZW50YWwgdXBkYXRlcywgaW4gd2hpY2ggY2FzZSBXUklUQUJMRSBz aG91bGQKKy8vIGJlIHRydWUsIG9yIGJ5IHRoZSBpbmNyZW1lbnRhbC1kdW1w IHV0aWxpdHksIGluIHdoaWNoIGNhc2UKKy8vIFdSSVRBQkxFIHNob3VsZCBi ZSBmYWxzZS4KIAogYm9vbAotT3V0cHV0X2ZpbGU6Om9wZW5fZm9yX21vZGlm aWNhdGlvbigpCitPdXRwdXRfZmlsZTo6b3Blbl9iYXNlX2ZpbGUoY29uc3Qg Y2hhciogYmFzZV9uYW1lLCBib29sIHdyaXRhYmxlKQogewogICAvLyBUaGUg bmFtZSAiLSIgbWVhbnMgInN0ZG91dCIuCiAgIGlmIChzdHJjbXAodGhpcy0+ bmFtZV8sICItIikgPT0gMCkKICAgICByZXR1cm4gZmFsc2U7CiAKKyAgYm9v bCB1c2VfYmFzZV9maWxlID0gYmFzZV9uYW1lICE9IE5VTEw7CisgIGlmICgh dXNlX2Jhc2VfZmlsZSkKKyAgICBiYXNlX25hbWUgPSB0aGlzLT5uYW1lXzsK KyAgZWxzZSBpZiAoc3RyY21wKGJhc2VfbmFtZSwgdGhpcy0+bmFtZV8pID09 IDApCisgICAgZ29sZF9mYXRhbChfKCIlczogaW5jcmVtZW50YWwgYmFzZSBh bmQgb3V0cHV0IGZpbGUgbmFtZSBhcmUgdGhlIHNhbWUiKSwKKwkgICAgICAg YmFzZV9uYW1lKTsKKwogICAvLyBEb24ndCBib3RoZXIgb3BlbmluZyBmaWxl cyB3aXRoIGEgc2l6ZSBvZiB6ZXJvLgogICBzdHJ1Y3Qgc3RhdCBzOwotICBp ZiAoOjpzdGF0KHRoaXMtPm5hbWVfLCAmcykgIT0gMCB8fCBzLnN0X3NpemUg PT0gMCkKLSAgICByZXR1cm4gZmFsc2U7CisgIGlmICg6OnN0YXQoYmFzZV9u YW1lLCAmcykgIT0gMCkKKyAgICB7CisgICAgICBnb2xkX2luZm8oXygiJXM6 IHN0YXQ6ICVzIiksIGJhc2VfbmFtZSwgc3RyZXJyb3IoZXJybm8pKTsKKyAg ICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgIGlmIChzLnN0X3NpemUgPT0g MCkKKyAgICB7CisgICAgICBnb2xkX2luZm8oXygiJXM6IGluY3JlbWVudGFs IGJhc2UgZmlsZSBpcyBlbXB0eSIpLCBiYXNlX25hbWUpOworICAgICAgcmV0 dXJuIGZhbHNlOworICAgIH0KKworICAvLyBJZiB3ZSdyZSB1c2luZyBhIGJh c2UgZmlsZSwgd2Ugd2FudCB0byBvcGVuIGl0IHJlYWQtb25seS4KKyAgaWYg KHVzZV9iYXNlX2ZpbGUpCisgICAgd3JpdGFibGUgPSBmYWxzZTsKIAotICBp bnQgbyA9IG9wZW5fZGVzY3JpcHRvcigtMSwgdGhpcy0+bmFtZV8sIE9fUkRX UiwgMCk7CisgIGludCBvZmxhZ3MgPSB3cml0YWJsZSA/IE9fUkRXUiA6IE9f UkRPTkxZOworICBpbnQgbyA9IG9wZW5fZGVzY3JpcHRvcigtMSwgYmFzZV9u YW1lLCBvZmxhZ3MsIDApOwogICBpZiAobyA8IDApCi0gICAgZ29sZF9mYXRh bChfKCIlczogb3BlbjogJXMiKSwgdGhpcy0+bmFtZV8sIHN0cmVycm9yKGVy cm5vKSk7CisgICAgeworICAgICAgZ29sZF9pbmZvKF8oIiVzOiBvcGVuOiAl cyIpLCBiYXNlX25hbWUsIHN0cmVycm9yKGVycm5vKSk7CisgICAgICByZXR1 cm4gZmFsc2U7CisgICAgfQorCisgIC8vIElmIHRoZSBiYXNlIGZpbGUgYW5k IHRoZSBvdXRwdXQgZmlsZSBhcmUgZGlmZmVyZW50LCBvcGVuIGEKKyAgLy8g bmV3IG91dHB1dCBmaWxlIGFuZCByZWFkIHRoZSBjb250ZW50cyBmcm9tIHRo ZSBiYXNlIGZpbGUgaW50bworICAvLyB0aGUgbmV3bHktbWFwcGVkIHJlZ2lv bi4KKyAgaWYgKHVzZV9iYXNlX2ZpbGUpCisgICAgeworICAgICAgdGhpcy0+ b3BlbihzLnN0X3NpemUpOworICAgICAgc3NpemVfdCBsZW4gPSA6OnJlYWQo bywgdGhpcy0+YmFzZV8sIHMuc3Rfc2l6ZSk7CisgICAgICBpZiAobGVuIDwg MCkKKyAgICAgICAgeworCSAgZ29sZF9pbmZvKF8oIiVzOiByZWFkIGZhaWxl ZDogJXMiKSwgYmFzZV9uYW1lLCBzdHJlcnJvcihlcnJubykpOworCSAgcmV0 dXJuIGZhbHNlOworICAgICAgICB9CisgICAgICBpZiAobGVuIDwgcy5zdF9z aXplKQorICAgICAgICB7CisJICBnb2xkX2luZm8oXygiJXM6IGZpbGUgdG9v IHNob3J0IiksIGJhc2VfbmFtZSk7CisJICByZXR1cm4gZmFsc2U7CisgICAg ICAgIH0KKyAgICAgIDo6Y2xvc2Uobyk7CisgICAgICByZXR1cm4gdHJ1ZTsK KyAgICB9CisKICAgdGhpcy0+b18gPSBvOwogICB0aGlzLT5maWxlX3NpemVf ID0gcy5zdF9zaXplOwogCi0gIC8vIElmIHRoZSBmaWxlIGNhbid0IGJlIG1t YXBwZWQsIGNvcHlpbmcgdGhlIGNvbnRlbnQgdG8gYW4gYW5vbnltb3VzCi0g IC8vIG1hcCB3aWxsIHByb2JhYmx5IG5lZ2F0ZSB0aGUgcGVyZm9ybWFuY2Ug YmVuZWZpdHMgb2YgaW5jcmVtZW50YWwKLSAgLy8gbGlua2luZy4gIFRoaXMg Y291bGQgYmUgaGVscGVkIGJ5IHVzaW5nIHZpZXdzIGFuZCBsb2FkaW5nIG9u bHkKLSAgLy8gdGhlIG5lY2Vzc2FyeSBwYXJ0cywgYnV0IHRoaXMgaXMgbm90 IHN1cHBvcnRlZCBhcyBvZiBub3cuCi0gIGlmICghdGhpcy0+bWFwX25vX2Fu b255bW91cygpKQorICBpZiAoIXRoaXMtPm1hcF9ub19hbm9ueW1vdXMod3Jp dGFibGUpKQogICAgIHsKICAgICAgIHJlbGVhc2VfZGVzY3JpcHRvcihvLCB0 cnVlKTsKICAgICAgIHRoaXMtPm9fID0gLTE7CkBAIC00NjA1LDcgKzQ2NTEs NyBAQCBPdXRwdXRfZmlsZTo6cmVzaXplKG9mZl90IGZpbGVfc2l6ZSkKICAg ICB7CiAgICAgICB0aGlzLT51bm1hcCgpOwogICAgICAgdGhpcy0+ZmlsZV9z aXplXyA9IGZpbGVfc2l6ZTsKLSAgICAgIGlmICghdGhpcy0+bWFwX25vX2Fu b255bW91cygpKQorICAgICAgaWYgKCF0aGlzLT5tYXBfbm9fYW5vbnltb3Vz KHRydWUpKQogCWdvbGRfZmF0YWwoXygiJXM6IG1tYXA6ICVzIiksIHRoaXMt Pm5hbWVfLCBzdHJlcnJvcihlcnJubykpOwogICAgIH0KIH0KQEAgLTQ2Mjgs OSArNDY3NCwxMCBAQCBPdXRwdXRfZmlsZTo6bWFwX2Fub255bW91cygpCiB9 CiAKIC8vIE1hcCB0aGUgZmlsZSBpbnRvIG1lbW9yeS4gIFJldHVybiB3aGV0 aGVyIHRoZSBtYXBwaW5nIHN1Y2NlZWRlZC4KKy8vIElmIFdSSVRBQkxFIGlz IHRydWUsIG1hcCB3aXRoIHdyaXRlIGFjY2Vzcy4KIAogYm9vbAotT3V0cHV0 X2ZpbGU6Om1hcF9ub19hbm9ueW1vdXMoKQorT3V0cHV0X2ZpbGU6Om1hcF9u b19hbm9ueW1vdXMoYm9vbCB3cml0YWJsZSkKIHsKICAgY29uc3QgaW50IG8g PSB0aGlzLT5vXzsKIApAQCAtNDY1MiwxMiArNDY5OSwxNCBAQCBPdXRwdXRf ZmlsZTo6bWFwX25vX2Fub255bW91cygpCiAgIC8vIG91dHB1dCBmaWxlIHdp bGwgd2luZCB1cCBpbmNvbXBsZXRlLCBidXQgd2Ugd2lsbCBoYXZlIGFscmVh ZHkKICAgLy8gZXhpdGVkLiAgVGhlIGFsdGVybmF0aXZlIHRvIGZhbGxvY2F0 ZSB3b3VsZCBiZSB0byB1c2UgZmRhdGFzeW5jLAogICAvLyBidXQgdGhhdCB3 b3VsZCBiZSBhIG1vcmUgc2lnbmlmaWNhbnQgcGVyZm9ybWFuY2UgaGl0Lgot ICBpZiAoOjpwb3NpeF9mYWxsb2NhdGUobywgMCwgdGhpcy0+ZmlsZV9zaXpl XykgPCAwKQorICBpZiAod3JpdGFibGUgJiYgOjpwb3NpeF9mYWxsb2NhdGUo bywgMCwgdGhpcy0+ZmlsZV9zaXplXykgPCAwKQogICAgIGdvbGRfZmF0YWwo XygiJXM6ICVzIiksIHRoaXMtPm5hbWVfLCBzdHJlcnJvcihlcnJubykpOwog CiAgIC8vIE1hcCB0aGUgZmlsZSBpbnRvIG1lbW9yeS4KLSAgYmFzZSA9IDo6 bW1hcChOVUxMLCB0aGlzLT5maWxlX3NpemVfLCBQUk9UX1JFQUQgfCBQUk9U X1dSSVRFLAotCQlNQVBfU0hBUkVELCBvLCAwKTsKKyAgaW50IHByb3QgPSBQ Uk9UX1JFQUQ7CisgIGlmICh3cml0YWJsZSkKKyAgICBwcm90IHw9IFBST1Rf V1JJVEU7CisgIGJhc2UgPSA6Om1tYXAoTlVMTCwgdGhpcy0+ZmlsZV9zaXpl XywgcHJvdCwgTUFQX1NIQVJFRCwgbywgMCk7CiAKICAgLy8gVGhlIG1tYXAg Y2FsbCBtaWdodCBmYWlsIGJlY2F1c2Ugb2YgZmlsZSBzeXN0ZW0gaXNzdWVz OiB0aGUgZmlsZQogICAvLyBzeXN0ZW0gbWlnaHQgbm90IHN1cHBvcnQgbW1h cCBhdCBhbGwsIG9yIGl0IG1pZ2h0IG5vdCBzdXBwb3J0CkBAIC00Njc1LDcg KzQ3MjQsNyBAQCBPdXRwdXRfZmlsZTo6bWFwX25vX2Fub255bW91cygpCiB2 b2lkCiBPdXRwdXRfZmlsZTo6bWFwKCkKIHsKLSAgaWYgKHRoaXMtPm1hcF9u b19hbm9ueW1vdXMoKSkKKyAgaWYgKHRoaXMtPm1hcF9ub19hbm9ueW1vdXMo dHJ1ZSkpCiAgICAgcmV0dXJuOwogCiAgIC8vIFRoZSBtbWFwIGNhbGwgbWln aHQgZmFpbCBiZWNhdXNlIG9mIGZpbGUgc3lzdGVtIGlzc3VlczogdGhlIGZp bGUKZGlmZiAtLWdpdCBhL2dvbGQvb3V0cHV0LmggYi9nb2xkL291dHB1dC5o CmluZGV4IDZiOWI1ODkuLmY4NjkzYzUgMTAwNjQ0Ci0tLSBhL2dvbGQvb3V0 cHV0LmgKKysrIGIvZ29sZC9vdXRwdXQuaApAQCAtNDE4OCw5ICs0MTg4LDEw IEBAIGNsYXNzIE91dHB1dF9maWxlCiAKICAgLy8gVHJ5IHRvIG9wZW4gYW4g ZXhpc3RpbmcgZmlsZS4gUmV0dXJucyBmYWxzZSBpZiB0aGUgZmlsZSBkb2Vz bid0CiAgIC8vIGV4aXN0LCBoYXMgYSBzaXplIG9mIDAgb3IgY2FuJ3QgYmUg bW1hcGVkLiAgVGhpcyBtZXRob2QgaXMKLSAgLy8gdGhyZWFkLXVuc2FmZS4K KyAgLy8gdGhyZWFkLXVuc2FmZS4gIElmIEJBU0VfTkFNRSBpcyBub3QgTlVM TCwgdXNlIHRoZSBjb250ZW50cyBvZgorICAvLyB0aGF0IGZpbGUgYXMgdGhl IGJhc2UgZm9yIGluY3JlbWVudGFsIGxpbmtpbmcuCiAgIGJvb2wKLSAgb3Bl bl9mb3JfbW9kaWZpY2F0aW9uKCk7CisgIG9wZW5fYmFzZV9maWxlKGNvbnN0 IGNoYXIqIGJhc2VfbmFtZSwgYm9vbCB3cml0YWJsZSk7CiAKICAgLy8gT3Bl biB0aGUgb3V0cHV0IGZpbGUuICBGSUxFX1NJWkUgaXMgdGhlIGZpbmFsIHNp emUgb2YgdGhlIGZpbGUuCiAgIC8vIElmIHRoZSBmaWxlIGFscmVhZHkgZXhp c3RzLCBpdCBpcyBkZWxldGVkL3RydW5jYXRlZC4gIFRoaXMgbWV0aG9kCkBA IC00Mjc1LDcgKzQyNzYsNyBAQCBjbGFzcyBPdXRwdXRfZmlsZQogCiAgIC8v IE1hcCB0aGUgZmlsZSBpbnRvIG1lbW9yeS4KICAgYm9vbAotICBtYXBfbm9f YW5vbnltb3VzKCk7CisgIG1hcF9ub19hbm9ueW1vdXMoYm9vbCk7CiAKICAg Ly8gVW5tYXAgdGhlIGZpbGUgZnJvbSBtZW1vcnkgKGFuZCBmbHVzaCB0byBk aXNrIGJ1ZmZlcnMpLgogICB2b2lkCmRpZmYgLS1naXQgYS9nb2xkL3Rlc3Rz dWl0ZS9NYWtlZmlsZS5hbSBiL2dvbGQvdGVzdHN1aXRlL01ha2VmaWxlLmFt CmluZGV4IDkwODYwZjEuLjgyMWE5YmIgMTAwNjQ0Ci0tLSBhL2dvbGQvdGVz dHN1aXRlL01ha2VmaWxlLmFtCisrKyBiL2dvbGQvdGVzdHN1aXRlL01ha2Vm aWxlLmFtCkBAIC0xODQwLDEzICsxODQwLDE1IEBAIGluY3JlbWVudGFsX3Rl c3RfMzogdHdvX2ZpbGVfdGVzdF8xLm8gdHdvX2ZpbGVfdGVzdF8xYl92MS5v IHR3b19maWxlX3Rlc3RfMWIubyBcCiAJJChDWFhMSU5LKSAtV2wsLS1pbmNy ZW1lbnRhbC11cGRhdGUgLUJnY2N0ZXN0ZGlyLyB0d29fZmlsZV90ZXN0XzEu byB0d29fZmlsZV90ZXN0X3RtcC5vIHR3b19maWxlX3Rlc3RfMi5vIHR3b19m aWxlX3Rlc3RfbWFpbi5vCiAKIGNoZWNrX1BST0dSQU1TICs9IGluY3JlbWVu dGFsX3Rlc3RfNAorTU9TVExZQ0xFQU5GSUxFUyArPSBpbmNyZW1lbnRhbF90 ZXN0XzQuYmFzZQogaW5jcmVtZW50YWxfdGVzdF80OiB0d29fZmlsZV90ZXN0 XzEubyB0d29fZmlsZV90ZXN0XzFiLm8gdHdvX2ZpbGVfdGVzdF8yX3YxLm8g XAogCQkgICAgdHdvX2ZpbGVfdGVzdF8yLm8gdHdvX2ZpbGVfdGVzdF9tYWlu Lm8gZ2NjdGVzdGRpci9sZAogCWNwIC1mIHR3b19maWxlX3Rlc3RfMl92MS5v IHR3b19maWxlX3Rlc3RfdG1wLm8KIAkkKENYWExJTkspIC1XbCwtLWluY3Jl bWVudGFsLWZ1bGwgLUJnY2N0ZXN0ZGlyLyB0d29fZmlsZV90ZXN0XzEubyB0 d29fZmlsZV90ZXN0XzFiLm8gdHdvX2ZpbGVfdGVzdF90bXAubyB0d29fZmls ZV90ZXN0X21haW4ubworCW12IC1mIGluY3JlbWVudGFsX3Rlc3RfNCBpbmNy ZW1lbnRhbF90ZXN0XzQuYmFzZQogCUBzbGVlcCAxCiAJY3AgLWYgdHdvX2Zp bGVfdGVzdF8yLm8gdHdvX2ZpbGVfdGVzdF90bXAubwotCSQoQ1hYTElOSykg LVdsLC0taW5jcmVtZW50YWwtdXBkYXRlIC1CZ2NjdGVzdGRpci8gdHdvX2Zp bGVfdGVzdF8xLm8gdHdvX2ZpbGVfdGVzdF8xYi5vIHR3b19maWxlX3Rlc3Rf dG1wLm8gdHdvX2ZpbGVfdGVzdF9tYWluLm8KKwkkKENYWExJTkspIC1XbCwt LWluY3JlbWVudGFsLXVwZGF0ZSwtLWluY3JlbWVudGFsLWJhc2U9aW5jcmVt ZW50YWxfdGVzdF80LmJhc2UgLUJnY2N0ZXN0ZGlyLyB0d29fZmlsZV90ZXN0 XzEubyB0d29fZmlsZV90ZXN0XzFiLm8gdHdvX2ZpbGVfdGVzdF90bXAubyB0 d29fZmlsZV90ZXN0X21haW4ubwogCiBlbmRpZiBERUZBVUxUX1RBUkdFVF9Y ODZfNjQKIApkaWZmIC0tZ2l0IGEvZ29sZC90ZXN0c3VpdGUvTWFrZWZpbGUu aW4gYi9nb2xkL3Rlc3RzdWl0ZS9NYWtlZmlsZS5pbgppbmRleCA1MzdkOTUy Li5mZGY1ZThmIDEwMDY0NAotLS0gYS9nb2xkL3Rlc3RzdWl0ZS9NYWtlZmls ZS5pbgorKysgYi9nb2xkL3Rlc3RzdWl0ZS9NYWtlZmlsZS5pbgpAQCAtNDM2 LDcgKzQzNiw4IEBAIGNoZWNrX1BST0dSQU1TID0gJChhbV9fRVhFRVhUXzEp ICQoYW1fX0VYRUVYVF8yKSAkKGFtX19FWEVFWFRfMykgXAogQERFRkFVTFRf VEFSR0VUX1g4Nl82NF9UUlVFQEBHQ0NfVFJVRUBATkFUSVZFX0xJTktFUl9U UlVFQGFtX19hcHBlbmRfMzUgPSBpbmNyZW1lbnRhbF90ZXN0XzIgXAogQERF RkFVTFRfVEFSR0VUX1g4Nl82NF9UUlVFQEBHQ0NfVFJVRUBATkFUSVZFX0xJ TktFUl9UUlVFQAlpbmNyZW1lbnRhbF90ZXN0XzMgXAogQERFRkFVTFRfVEFS R0VUX1g4Nl82NF9UUlVFQEBHQ0NfVFJVRUBATkFUSVZFX0xJTktFUl9UUlVF QAlpbmNyZW1lbnRhbF90ZXN0XzQKLUBERUZBVUxUX1RBUkdFVF9YODZfNjRf VFJVRUBAR0NDX1RSVUVAQE5BVElWRV9MSU5LRVJfVFJVRUBhbV9fYXBwZW5k XzM2ID0gdHdvX2ZpbGVfdGVzdF90bXAubworQERFRkFVTFRfVEFSR0VUX1g4 Nl82NF9UUlVFQEBHQ0NfVFJVRUBATkFUSVZFX0xJTktFUl9UUlVFQGFtX19h cHBlbmRfMzYgPSB0d29fZmlsZV90ZXN0X3RtcC5vIFwKK0BERUZBVUxUX1RB UkdFVF9YODZfNjRfVFJVRUBAR0NDX1RSVUVAQE5BVElWRV9MSU5LRVJfVFJV RUAJaW5jcmVtZW50YWxfdGVzdF80LmJhc2UKIAogIyBUaGVzZSB0ZXN0cyB3 b3JrIHdpdGggbmF0aXZlIGFuZCBjcm9zcyBsaW5rZXJzLgogCkBAIC00NjAw LDkgKzQ2MDEsMTAgQEAgdW5pbnN0YWxsLWFtOgogQERFRkFVTFRfVEFSR0VU X1g4Nl82NF9UUlVFQEBHQ0NfVFJVRUBATkFUSVZFX0xJTktFUl9UUlVFQAkJ ICAgIHR3b19maWxlX3Rlc3RfMi5vIHR3b19maWxlX3Rlc3RfbWFpbi5vIGdj Y3Rlc3RkaXIvbGQKIEBERUZBVUxUX1RBUkdFVF9YODZfNjRfVFJVRUBAR0ND X1RSVUVAQE5BVElWRV9MSU5LRVJfVFJVRUAJY3AgLWYgdHdvX2ZpbGVfdGVz dF8yX3YxLm8gdHdvX2ZpbGVfdGVzdF90bXAubwogQERFRkFVTFRfVEFSR0VU X1g4Nl82NF9UUlVFQEBHQ0NfVFJVRUBATkFUSVZFX0xJTktFUl9UUlVFQAkk KENYWExJTkspIC1XbCwtLWluY3JlbWVudGFsLWZ1bGwgLUJnY2N0ZXN0ZGly LyB0d29fZmlsZV90ZXN0XzEubyB0d29fZmlsZV90ZXN0XzFiLm8gdHdvX2Zp bGVfdGVzdF90bXAubyB0d29fZmlsZV90ZXN0X21haW4ubworQERFRkFVTFRf VEFSR0VUX1g4Nl82NF9UUlVFQEBHQ0NfVFJVRUBATkFUSVZFX0xJTktFUl9U UlVFQAltdiAtZiBpbmNyZW1lbnRhbF90ZXN0XzQgaW5jcmVtZW50YWxfdGVz dF80LmJhc2UKIEBERUZBVUxUX1RBUkdFVF9YODZfNjRfVFJVRUBAR0NDX1RS VUVAQE5BVElWRV9MSU5LRVJfVFJVRUAJQHNsZWVwIDEKIEBERUZBVUxUX1RB UkdFVF9YODZfNjRfVFJVRUBAR0NDX1RSVUVAQE5BVElWRV9MSU5LRVJfVFJV RUAJY3AgLWYgdHdvX2ZpbGVfdGVzdF8yLm8gdHdvX2ZpbGVfdGVzdF90bXAu bwotQERFRkFVTFRfVEFSR0VUX1g4Nl82NF9UUlVFQEBHQ0NfVFJVRUBATkFU SVZFX0xJTktFUl9UUlVFQAkkKENYWExJTkspIC1XbCwtLWluY3JlbWVudGFs LXVwZGF0ZSAtQmdjY3Rlc3RkaXIvIHR3b19maWxlX3Rlc3RfMS5vIHR3b19m aWxlX3Rlc3RfMWIubyB0d29fZmlsZV90ZXN0X3RtcC5vIHR3b19maWxlX3Rl c3RfbWFpbi5vCitAREVGQVVMVF9UQVJHRVRfWDg2XzY0X1RSVUVAQEdDQ19U UlVFQEBOQVRJVkVfTElOS0VSX1RSVUVACSQoQ1hYTElOSykgLVdsLC0taW5j cmVtZW50YWwtdXBkYXRlLC0taW5jcmVtZW50YWwtYmFzZT1pbmNyZW1lbnRh bF90ZXN0XzQuYmFzZSAtQmdjY3Rlc3RkaXIvIHR3b19maWxlX3Rlc3RfMS5v IHR3b19maWxlX3Rlc3RfMWIubyB0d29fZmlsZV90ZXN0X3RtcC5vIHR3b19m aWxlX3Rlc3RfbWFpbi5vCiBATkFUSVZFX09SX0NST1NTX0xJTktFUl9UUlVF QHNjcmlwdF90ZXN0XzEwLm86IHNjcmlwdF90ZXN0XzEwLnMKIEBOQVRJVkVf T1JfQ1JPU1NfTElOS0VSX1RSVUVACSQoVEVTVF9BUykgLW8gJEAgJDwKIEBO QVRJVkVfT1JfQ1JPU1NfTElOS0VSX1RSVUVAc2NyaXB0X3Rlc3RfMTA6ICQo c3JjZGlyKS9zY3JpcHRfdGVzdF8xMC50IHNjcmlwdF90ZXN0XzEwLm8gZ2Nj dGVzdGRpci9sZAo= --00163691fc2d4a677104a40d7736--