From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 845 invoked by alias); 16 Jul 2014 20:33:00 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Received: (qmail 807 invoked by uid 89); 16 Jul 2014 20:32:58 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-2.6 required=5.0 tests=AWL,BAYES_00,RCVD_IN_DNSWL_LOW,RP_MATCHES_RCVD,SPF_PASS autolearn=ham version=3.3.2 X-HELO: mail-wg0-f49.google.com Received: from mail-wg0-f49.google.com (HELO mail-wg0-f49.google.com) (74.125.82.49) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with (AES128-SHA encrypted) ESMTPS; Wed, 16 Jul 2014 20:32:54 +0000 Received: by mail-wg0-f49.google.com with SMTP id k14so1496588wgh.32 for ; Wed, 16 Jul 2014 13:32:50 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:mime-version:date:message-id:subject:from:to:cc :content-type; bh=5T1WX9mfwUitQSMfteWYl43TP6b2Hv7jqN3rTJl54t4=; b=kT/9YE14WyLcU8S+UUMkFqZhYLRFe4qybLh5NFfy9uvkS9oivF09PmhHZWHRvnwaKm zUt/vpWa8fMvF3hNpK4EkrItzvdPSTzf8f/W58e6TX1JyAsLYqwln46/OQkWYLF29h7J XN57bW/fHHmkuIadIZMt4GJkKFsserPxpSkmKYDRSP2dzZgpsVbjvMTCqtVcdcWAM1HP iql8Os2S1fJQlH1MQdlF++dHf5o7ePeH7Y3ojNiScCxrXiM/Vn5Z4JfvOdQUzrOEX746 UvvTdEVvml593OXnNZ4gBsRwfNtUa85VBEkOhWAOW5aUf15s/q2dN15c3Eo1j1CUKgLO XDYA== X-Gm-Message-State: ALoCoQn20ju0HyIgEWGyuRW2jVD2+wJ7nZuiJNsmN5Xo5qevPCCrdu6lWkkFnehgtcNM27vK/pdj MIME-Version: 1.0 X-Received: by 10.180.212.12 with SMTP id ng12mr16950920wic.9.1405542770644; Wed, 16 Jul 2014 13:32:50 -0700 (PDT) Received: by 10.180.7.34 with HTTP; Wed, 16 Jul 2014 13:32:50 -0700 (PDT) Date: Wed, 16 Jul 2014 22:03:00 -0000 Message-ID: Subject: FDO and source changes From: Xinliang David Li To: GCC Patches Cc: Jan Hubicka Content-Type: multipart/mixed; boundary=001a11c354709003a904fe556d31 X-IsSubscribed: yes X-SW-Source: 2014-07/txt/msg01171.txt.bz2 --001a11c354709003a904fe556d31 Content-Type: text/plain; charset=UTF-8 Content-length: 1409 Instrumentation based FDO is designed to work when the source files that are used to generate the instr binary match exactly with the sources in profile-use compile. It is known historically that using stale profile (due to source changes, not gcda format change) can lead to lots of mismatch warnings and even worse -- compiler ICEs. This is due to two reasons: 1) the profile lookup for each function is based on funcdef_no which can change when function definition order is changed or new functions are inserted in the middle of a source 2) the indirect call target id may change due to source changes: before GCC4.9, the id uses cgraph uid which is as bad as funcdef_no. Attributing wrong IC target to the indirect call site is the main cause of compiler ICE (we have signature match check, but bad target can leak through result in problem later). Starting from gcc49, the indirect target profiling uses profile_id which is stable for public functions. This patch introduces a new parameter for FDO to determine whether to use internal id or assembler name based external id for profile lookup. When the external id is used, GCC FDO will become very tolerant to simple source changes. Note that autoFDO solves this problem but it is currently limited to Intel platforms with LBR support. (Tested with SPEC, SPEC06 and large internal benchmarks. No performance impact). Ok for trunk? thanks, David --001a11c354709003a904fe556d31 Content-Type: text/plain; charset=US-ASCII; name="prof_ext_id.txt" Content-Disposition: attachment; filename="prof_ext_id.txt" Content-Transfer-Encoding: base64 X-Attachment-Id: f_hxp3uj2r0 Content-length: 12013 SW5kZXg6IHBhcmFtcy5kZWYKPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g cGFyYW1zLmRlZgkocmV2aXNpb24gMjEyNjgyKQorKysgcGFyYW1zLmRlZgko d29ya2luZyBjb3B5KQpAQCAtODY5LDYgKzg2OSwxNCBAQCBERUZQQVJBTSAo UEFSQU1fTE9PUF9JTlZBUklBTlRfTUFYX0JCU19JCiAJICAiTWF4IGJhc2lj IGJsb2NrcyBudW1iZXIgaW4gbG9vcCBmb3IgbG9vcCBpbnZhcmlhbnQgbW90 aW9uIiwKIAkgIDEwMDAwLCAwLCAwKQogCisvKiBXaGVuIHRoZSBwYXJhbWV0 ZXIgaXMgMSwgdXNlIHRoZSBpbnRlcm5hbCBmdW5jdGlvbiBpZAorICAgdG8g bG9vayB1cCBmb3IgcHJvZmlsZSBkYXRhLiBPdGhlcndpc2UsIHVzZSBhIG1v cmUgc3RhYmxlCisgICBleHRlcm5hbCBpZCBiYXNlZCBvbiBhc3NlbWJsZXIg bmFtZSBhbmQgc291cmNlIGxvY2F0aW9uLiAqLworREVGUEFSQU0gKFBBUkFN X1BST0ZJTEVfRlVOQ19JTlRFUk5BTF9JRCwKKyAgICAgICAgICJwcm9maWxl LWZ1bmMtaW50ZXJuYWwtaWQiLAorICAgICAgICAgInVzZSBpbnRlcm5hbCBm dW5jdGlvbiBpZCBpbiBwcm9maWxlIGxvb2t1cCIsCisgICAgICAgICAgMSwg MCwgMSkKKwogLyogQXZvaWQgU0xQIHZlY3Rvcml6YXRpb24gb2YgbGFyZ2Ug YmFzaWMgYmxvY2tzLiAgKi8KIERFRlBBUkFNIChQQVJBTV9TTFBfTUFYX0lO U05TX0lOX0JCLAogICAgICAgICAgICJzbHAtbWF4LWluc25zLWluLWJiIiwK SW5kZXg6IENoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBD aGFuZ2VMb2cJKHJldmlzaW9uIDIxMjY4MikKKysrIENoYW5nZUxvZwkod29y a2luZyBjb3B5KQpAQCAtMSwzICsxLDEwIEBACisyMDE0LTA3LTE2ICBYaW5s aWFuZyBEYXZpZCBMaSAgPGRhdmlkeGxAZ29vZ2xlLmNvbT4KKworCSogcGFy YW1zLmRlZjogTmV3IHBhcmFtZXRlci4KKwkqIGNvdmVyYWdlLmMgKGdldF9j b3ZlcmFnZV9jb3VudHMpOiBDaGVjayBuZXcgZmxhZy4KKwkoY292ZXJhZ2Vf Y29tcHV0ZV9wcm9maWxlX2lkKTogQ2hlY2sgbmV3IGZsYWcuCisJKGNvdmVy YWdlX2JlZ2luX2Z1bmN0aW9uKTogQ2hlY2sgbmV3IGZsYWcuCisKIDIwMTQt MDctMTYgIERvZGppIFNla2V0ZWxpICA8ZG9kamlAcmVkaGF0LmNvbT4KIAog CVN1cHBvcnQgbG9jYXRpb24gdHJhY2tpbmcgZm9yIGJ1aWx0LWluIG1hY3Jv IHRva2VucwpJbmRleDogdGVzdHN1aXRlL2crKy5kZy90cmVlLXByb2YvcmVv cmRlci5DCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHRlc3RzdWl0ZS9n KysuZGcvdHJlZS1wcm9mL3Jlb3JkZXIuQwkocmV2aXNpb24gMCkKKysrIHRl c3RzdWl0ZS9nKysuZGcvdHJlZS1wcm9mL3Jlb3JkZXIuQwkocmV2aXNpb24g MCkKQEAgLTAsMCArMSw0OCBAQAorLyogeyBkZy1vcHRpb25zICItTzIgLWZu by1kZXZpcnR1YWxpemUgLS1wYXJhbT1wcm9maWxlLWZ1bmMtaW50ZXJuYWwt aWQ9MCAtZmR1bXAtaXBhLXByb2ZpbGUgLVduby1jb3ZlcmFnZS1taXNtYXRj aCAtV25vLWF0dHJpYnV0ZXMiIH0gKi8KKworI2lmZGVmIF9QUk9GSUxFX1VT RQorI2luY2x1ZGUgInJlb3JkZXJfY2xhc3MxLmgiCisjaW5jbHVkZSAicmVv cmRlcl9jbGFzczIuaCIKKyNlbHNlCisjaW5jbHVkZSAicmVvcmRlcl9jbGFz czIuaCIKKyNpbmNsdWRlICJyZW9yZGVyX2NsYXNzMS5oIgorI2VuZGlmCisK K2ludCBnOworc3RhdGljIF9fYXR0cmlidXRlX18oKGFsd2F5c19pbmxpbmUp KQordm9pZCB0ZXN0MSAoQSAqdGMpCit7CisgIGludCBpOworICBmb3IgKGkg PSAwOyBpIDwgMTAwMDsgaSsrKQorICAgICBnICs9IHRjLT5mb28oKTsgCisg ICBpZiAoZzwxMDApIGcrKzsKK30KKworc3RhdGljIF9fYXR0cmlidXRlX18o KGFsd2F5c19pbmxpbmUpKQordm9pZCB0ZXN0MiAoQiAqdGMpCit7CisgIGlu dCBpOworICBmb3IgKGkgPSAwOyBpIDwgMTAwMDsgaSsrKQorICAgICBnICs9 IHRjLT5mb28oKTsKK30KKworCisjaWZkZWYgX1BST0ZJTEVfVVNFCitfX2F0 dHJpYnV0ZV9fKChub2lubGluZSkpIHZvaWQgdGVzdF9hKEEgKmFwKSB7IHRl c3QxIChhcCk7IH0KK19fYXR0cmlidXRlX18oKG5vaW5saW5lKSkgdm9pZCB0 ZXN0X2IoQiAqYnApIHsgdGVzdDIgKGJwKTsgfQorI2Vsc2UKK19fYXR0cmli dXRlX18oKG5vaW5saW5lKSkgdm9pZCB0ZXN0X2IoQiAqYnApIHsgdGVzdDIg KGJwKTsgfQorX19hdHRyaWJ1dGVfXygobm9pbmxpbmUpKSB2b2lkIHRlc3Rf YShBICphcCkgeyB0ZXN0MSAoYXApOyB9CisjZW5kaWYKKworaW50IG1haW4o KQoreworICBBKiBhcCA9IG5ldyBBKCk7CisgIEIqIGJwID0gbmV3IEIoKTsK KworICB0ZXN0X2EoYXApOworICB0ZXN0X2IoYnApOworfQorCisvKiB7IGRn LWZpbmFsLXVzZSB7IHNjYW4taXBhLWR1bXAtdGltZXMgIkluZGlyZWN0IGNh bGwgLT4gZGlyZWN0IGNhbGwiIDIgInByb2ZpbGUiIH0gfSAqLworCkluZGV4 OiB0ZXN0c3VpdGUvZysrLmRnL3RyZWUtcHJvZi90cmVlLXByb2YuZXhwCj09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT0KLS0tIHRlc3RzdWl0ZS9nKysuZGcvdHJl ZS1wcm9mL3RyZWUtcHJvZi5leHAJKHJldmlzaW9uIDIxMjY4MikKKysrIHRl c3RzdWl0ZS9nKysuZGcvdHJlZS1wcm9mL3RyZWUtcHJvZi5leHAJKHdvcmtp bmcgY29weSkKQEAgLTQyLDggKzQyLDggQEAgc2V0IFBST0ZPUFRfT1BUSU9O UyBbbGlzdCB7fV0KICMgVGhlc2UgYXJlIGdsb2JhbHMgdXNlZCBieSBwcm9m b3B0LWV4ZWN1dGUuICBUaGUgZmlyc3QgaXMgb3B0aW9ucwogIyBuZWVkZWQg dG8gZ2VuZXJhdGUgcHJvZmlsZSBkYXRhLCB0aGUgc2Vjb25kIGlzIG9wdGlv bnMgdG8gdXNlIHRoZQogIyBwcm9maWxlIGRhdGEuCi1zZXQgcHJvZmlsZV9v cHRpb24gIi1mcHJvZmlsZS1nZW5lcmF0ZSIKLXNldCBmZWVkYmFja19vcHRp b24gIi1mcHJvZmlsZS11c2UiCitzZXQgcHJvZmlsZV9vcHRpb24gIi1mcHJv ZmlsZS1nZW5lcmF0ZSAtRF9QUk9GSUxFX0dFTkVSQVRFIgorc2V0IGZlZWRi YWNrX29wdGlvbiAiLWZwcm9maWxlLXVzZSAtRF9QUk9GSUxFX1VTRSIKIAog Zm9yZWFjaCBzcmMgW2xzb3J0IFtnbG9iIC1ub2NvbXBsYWluICRzcmNkaXIv JHN1YmRpci8qLkNdXSB7CiAgICAgIyBJZiB3ZSdyZSBvbmx5IHRlc3Rpbmcg c3BlY2lmaWMgZmlsZXMgYW5kIHRoaXMgaXNuJ3Qgb25lIG9mIHRoZW0sIHNr aXAgaXQuCkluZGV4OiB0ZXN0c3VpdGUvZysrLmRnL3RyZWUtcHJvZi9yZW9y ZGVyX2NsYXNzMS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHRlc3Rz dWl0ZS9nKysuZGcvdHJlZS1wcm9mL3Jlb3JkZXJfY2xhc3MxLmgJKHJldmlz aW9uIDApCisrKyB0ZXN0c3VpdGUvZysrLmRnL3RyZWUtcHJvZi9yZW9yZGVy X2NsYXNzMS5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDExIEBACitzdHJ1 Y3QgQSB7CisgIHZpcnR1YWwgaW50IGZvbygpOworfTsKKworaW50IEE6OmZv bygpCit7CisgIHJldHVybiAxOworfQorCisKKwpJbmRleDogdGVzdHN1aXRl L2crKy5kZy90cmVlLXByb2YvcmVvcmRlcl9jbGFzczIuaAo9PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09Ci0tLSB0ZXN0c3VpdGUvZysrLmRnL3RyZWUtcHJvZi9y ZW9yZGVyX2NsYXNzMi5oCShyZXZpc2lvbiAwKQorKysgdGVzdHN1aXRlL2cr Ky5kZy90cmVlLXByb2YvcmVvcmRlcl9jbGFzczIuaAkocmV2aXNpb24gMCkK QEAgLTAsMCArMSwxMiBAQAorCitzdHJ1Y3QgQiB7CisgIHZpcnR1YWwgaW50 IGZvbygpOworfTsKKworaW50IEI6OmZvbygpCit7CisgIHJldHVybiAyOwor fQorCisKKwpJbmRleDogdGVzdHN1aXRlL2crKy5kZy90cmVlLXByb2YvbW9y ZWZ1bmMuQwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSB0ZXN0c3VpdGUv ZysrLmRnL3RyZWUtcHJvZi9tb3JlZnVuYy5DCShyZXZpc2lvbiAwKQorKysg dGVzdHN1aXRlL2crKy5kZy90cmVlLXByb2YvbW9yZWZ1bmMuQwkocmV2aXNp b24gMCkKQEAgLTAsMCArMSw1NSBAQAorLyogeyBkZy1vcHRpb25zICItTzIg LWZuby1kZXZpcnR1YWxpemUgLS1wYXJhbT1wcm9maWxlLWZ1bmMtaW50ZXJu YWwtaWQ9MCAtZmR1bXAtaXBhLXByb2ZpbGUgLVduby1hdHRyaWJ1dGVzIC1X bm8tY292ZXJhZ2UtbWlzbWF0Y2giIH0gKi8KKyNpbmNsdWRlICJyZW9yZGVy X2NsYXNzMS5oIgorI2luY2x1ZGUgInJlb3JkZXJfY2xhc3MyLmgiCisKK2lu dCBnOworCisjaWZkZWYgX1BST0ZJTEVfVVNFCisvKiBBbm90aGVyIGZ1bmN0 aW9uIG5vdCBleGlzdGluZworICogaW4gcHJvZmlsZS1nZW4gICovCisKK19f YXR0cmlidXRlX18oKG5vaW5saW5lKSkgdm9pZAorbmV3X2Z1bmMgKGludCBp KQoreworICAgZyArPSBpOworfQorI2VuZGlmCisKK3N0YXRpYyBfX2F0dHJp YnV0ZV9fKChhbHdheXNfaW5saW5lKSkKK3ZvaWQgdGVzdDEgKEEgKnRjKQor eworICBpbnQgaTsKKyAgZm9yIChpID0gMDsgaSA8IDEwMDA7IGkrKykKKyAg ICAgZyArPSB0Yy0+Zm9vKCk7IAorICAgaWYgKGc8MTAwKSBnKys7Cit9CisK K3N0YXRpYyBfX2F0dHJpYnV0ZV9fKChhbHdheXNfaW5saW5lKSkKK3ZvaWQg dGVzdDIgKEIgKnRjKQoreworICBpbnQgaTsKKyAgZm9yIChpID0gMDsgaSA8 IDEwMDA7IGkrKykKKyAgICAgZyArPSB0Yy0+Zm9vKCk7Cit9CisKKworX19h dHRyaWJ1dGVfXygobm9pbmxpbmUpKSB2b2lkIHRlc3RfYShBICphcCkgeyB0 ZXN0MSAoYXApOyB9CitfX2F0dHJpYnV0ZV9fKChub2lubGluZSkpIHZvaWQg dGVzdF9iKEIgKmJwKSB7IHRlc3QyIChicCk7IH0KKworCitpbnQgbWFpbigp Cit7CisgIEEqIGFwID0gbmV3IEEoKTsKKyAgQiogYnAgPSBuZXcgQigpOwor CisgIHRlc3RfYShhcCk7CisgIHRlc3RfYihicCk7CisKKyNpZmRlZiBfUFJP RklMRV9VU0UKKyAgbmV3X2Z1bmMoMTApOworI2VuZGlmCisKK30KKworLyog eyBkZy1maW5hbC11c2UgeyBzY2FuLWlwYS1kdW1wLXRpbWVzICJJbmRpcmVj dCBjYWxsIC0+IGRpcmVjdCBjYWxsIiAyICJwcm9maWxlIiB9IH0gKi8KKwpJ bmRleDogdGVzdHN1aXRlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09Ci0tLSB0ZXN0c3VpdGUvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMTI2ODIp CisrKyB0ZXN0c3VpdGUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0x LDMgKzEsMTEgQEAKKzIwMTQtMDctMTYgIFhpbmxpYW5nIERhdmlkIExpICA8 ZGF2aWR4bEBnb29nbGUuY29tPgorCisJKiBnKysuZGcvdHJlZS1wcm9mL3Ry ZWUtcHJvZi5leHA6IERlZmluZSBtYWNyb3MuCisJKiBnKysuZGcvdHJlZS1w cm9mL3Jlb3JkZXJfY2xhc3MxLmg6IE5ldyBmaWxlLgorCSogZysrLmRnL3Ry ZWUtcHJvZi9yZW9yZGVyX2NsYXNzMi5oOiBOZXcgZmlsZS4KKwkqIGcrKy5k Zy90cmVlLXByb2YvcmVvcmRlci5DOiBOZXcgdGVzdC4KKwkqIGcrKy5kZy90 cmVlLXByb2YvbW9yZWZ1bmMuQzogTmV3IHRlc3QuCisKIDIwMTQtMDctMTYg IEFybmF1ZCBDaGFybGV0ICA8Y2hhcmxldEBhZGFjb3JlLmNvbT4KIAogCSog Z25hdC5kYi9zcGVjcy9hbGlnbm1lbnQyLmFkcywgZ25hdC5kYi9zcGVjcy9z aXplX2NsYXVzZTEuYWRzLApJbmRleDogY292ZXJhZ2UuYwo9PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09Ci0tLSBjb3ZlcmFnZS5jCShyZXZpc2lvbiAyMTI2ODIp CisrKyBjb3ZlcmFnZS5jCSh3b3JraW5nIGNvcHkpCkBAIC01NCw2ICs1NCw3 IEBAIGFsb25nIHdpdGggR0NDOyBzZWUgdGhlIGZpbGUgQ09QWUlORzMuCiAj aW5jbHVkZSAiaW50bC5oIgogI2luY2x1ZGUgImZpbGVuYW1lcy5oIgogI2lu Y2x1ZGUgInRhcmdldC5oIgorI2luY2x1ZGUgInBhcmFtcy5oIgogCiAjaW5j bHVkZSAiZ2Nvdi1pby5oIgogI2luY2x1ZGUgImdjb3YtaW8uYyIKQEAgLTM2 OSw4ICszNzAsMTAgQEAgZ2V0X2NvdmVyYWdlX2NvdW50cyAodW5zaWduZWQg Y291bnRlciwgdQogICAgICAgICAgICAgICAgICAgICAgICAgIGRhX2ZpbGVf bmFtZSk7CiAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0KLSAgZWx0Lmlk ZW50ID0gY3VycmVudF9mdW5jdGlvbl9mdW5jZGVmX25vICsgMTsKKyAgaWYg KFBBUkFNX1ZBTFVFIChQQVJBTV9QUk9GSUxFX0ZVTkNfSU5URVJOQUxfSUQp KQorICAgIGVsdC5pZGVudCA9IGN1cnJlbnRfZnVuY3Rpb25fZnVuY2RlZl9u byArIDE7CisgIGVsc2UKKyAgICBlbHQuaWRlbnQgPSBjb3ZlcmFnZV9jb21w dXRlX3Byb2ZpbGVfaWQgKGNncmFwaF9nZXRfbm9kZSAoY2Z1bi0+ZGVjbCkp OwogICBlbHQuY3RyID0gY291bnRlcjsKICAgZW50cnkgPSBjb3VudHNfaGFz aC0+ZmluZCAoJmVsdCk7CiAgIGlmICghZW50cnkgfHwgIWVudHJ5LT5zdW1t YXJ5Lm51bSkKQEAgLTQxNiw3ICs0MTksOCBAQCBnZXRfY292ZXJhZ2VfY291 bnRzICh1bnNpZ25lZCBjb3VudGVyLCB1CiAgICAgfQogICBlbHNlIGlmIChl bnRyeS0+bGluZW5vX2NoZWNrc3VtICE9IGxpbmVub19jaGVja3N1bSkKICAg ICB7Ci0gICAgICB3YXJuaW5nICgwLCAic291cmNlIGxvY2F0aW9ucyBmb3Ig ZnVuY3Rpb24gJXFFIGhhdmUgY2hhbmdlZCwiCisgICAgICB3YXJuaW5nIChP UFRfV2NvdmVyYWdlX21pc21hdGNoLAorICAgICAgICAgICAgICAgInNvdXJj ZSBsb2NhdGlvbnMgZm9yIGZ1bmN0aW9uICVxRSBoYXZlIGNoYW5nZWQsIgog CSAgICAgICAiIHRoZSBwcm9maWxlIGRhdGEgbWF5IGJlIG91dCBvZiBkYXRl IiwKIAkgICAgICAgREVDTF9BU1NFTUJMRVJfTkFNRSAoY3VycmVudF9mdW5j dGlvbl9kZWNsKSk7CiAgICAgfQpAQCAtNTgxLDEyICs1ODUsMTMgQEAgY292 ZXJhZ2VfY29tcHV0ZV9wcm9maWxlX2lkIChzdHJ1Y3QgY2dyYQogICAgIHsK ICAgICAgIGV4cGFuZGVkX2xvY2F0aW9uIHhsb2MKIAk9IGV4cGFuZF9sb2Nh dGlvbiAoREVDTF9TT1VSQ0VfTE9DQVRJT04gKG4tPmRlY2wpKTsKKyAgICAg IGJvb2wgdXNlX25hbWVfb25seSA9IChQQVJBTV9WQUxVRSAoUEFSQU1fUFJP RklMRV9GVU5DX0lOVEVSTkFMX0lEKSA9PSAwKTsKIAotICAgICAgY2hrc3Vt ID0geGxvYy5saW5lOworICAgICAgY2hrc3VtID0gKHVzZV9uYW1lX29ubHkg PyAwIDogeGxvYy5saW5lKTsKICAgICAgIGNoa3N1bSA9IGNvdmVyYWdlX2No ZWNrc3VtX3N0cmluZyAoY2hrc3VtLCB4bG9jLmZpbGUpOwogICAgICAgY2hr c3VtID0gY292ZXJhZ2VfY2hlY2tzdW1fc3RyaW5nCiAJKGNoa3N1bSwgSURF TlRJRklFUl9QT0lOVEVSIChERUNMX0FTU0VNQkxFUl9OQU1FIChuLT5kZWNs KSkpOwotICAgICAgaWYgKGZpcnN0X2dsb2JhbF9vYmplY3RfbmFtZSkKKyAg ICAgIGlmICghdXNlX25hbWVfb25seSAmJiBmaXJzdF9nbG9iYWxfb2JqZWN0 X25hbWUpCiAJY2hrc3VtID0gY292ZXJhZ2VfY2hlY2tzdW1fc3RyaW5nCiAJ ICAoY2hrc3VtLCBmaXJzdF9nbG9iYWxfb2JqZWN0X25hbWUpOwogICAgICAg Y2hrc3VtID0gY292ZXJhZ2VfY2hlY2tzdW1fc3RyaW5nCkBAIC02NDUsNyAr NjUwLDEyIEBAIGNvdmVyYWdlX2JlZ2luX2Z1bmN0aW9uICh1bnNpZ25lZCBs aW5lbm8KIAogICAvKiBBbm5vdW5jZSBmdW5jdGlvbiAqLwogICBvZmZzZXQg PSBnY292X3dyaXRlX3RhZyAoR0NPVl9UQUdfRlVOQ1RJT04pOwotICBnY292 X3dyaXRlX3Vuc2lnbmVkIChjdXJyZW50X2Z1bmN0aW9uX2Z1bmNkZWZfbm8g KyAxKTsKKyAgaWYgKFBBUkFNX1ZBTFVFIChQQVJBTV9QUk9GSUxFX0ZVTkNf SU5URVJOQUxfSUQpKQorICAgIGdjb3Zfd3JpdGVfdW5zaWduZWQgKGN1cnJl bnRfZnVuY3Rpb25fZnVuY2RlZl9ubyArIDEpOworICBlbHNlCisgICAgZ2Nv dl93cml0ZV91bnNpZ25lZCAoY292ZXJhZ2VfY29tcHV0ZV9wcm9maWxlX2lk ICgKKyAgICAgICBjZ3JhcGhfZ2V0X25vZGUgKGN1cnJlbnRfZnVuY3Rpb25f ZGVjbCkpKTsKKwogICBnY292X3dyaXRlX3Vuc2lnbmVkIChsaW5lbm9fY2hl Y2tzdW0pOwogICBnY292X3dyaXRlX3Vuc2lnbmVkIChjZmdfY2hlY2tzdW0p OwogICBnY292X3dyaXRlX3N0cmluZyAoSURFTlRJRklFUl9QT0lOVEVSCkBA IC02ODIsOCArNjkyLDEzIEBAIGNvdmVyYWdlX2VuZF9mdW5jdGlvbiAodW5z aWduZWQgbGluZW5vX2MKICAgICAgIGlmICghREVDTF9FWFRFUk5BTCAoY3Vy cmVudF9mdW5jdGlvbl9kZWNsKSkKIAl7CiAJICBpdGVtID0gZ2djX2FsbG9j PGNvdmVyYWdlX2RhdGE+ICgpOwotCSAgCi0JICBpdGVtLT5pZGVudCA9IGN1 cnJlbnRfZnVuY3Rpb25fZnVuY2RlZl9ubyArIDE7CisKKyAgICAgICAgICBp ZiAoUEFSQU1fVkFMVUUgKFBBUkFNX1BST0ZJTEVfRlVOQ19JTlRFUk5BTF9J RCkpCisJICAgIGl0ZW0tPmlkZW50ID0gY3VycmVudF9mdW5jdGlvbl9mdW5j ZGVmX25vICsgMTsKKyAgICAgICAgICBlbHNlCisgICAgICAgICAgICBpdGVt LT5pZGVudCA9IGNvdmVyYWdlX2NvbXB1dGVfcHJvZmlsZV9pZCAoCisgICAg ICAgICAgICAgICBjZ3JhcGhfZ2V0X25vZGUgKGNmdW4tPmRlY2wpKTsKKwog CSAgaXRlbS0+bGluZW5vX2NoZWNrc3VtID0gbGluZW5vX2NoZWNrc3VtOwog CSAgaXRlbS0+Y2ZnX2NoZWNrc3VtID0gY2ZnX2NoZWNrc3VtOwogCg== --001a11c354709003a904fe556d31--