From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 14367 invoked by alias); 3 Feb 2011 06:45:20 -0000 Received: (qmail 14358 invoked by uid 22791); 3 Feb 2011 06:45:19 -0000 X-SWARE-Spam-Status: No, hits=-2.7 required=5.0 tests=AWL,BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,RCVD_IN_DNSWL_LOW,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; Thu, 03 Feb 2011 06:45:14 +0000 Received: from kpbe15.cbf.corp.google.com (kpbe15.cbf.corp.google.com [172.25.105.79]) by smtp-out.google.com with ESMTP id p136jAlk032638 for ; Wed, 2 Feb 2011 22:45:10 -0800 Received: from iyj21 (iyj21.prod.google.com [10.241.51.85]) by kpbe15.cbf.corp.google.com with ESMTP id p136j8eV013379 (version=TLSv1/SSLv3 cipher=RC4-MD5 bits=128 verify=NOT) for ; Wed, 2 Feb 2011 22:45:09 -0800 Received: by iyj21 with SMTP id 21so796594iyj.11 for ; Wed, 02 Feb 2011 22:45:08 -0800 (PST) Received: by 10.231.33.195 with SMTP id i3mr11214707ibd.161.1296715500972; Wed, 02 Feb 2011 22:45:00 -0800 (PST) MIME-Version: 1.0 Received: by 10.231.19.133 with HTTP; Wed, 2 Feb 2011 22:44:40 -0800 (PST) From: Jeffrey Yasskin Date: Thu, 03 Feb 2011 06:45:00 -0000 Message-ID: Subject: [PATCH] Loosen the Gold ODR checker to only compare filenames To: binutils@sourceware.org Content-Type: multipart/mixed; boundary=00032557547ecf6cd1049b5b1a8b X-System-Of-Record: true 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-02/txt/msg00034.txt.bz2 --00032557547ecf6cd1049b5b1a8b Content-Type: text/plain; charset=ISO-8859-1 Content-length: 1178 Code compiled with different flags, especially -O, may have a different line number for the first instruction in a function. This produces false positives in the ODR checker when linking object files that should be ABI-compatible. The best fixes would be to A) look at the DW_AT_decl_line of the DW_TAG_subprogram for the function, but this would require gold to parse a whole new debug section, or B) hash the ODR-relevant aspects of each function into a new dwarf attribute, but this would require gcc to produce the hash and gold to parse a whole new debug section. Instead, loosening the ODR check to allow a function's definitions to be from anywhere within the same file removes the false positives with much less work, and would have caused very few extra false negatives in Google's codebase. 2011-02-02 Jeffrey Yasskin * dwarf_reader.h: Add a Source_location type, and change the addr2line functions to return it. * dwarf_reader.cc: Implement Source_location, and change the addr2line functions to return it. * symtab.cc: Sort by just the filename. * object.cc: Convert a Source_location return to a std::string. --00032557547ecf6cd1049b5b1a8b Content-Type: application/octet-stream; name="looser_odr_check.patch" Content-Disposition: attachment; filename="looser_odr_check.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_gjpanbpt0 Content-length: 14348 SW5kZXg6IGdvbGQvZHdhcmZfcmVhZGVyLmNjCj09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0KUkNTIGZpbGU6IC9jdnMvc3JjL3NyYy9nb2xkL2R3YXJmX3JlYWRl ci5jYyx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS4zMQpkaWZmIC11IC1yMS4z MSBkd2FyZl9yZWFkZXIuY2MKLS0tIGdvbGQvZHdhcmZfcmVhZGVyLmNjCTIw IERlYyAyMDEwIDE4OjM3OjM2IC0wMDAwCTEuMzEKKysrIGdvbGQvZHdhcmZf cmVhZGVyLmNjCTMgRmViIDIwMTEgMDY6MTU6MjAgLTAwMDAKQEAgLTYxLDYg KzYxLDI5IEBACiAgIGxzbS0+ZW5kX3NlcXVlbmNlID0gZmFsc2U7CiB9CiAK K3N0ZDo6c3RyaW5nCitTb3VyY2VfbG9jYXRpb246OnN0cigpIGNvbnN0Cit7 CisgIHN0ZDo6c3RyaW5nIHJldDsKKyAgaWYgKHRoaXMtPmZpbGVuYW1lID09 IE5VTEwpCisgICAgcmV0dXJuIHJldDsgIC8vICIiLCBidXQgaW4gYSB3YXkg dGhhdCB0aGUgTlJWTyBzdGlsbCB3b3Jrcy4KKyAgaWYgKHRoaXMtPmRpcm5h bWUgIT0gTlVMTCAmJiAhdGhpcy0+ZGlybmFtZS0+ZW1wdHkoKSkKKyAgICB7 CisgICAgICByZXQgKz0gKnRoaXMtPmRpcm5hbWU7CisgICAgICByZXQgKz0g Jy8nOworICAgIH0KKyAgcmV0ICs9ICp0aGlzLT5maWxlbmFtZTsKKyAgaWYg KHJldC5lbXB0eSgpKQorICAgIHJldCA9ICIodW5rbm93bikiOworCisgIGNo YXIgYnVmZmVyWzY0XTsgICAvLyBlbm91Z2ggdG8gaG9sZCBhIGxpbmUgbnVt YmVyCisgIHNucHJpbnRmKGJ1ZmZlciwgc2l6ZW9mKGJ1ZmZlciksICIlZCIs IHRoaXMtPmxpbmVfbnVtKTsKKyAgcmV0ICs9ICc6JzsKKyAgcmV0ICs9IGJ1 ZmZlcjsKKworICByZXR1cm4gcmV0OworfQorCiB0ZW1wbGF0ZTxpbnQgc2l6 ZSwgYm9vbCBiaWdfZW5kaWFuPgogU2l6ZWRfZHdhcmZfbGluZV9pbmZvPHNp emUsIGJpZ19lbmRpYW4+OjpTaXplZF9kd2FyZl9saW5lX2luZm8oT2JqZWN0 KiBvYmplY3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgcmVh ZF9zaG5keCkKQEAgLTcxNywxNSArNzQwLDE1IEBACiAgIHJldHVybiBvZmZz ZXRzLT5lbmQoKTsKIH0KIAotLy8gUmV0dXJuIGEgc3RyaW5nIGZvciBhIGZp bGUgbmFtZSBhbmQgbGluZSBudW1iZXIuCisvLyBSZXR1cm4gYSBTb3VyY2Vf bG9jYXRpb24gZm9yIGFuIG9mZnNldC4KIAogdGVtcGxhdGU8aW50IHNpemUs IGJvb2wgYmlnX2VuZGlhbj4KLXN0ZDo6c3RyaW5nCitTb3VyY2VfbG9jYXRp b24KIFNpemVkX2R3YXJmX2xpbmVfaW5mbzxzaXplLCBiaWdfZW5kaWFuPjo6 ZG9fYWRkcjJsaW5lKHVuc2lnbmVkIGludCBzaG5keCwKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9m Zl90IG9mZnNldCkKIHsKICAgaWYgKHRoaXMtPmRhdGFfdmFsaWRfID09IGZh bHNlKQotICAgIHJldHVybiAiIjsKKyAgICByZXR1cm4gU291cmNlX2xvY2F0 aW9uKCk7CiAKICAgY29uc3Qgc3RkOjp2ZWN0b3I8T2Zmc2V0X3RvX2xpbmVu b19lbnRyeT4qIG9mZnNldHM7CiAgIC8vIElmIHdlIGRvIG5vdCBoYXZlIHJl bG9jIGluZm9ybWF0aW9uLCB0aGVuIG91ciBpbnB1dCBpcyBhIC5zbyBvcgpA QCAtNzM2LDE2ICs3NTksMTQgQEAKICAgZWxzZQogICAgIG9mZnNldHMgPSAm dGhpcy0+bGluZV9udW1iZXJfbWFwX1stMVVdOwogICBpZiAob2Zmc2V0cy0+ ZW1wdHkoKSkKLSAgICByZXR1cm4gIiI7CisgICAgcmV0dXJuIFNvdXJjZV9s b2NhdGlvbigpOwogCiAgIHR5cGVuYW1lIHN0ZDo6dmVjdG9yPE9mZnNldF90 b19saW5lbm9fZW50cnk+Ojpjb25zdF9pdGVyYXRvciBpdAogICAgICAgPSBv ZmZzZXRfdG9faXRlcmF0b3Iob2Zmc2V0cywgb2Zmc2V0KTsKICAgaWYgKGl0 ID09IG9mZnNldHMtPmVuZCgpKQotICAgIHJldHVybiAiIjsKLQotICAvLyBD b252ZXJ0IHRoZSBmaWxlX251bSArIGxpbmVfbnVtIGludG8gYSBzdHJpbmcu Ci0gIHN0ZDo6c3RyaW5nIHJldDsKKyAgICByZXR1cm4gU291cmNlX2xvY2F0 aW9uKCk7CiAKKyAgLy8gQ29udmVydCB0aGUgZmlsZV9udW0gaW50byBhIGRp cmVjdG9yeSBhbmQgZmlsZSBuYW1lLgogICBnb2xkX2Fzc2VydChpdC0+aGVh ZGVyX251bSA8IHN0YXRpY19jYXN0PGludD4odGhpcy0+ZmlsZXNfLnNpemUo KSkpOwogICBnb2xkX2Fzc2VydChpdC0+ZmlsZV9udW0KIAkgICAgICA8IHN0 YXRpY19jYXN0PGludD4odGhpcy0+ZmlsZXNfW2l0LT5oZWFkZXJfbnVtXS5z aXplKCkpKTsKQEAgLTc1OSwyMSArNzgwLDcgQEAKICAgY29uc3Qgc3RkOjpz dHJpbmcmIGRpcm5hbWUKICAgICAgID0gdGhpcy0+ZGlyZWN0b3JpZXNfW2l0 LT5oZWFkZXJfbnVtXVtmaWxlbmFtZV9wYWlyLmZpcnN0XTsKIAotICBpZiAo IWRpcm5hbWUuZW1wdHkoKSkKLSAgICB7Ci0gICAgICByZXQgKz0gZGlybmFt ZTsKLSAgICAgIHJldCArPSAiLyI7Ci0gICAgfQotICByZXQgKz0gZmlsZW5h bWU7Ci0gIGlmIChyZXQuZW1wdHkoKSkKLSAgICByZXQgPSAiKHVua25vd24p IjsKLQotICBjaGFyIGJ1ZmZlcls2NF07ICAgLy8gZW5vdWdoIHRvIGhvbGQg YSBsaW5lIG51bWJlcgotICBzbnByaW50ZihidWZmZXIsIHNpemVvZihidWZm ZXIpLCAiJWQiLCBpdC0+bGluZV9udW0pOwotICByZXQgKz0gIjoiOwotICBy ZXQgKz0gYnVmZmVyOwotCi0gIHJldHVybiByZXQ7CisgIHJldHVybiBTb3Vy Y2VfbG9jYXRpb24oJmRpcm5hbWUsICZmaWxlbmFtZSwgaXQtPmxpbmVfbnVt KTsKIH0KIAogLy8gRHdhcmZfbGluZV9pbmZvIHJvdXRpbmVzLgpAQCAtODAw LDcgKzgwNyw3IEBACiAvLyBvciBwcmlvcml0eSBxdWV1ZSBvciBhbnl0aGlu ZzoganVzdCB1c2UgYSBzaW1wbGUgdmVjdG9yLgogc3RhdGljIHN0ZDo6dmVj dG9yPEFkZHIybGluZV9jYWNoZV9lbnRyeT4gYWRkcjJsaW5lX2NhY2hlOwog Ci1zdGQ6OnN0cmluZworU291cmNlX2xvY2F0aW9uCiBEd2FyZl9saW5lX2lu Zm86Om9uZV9hZGRyMmxpbmUoT2JqZWN0KiBvYmplY3QsCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IHNobmR4LCBvZmZf dCBvZmZzZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6 ZV90IGNhY2hlX3NpemUpCkBAIC04NTQsNyArODYxLDcgQEAKICAgfQogCiAg IC8vIE5vdyB0aGF0IHdlIGhhdmUgb3VyIG9iamVjdCwgZmlndXJlIG91dCB0 aGUgYW5zd2VyCi0gIHN0ZDo6c3RyaW5nIHJldHZhbCA9IGxpbmVpbmZvLT5h ZGRyMmxpbmUoc2huZHgsIG9mZnNldCk7CisgIFNvdXJjZV9sb2NhdGlvbiBy ZXR2YWwgPSBsaW5laW5mby0+YWRkcjJsaW5lKHNobmR4LCBvZmZzZXQpOwog CiAgIC8vIEZpbmFsbHksIGlmIG91ciBjYWNoZSBoYXMgZ3Jvd24gdG9vIGJp ZywgZGVsZXRlIG9sZCBvYmplY3RzLiAgV2UKICAgLy8gYXNzdW1lIHRoZSBj b21tb24gKHByb2JhYmx5IG9ubHkpIGNhc2UgaXMgZGVsZXRpbmcgb25seSBv bmUgb2JqZWN0LgpJbmRleDogZ29sZC9kd2FyZl9yZWFkZXIuaAo9PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL3NyYy9zcmMvZ29sZC9k d2FyZl9yZWFkZXIuaCx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS4xOQpkaWZm IC11IC1yMS4xOSBkd2FyZl9yZWFkZXIuaAotLS0gZ29sZC9kd2FyZl9yZWFk ZXIuaAkyMCBEZWMgMjAxMCAxODozNzozNiAtMDAwMAkxLjE5CisrKyBnb2xk L2R3YXJmX3JlYWRlci5oCTMgRmViIDIwMTEgMDY6MTU6MjAgLTAwMDAKQEAg LTU0LDYgKzU0LDMyIEBACiAgIHsgcmV0dXJuIHRoaXMtPm9mZnNldCA8IHRo YXQub2Zmc2V0OyB9CiB9OwogCisvLyBTdG9yZXMgYSB0cmlwbGUgb2YgZGly ZWN0b3J5LCBmaWxlLCBhbmQgbGluZSBudW1iZXIgYW5kIGNhbiBmb3JtYXQK Ky8vIHRoZXNlIHRvIGEgc3RyaW5nLgorc3RydWN0IFNvdXJjZV9sb2NhdGlv bgoreworICBjb25zdCBzdGQ6OnN0cmluZyogZGlybmFtZTsKKyAgY29uc3Qg c3RkOjpzdHJpbmcqIGZpbGVuYW1lOworICBpbnQgbGluZV9udW07CisKKyAg U291cmNlX2xvY2F0aW9uKCkKKyAgICAgIDogZGlybmFtZShOVUxMKSwgZmls ZW5hbWUoTlVMTCksIGxpbmVfbnVtKDApCisgIHt9CisKKyAgU291cmNlX2xv Y2F0aW9uKGNvbnN0IHN0ZDo6c3RyaW5nKiBkaXJuYW1lLAorICAgICAgICAg ICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcqIGZpbGVuYW1lLAorICAgICAg ICAgICAgICAgICAgaW50IGxpbmVfbnVtKQorICAgICAgOiBkaXJuYW1lKGRp cm5hbWUpLCBmaWxlbmFtZShmaWxlbmFtZSksIGxpbmVfbnVtKGxpbmVfbnVt KQorICB7fQorCisgIGJvb2wKKyAgZW1wdHkoKSBjb25zdAorICB7IHJldHVy biB0aGlzLT5maWxlbmFtZSA9PSBOVUxMOyB9CisKKyAgc3RkOjpzdHJpbmcK KyAgc3RyKCkgY29uc3Q7Cit9OworCiAvLyBUaGlzIGNsYXNzIGlzIHVzZWQg dG8gcmVhZCB0aGUgbGluZSBpbmZvcm1hdGlvbiBmcm9tIHRoZSBkZWJ1Z2dp bmcKIC8vIHNlY3Rpb24gb2YgYW4gb2JqZWN0IGZpbGUuCiAKQEAgLTcxLDcg Kzk3LDcgQEAKICAgLy8gZmlsZSBhbmQgbGluZS1udW1iZXIsIGFzIGEgc3Ry aW5nOiAiZmlsZTpsaW5lbm8iLiAgSWYgdW5hYmxlCiAgIC8vIHRvIGRvIHRo ZSBtYXBwaW5nLCByZXR1cm5zIHRoZSBlbXB0eSBzdHJpbmcuICBZb3UgbXVz dCBjYWxsCiAgIC8vIHJlYWRfbGluZV9tYXBwaW5ncygpIGJlZm9yZSBjYWxs aW5nIHRoaXMgZnVuY3Rpb24uCi0gIHN0ZDo6c3RyaW5nCisgIFNvdXJjZV9s b2NhdGlvbgogICBhZGRyMmxpbmUodW5zaWduZWQgaW50IHNobmR4LCBvZmZf dCBvZmZzZXQpCiAgIHsgcmV0dXJuIGRvX2FkZHIybGluZShzaG5keCwgb2Zm c2V0KTsgfQogCkBAIC04MSw3ICsxMDcsNyBAQAogICAvLyBjaGFuY2UgdGhp cyByb3V0aW5lIHdvbid0IGhhdmUgdG8gcmUtY3JlYXRlIGEgRHdhcmZfbGlu ZV9pbmZvCiAgIC8vIG9iamVjdCBmb3IgaXRzIGFkZHIybGluZSBjb21wdXRh dGlvbjsgc3VjaCBjcmVhdGlvbnMgYXJlIHNsb3cuCiAgIC8vIE5PVEU6IE5v dCB0aHJlYWQtc2FmZSwgc28gb25seSBjYWxsIGZyb20gb25lIHRocmVhZCBh dCBhIHRpbWUuCi0gIHN0YXRpYyBzdGQ6OnN0cmluZworICBzdGF0aWMgU291 cmNlX2xvY2F0aW9uCiAgIG9uZV9hZGRyMmxpbmUoT2JqZWN0KiBvYmplY3Qs IHVuc2lnbmVkIGludCBzaG5keCwgb2ZmX3Qgb2Zmc2V0LAogICAgICAgICAg ICAgICAgIHNpemVfdCBjYWNoZV9zaXplKTsKIApAQCAtOTEsNyArMTE3LDcg QEAKICAgY2xlYXJfYWRkcjJsaW5lX2NhY2hlKCk7CiAKICBwcml2YXRlOgot ICB2aXJ0dWFsIHN0ZDo6c3RyaW5nCisgIHZpcnR1YWwgU291cmNlX2xvY2F0 aW9uCiAgIGRvX2FkZHIybGluZSh1bnNpZ25lZCBpbnQgc2huZHgsIG9mZl90 IG9mZnNldCkgPSAwOwogfTsKIApAQCAtMTA1LDcgKzEzMSw3IEBACiAgIFNp emVkX2R3YXJmX2xpbmVfaW5mbyhPYmplY3QqIG9iamVjdCwgdW5zaWduZWQg aW50IHJlYWRfc2huZHggPSAtMVUpOwogCiAgcHJpdmF0ZToKLSAgc3RkOjpz dHJpbmcKKyAgdmlydHVhbCBTb3VyY2VfbG9jYXRpb24KICAgZG9fYWRkcjJs aW5lKHVuc2lnbmVkIGludCBzaG5keCwgb2ZmX3Qgb2Zmc2V0KTsKIAogICAv LyBTdGFydCBwcm9jZXNzaW5nIGxpbmUgaW5mbywgYW5kIHBvcHVsYXRlcyB0 aGUgb2Zmc2V0X21hcF8uCkBAIC0xOTEsOCArMjE3LDEwIEBACiAgIC8vIEhv bGRzIHRoZSBkaXJlY3RvcmllcyBhbmQgZmlsZXMgYXMgd2Ugc2VlIHRoZW0u ICBXZSBoYXZlIGFuIGFycmF5CiAgIC8vIG9mIGRpcmVjdG9yeS1saXN0cywg b25lIGZvciBlYWNoIC5vIGZpbGUgd2UncmUgcmVhZGluZyAodXN1YWxseQog ICAvLyB0aGVyZSB3aWxsIGp1c3QgYmUgb25lLCBidXQgdGhlcmUgbWF5IGJl IG1vcmUgaWYgaW5wdXQgaXMgYSAuc28pLgorICAvLyBUaGlzIG5ldmVyIGNo YW5nZXMgYWZ0ZXIgY29uc3RydWN0aW9uLgogICBzdGQ6OnZlY3RvcjxzdGQ6 OnZlY3RvcjxzdGQ6OnN0cmluZz4gPiBkaXJlY3Rvcmllc187CiAgIC8vIFRo ZSBmaXJzdCBwYXJ0IGlzIGFuIGluZGV4IGludG8gZGlyZWN0b3JpZXNfLCB0 aGUgc2Vjb25kIHRoZSBmaWxlbmFtZS4KKyAgLy8gVGhpcyBuZXZlciBjaGFu Z2VzIGFmdGVyIGNvbnN0cnVjdGlvbi4KICAgc3RkOjp2ZWN0b3I8c3RkOjp2 ZWN0b3I8IHN0ZDo6cGFpcjxpbnQsIHN0ZDo6c3RyaW5nPiA+ID4gZmlsZXNf OwogCiAgIC8vIEFuIGluZGV4IGludG8gdGhlIGN1cnJlbnQgZGlyZWN0b3Jp ZXNfIGFuZCBmaWxlc18gdmVjdG9ycy4KSW5kZXg6IGdvbGQvb2JqZWN0LmNj Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvc3JjL3Ny Yy9nb2xkL29iamVjdC5jYyx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS4xMzQK ZGlmZiAtdSAtcjEuMTM0IG9iamVjdC5jYwotLS0gZ29sZC9vYmplY3QuY2MJ MTQgRGVjIDIwMTAgMTk6MDM6MzAgLTAwMDAJMS4xMzQKKysrIGdvbGQvb2Jq ZWN0LmNjCTMgRmViIDIwMTEgMDY6MTU6MjAgLTAwMDAKQEAgLTI1ODIsNyAr MjU4Miw3IEBACiAKICAgU2l6ZWRfZHdhcmZfbGluZV9pbmZvPHNpemUsIGJp Z19lbmRpYW4+IGxpbmVfaW5mbyh0aGlzLT5vYmplY3QpOwogICAvLyBUaGlz IHdpbGwgYmUgIiIgaWYgd2UgZmFpbGVkIHRvIHBhcnNlIHRoZSBkZWJ1ZyBp bmZvIGZvciBhbnkgcmVhc29uLgotICBmaWxlX2FuZF9saW5lbm8gPSBsaW5l X2luZm8uYWRkcjJsaW5lKHRoaXMtPmRhdGFfc2huZHgsIG9mZnNldCk7Cisg IGZpbGVfYW5kX2xpbmVubyA9IGxpbmVfaW5mby5hZGRyMmxpbmUodGhpcy0+ ZGF0YV9zaG5keCwgb2Zmc2V0KS5zdHIoKTsKIAogICBzdGQ6OnN0cmluZyBy ZXQodGhpcy0+b2JqZWN0LT5uYW1lKCkpOwogICByZXQgKz0gJzonOwpJbmRl eDogZ29sZC9zeW10YWIuY2MKPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1Mg ZmlsZTogL2N2cy9zcmMvc3JjL2dvbGQvc3ltdGFiLmNjLHYKcmV0cmlldmlu ZyByZXZpc2lvbiAxLjE0NgpkaWZmIC11IC1yMS4xNDYgc3ltdGFiLmNjCi0t LSBnb2xkL3N5bXRhYi5jYwkyNCBKYW4gMjAxMSAyMTo0ODo0MCAtMDAwMAkx LjE0NgorKysgZ29sZC9zeW10YWIuY2MJMyBGZWIgMjAxMSAwNjoxNToyMCAt MDAwMApAQCAtMzAxMiwxMSArMzAxMiwxMiBAQAogLy8gV2UgY2hlY2sgZm9y IE9EUiB2aW9sYXRpb25zIGJ5IGxvb2tpbmcgZm9yIHN5bWJvbHMgd2l0aCB0 aGUgc2FtZQogLy8gbmFtZSBmb3Igd2hpY2ggdGhlIGRlYnVnZ2luZyBpbmZv cm1hdGlvbiByZXBvcnRzIHRoYXQgdGhleSB3ZXJlCiAvLyBkZWZpbmVkIGlu IGRpZmZlcmVudCBzb3VyY2UgbG9jYXRpb25zLiAgV2hlbiBjb21wYXJpbmcg dGhlIHNvdXJjZQotLy8gbG9jYXRpb24sIHdlIGNvbnNpZGVyIGluc3RhbmNl cyB3aXRoIHRoZSBzYW1lIGJhc2UgZmlsZW5hbWUgYW5kCi0vLyBsaW5lIG51 bWJlciB0byBiZSB0aGUgc2FtZS4gIFRoaXMgaXMgYmVjYXVzZSBkaWZmZXJl bnQgb2JqZWN0Ci0vLyBmaWxlcy9zaGFyZWQgbGlicmFyaWVzIGNhbiBpbmNs dWRlIHRoZSBzYW1lIGhlYWRlciBmaWxlIHVzaW5nCi0vLyBkaWZmZXJlbnQg cGF0aHMsIGFuZCB3ZSBkb24ndCB3YW50IHRvIHJlcG9ydCBhbiBPRFIgdmlv bGF0aW9uIGluCi0vLyB0aGF0IGNhc2UuCisvLyBsb2NhdGlvbiwgd2UgY29u c2lkZXIgaW5zdGFuY2VzIHdpdGggdGhlIHNhbWUgYmFzZSBmaWxlbmFtZSB0 byBiZQorLy8gdGhlIHNhbWUuICBUaGlzIGlzIGJlY2F1c2UgZGlmZmVyZW50 IG9iamVjdCBmaWxlcy9zaGFyZWQgbGlicmFyaWVzCisvLyBjYW4gaW5jbHVk ZSB0aGUgc2FtZSBoZWFkZXIgZmlsZSB1c2luZyBkaWZmZXJlbnQgcGF0aHMs IGFuZAorLy8gZGlmZmVyZW50IG9wdGltaXphdGlvbiBzZXR0aW5ncyBjYW4g bWFrZSB0aGUgbGluZSBudW1iZXIgYXBwZWFyIHRvCisvLyBiZSBhIGNvdXBs ZSBsaW5lcyBvZmYsIGFuZCB3ZSBkb24ndCB3YW50IHRvIHJlcG9ydCBhbiBP RFIgdmlvbGF0aW9uCisvLyBpbiB0aG9zZSBjYXNlcy4KIAogLy8gVGhpcyBz dHJ1Y3QgaXMgdXNlZCB0byBjb21wYXJlIGxpbmUgaW5mb3JtYXRpb24sIGFz IHJldHVybmVkIGJ5CiAvLyBEd2FyZl9saW5lX2luZm86Om9uZV9hZGRyMmxp bmUuICBJdCBpbXBsZW1lbnRzIGEgPCBjb21wYXJpc29uCkBAIC0zMDI1LDE1 ICszMDI2LDExIEBACiBzdHJ1Y3QgT2RyX3Zpb2xhdGlvbl9jb21wYXJlCiB7 CiAgIGJvb2wKLSAgb3BlcmF0b3IoKShjb25zdCBzdGQ6OnN0cmluZyYgczEs IGNvbnN0IHN0ZDo6c3RyaW5nJiBzMikgY29uc3QKKyAgb3BlcmF0b3IoKShj b25zdCBTb3VyY2VfbG9jYXRpb24mIHMxLCBjb25zdCBTb3VyY2VfbG9jYXRp b24mIHMyKSBjb25zdAogICB7Ci0gICAgc3RkOjpzdHJpbmc6OnNpemVfdHlw ZSBwb3MxID0gczEucmZpbmQoJy8nKTsKLSAgICBzdGQ6OnN0cmluZzo6c2l6 ZV90eXBlIHBvczIgPSBzMi5yZmluZCgnLycpOwotICAgIGlmIChwb3MxID09 IHN0ZDo6c3RyaW5nOjpucG9zCi0JfHwgcG9zMiA9PSBzdGQ6OnN0cmluZzo6 bnBvcykKLSAgICAgIHJldHVybiBzMSA8IHMyOwotICAgIHJldHVybiBzMS5j b21wYXJlKHBvczEsIHN0ZDo6c3RyaW5nOjpucG9zLAotCQkgICAgICBzMiwg cG9zMiwgc3RkOjpzdHJpbmc6Om5wb3MpIDwgMDsKKyAgICBpZiAoczEuZmls ZW5hbWUgPT0gTlVMTCB8fCBzMi5maWxlbmFtZSA9PSBOVUxMKQorICAgICAg cmV0dXJuIHMxLmZpbGVuYW1lID09IE5VTEwgJiYgczIuZmlsZW5hbWUgIT0g TlVMTDsKKyAgICByZXR1cm4gKnMxLmZpbGVuYW1lIDwgKnMyLmZpbGVuYW1l OwogICB9CiB9OwogCkBAIC0zMDUzLDcgKzMwNTAsNyBAQAogICAgICAgLy8g dGhhdCBsb2NhdGlvbiBpbi4gIFdlIHVzZSBhIHNvcnRlZCBtYXAgc28gdGhl IGxvY2F0aW9uIG9yZGVyCiAgICAgICAvLyBpcyBkZXRlcm1pbmlzdGljLCBi dXQgd2Ugb25seSBzdG9yZSBhbiBhcmJpdHJhcnkgb2JqZWN0IGZpbGUKICAg ICAgIC8vIHRvIGF2b2lkIGNvcHlpbmcgbG90cyBvZiBuYW1lcy4KLSAgICAg IHN0ZDo6bWFwPHN0ZDo6c3RyaW5nLCBzdGQ6OnN0cmluZywgT2RyX3Zpb2xh dGlvbl9jb21wYXJlPiBsaW5lX251bXM7CisgICAgICBzdGQ6Om1hcDxTb3Vy Y2VfbG9jYXRpb24sIHN0ZDo6c3RyaW5nLCBPZHJfdmlvbGF0aW9uX2NvbXBh cmU+IGxpbmVfbnVtczsKIAogICAgICAgZm9yIChVbm9yZGVyZWRfc2V0PFN5 bWJvbF9sb2NhdGlvbiwgU3ltYm9sX2xvY2F0aW9uX2hhc2g+Ojpjb25zdF9p dGVyYXRvcgogICAgICAgICAgICAgICAgbG9jcyA9IGl0LT5zZWNvbmQuYmVn aW4oKTsKQEAgLTMwNjksNyArMzA2Niw3IEBACiAgICAgICAgICAgLy8gY3Vy cmVudGx5IHRocmVhZC1zYWZlLgogCSAgVGFza19sb2NrX29iajxPYmplY3Q+ IHRsKHRhc2ssIGxvY3MtPm9iamVjdCk7CiAgICAgICAgICAgLy8gMTYgaXMg dGhlIHNpemUgb2YgdGhlIG9iamVjdC1jYWNoZSB0aGF0IG9uZV9hZGRyMmxp bmUgc2hvdWxkIHVzZS4KLSAgICAgICAgICBzdGQ6OnN0cmluZyBsaW5lbm8g PSBEd2FyZl9saW5lX2luZm86Om9uZV9hZGRyMmxpbmUoCisgICAgICAgICAg U291cmNlX2xvY2F0aW9uIGxpbmVubyA9IER3YXJmX2xpbmVfaW5mbzo6b25l X2FkZHIybGluZSgKICAgICAgICAgICAgICAgbG9jcy0+b2JqZWN0LCBsb2Nz LT5zaG5keCwgbG9jcy0+b2Zmc2V0LCAxNik7CiAgICAgICAgICAgaWYgKCFs aW5lbm8uZW1wdHkoKSkKICAgICAgICAgICAgIHsKQEAgLTMwODQsMTIgKzMw ODEsMTIgQEAKICAgICAgICAgICBnb2xkX3dhcm5pbmcoXygid2hpbGUgbGlu a2luZyAlczogc3ltYm9sICclcycgZGVmaW5lZCBpbiBtdWx0aXBsZSAiCiAg ICAgICAgICAgICAgICAgICAgICAgICAgInBsYWNlcyAocG9zc2libGUgT0RS IHZpb2xhdGlvbik6IiksCiAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1 dF9maWxlX25hbWUsIGRlbWFuZ2xlKHN5bWJvbF9uYW1lKS5jX3N0cigpKTsK LSAgICAgICAgICBmb3IgKHN0ZDo6bWFwPHN0ZDo6c3RyaW5nLCBzdGQ6OnN0 cmluZz46OmNvbnN0X2l0ZXJhdG9yIGl0MiA9CisgICAgICAgICAgZm9yIChz dGQ6Om1hcDxTb3VyY2VfbG9jYXRpb24sIHN0ZDo6c3RyaW5nPjo6Y29uc3Rf aXRlcmF0b3IgaXQyID0KIAkJIGxpbmVfbnVtcy5iZWdpbigpOwogCSAgICAg ICBpdDIgIT0gbGluZV9udW1zLmVuZCgpOwogCSAgICAgICArK2l0MikKICAg ICAgICAgICAgIGZwcmludGYoc3RkZXJyLCBfKCIgICVzIGZyb20gJXNcbiIp LAotICAgICAgICAgICAgICAgICAgICBpdDItPmZpcnN0LmNfc3RyKCksIGl0 Mi0+c2Vjb25kLmNfc3RyKCkpOworICAgICAgICAgICAgICAgICAgICBpdDIt PmZpcnN0LnN0cigpLmNfc3RyKCksIGl0Mi0+c2Vjb25kLmNfc3RyKCkpOwog ICAgICAgICB9CiAgICAgfQogICAvLyBXZSBvbmx5IGNhbGwgb25lX2FkZHIy bGluZSgpIGluIHRoaXMgZnVuY3Rpb24sIHNvIHdlIGNhbiBjbGVhciBpdHMg Y2FjaGUuCg== --00032557547ecf6cd1049b5b1a8b--