From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 8521 invoked by alias); 26 Aug 2009 07:20:25 -0000 Received: (qmail 8504 invoked by uid 22791); 26 Aug 2009 07:20:23 -0000 X-SWARE-Spam-Status: No, hits=-1.5 required=5.0 tests=AWL,BAYES_00,J_CHICKENPOX_31,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; Wed, 26 Aug 2009 07:20:13 +0000 Received: from spaceape24.eur.corp.google.com (spaceape24.eur.corp.google.com [172.28.16.76]) by smtp-out.google.com with ESMTP id n7Q7KAuH016753 for ; Wed, 26 Aug 2009 00:20:11 -0700 Received: from pxi26 (pxi26.prod.google.com [10.243.27.26]) by spaceape24.eur.corp.google.com with ESMTP id n7Q7JfvS019010 for ; Wed, 26 Aug 2009 00:20:07 -0700 Received: by pxi26 with SMTP id 26so6559293pxi.13 for ; Wed, 26 Aug 2009 00:20:06 -0700 (PDT) MIME-Version: 1.0 Received: by 10.140.201.17 with SMTP id y17mr1050430rvf.135.1251271206849; Wed, 26 Aug 2009 00:20:06 -0700 (PDT) In-Reply-To: <8ac60eac0908231548x135edf2doa04fa59a49455bcd@mail.gmail.com> References: <8ac60eac0908201340k6b759eb5o9bb73c8f473d8785@mail.gmail.com> <200908211130.n7LBUCJc011108@d12av02.megacenter.de.ibm.com> <8ac60eac0908231548x135edf2doa04fa59a49455bcd@mail.gmail.com> Date: Wed, 26 Aug 2009 07:21:00 -0000 Message-ID: <8ac60eac0908260020l4200cf84v2686a76b5858d13@mail.gmail.com> Subject: Re: [patch] Speed up find_pc_section From: Paul Pluzhnikov To: Ulrich Weigand Cc: Ulrich Weigand , gdb-patches ml , Tom Tromey , Jan Kratochvil Content-Type: multipart/mixed; boundary=000e0cd29d6acd4e0304720647e0 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-08/txt/msg00438.txt.bz2 --000e0cd29d6acd4e0304720647e0 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Content-length: 1601 On Sun, Aug 23, 2009 at 3:48 PM, Paul Pluzhnikov wr= ote: > On Fri, Aug 21, 2009 at 4:30 AM, Ulrich Weigand wro= te: ... >> I'm still not completely happy about the assertions you added. =A0An >> assertion failure is supposed to be an indication of a bug in GDB >> -- it should never be possible to trigger the assertion just by >> providing particular user input (this includes the binary file). > > I am still working on fixing that part... Here is the patch. Tested on Linux/x86_64 and on Fedora11/i686 with prelinking. No regressions. It also passes Jan's new gdb.base/solib-overlap.exp test case for RH Bug 515434, issuing these warnings: warning: Unexpected overlap between section `.note.gnu.build-id' from `/home/paul/gdb-cvs/build/gdb/testsuite/gdb.base/solib-overlap-lib1-0x50000= 000.so' [0xf4, 0x118) and section `.note.gnu.build-id' from `/home/paul/gdb-cvs/build/gdb/testsuite/gdb.base/solib-overlap-lib2-0x50000= 000.so' [0xf4, 0x118) warning: Unexpected overlap between section `.gnu.hash' from `/home/paul/gdb-cvs/build/gdb/testsuite/gdb.base/solib-overlap-lib1-0x50000= 000.so' [0x118, 0x158) and section `.gnu.hash' from `/home/paul/gdb-cvs/build/gdb/testsuite/gdb.base/solib-overlap-lib2-0x50000= 000.so' [0x118, 0x158) ... etc ... etc ... Thanks, --=20 Paul Pluzhnikov 2009-08-25 Paul Pluzhnikov * objfiles.c (qsort_cmp): Remove asserts. (insert_section_p, filter_debuginfo_sections): New function. (filter_overlapping_sections): Likewise. (update_section_map): Adjust. --000e0cd29d6acd4e0304720647e0 Content-Type: text/plain; charset=US-ASCII; name="gdb-find_pc_section-20090825.txt" Content-Disposition: attachment; filename="gdb-find_pc_section-20090825.txt" Content-Transfer-Encoding: base64 X-Attachment-Id: f_fytqdbfp1 Content-length: 9297 SW5kZXg6IG9iamZpbGVzLmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1Mg ZmlsZTogL2N2cy9zcmMvc3JjL2dkYi9vYmpmaWxlcy5jLHYKcmV0cmlldmlu ZyByZXZpc2lvbiAxLjkzCmRpZmYgLXAgLXUgLXIxLjkzIG9iamZpbGVzLmMK LS0tIG9iamZpbGVzLmMJMjEgQXVnIDIwMDkgMTc6NTc6MTcgLTAwMDAJMS45 MworKysgb2JqZmlsZXMuYwkyNiBBdWcgMjAwOSAwNzowNzowNCAtMDAwMApA QCAtNzkwLDE1ICs3OTAsOSBAQCBxc29ydF9jbXAgKGNvbnN0IHZvaWQgKmEs IGNvbnN0IHZvaWQgKmIpCiAgIGNvbnN0IENPUkVfQUREUiBzZWN0Ml9hZGRy ID0gb2JqX3NlY3Rpb25fYWRkciAoc2VjdDIpOwogCiAgIGlmIChzZWN0MV9h ZGRyIDwgc2VjdDJfYWRkcikKLSAgICB7Ci0gICAgICBnZGJfYXNzZXJ0IChv Ympfc2VjdGlvbl9lbmRhZGRyIChzZWN0MSkgPD0gc2VjdDJfYWRkcik7Ci0g ICAgICByZXR1cm4gLTE7Ci0gICAgfQorICAgIHJldHVybiAtMTsKICAgZWxz ZSBpZiAoc2VjdDFfYWRkciA+IHNlY3QyX2FkZHIpCi0gICAgewotICAgICAg Z2RiX2Fzc2VydCAoc2VjdDFfYWRkciA+PSBvYmpfc2VjdGlvbl9lbmRhZGRy IChzZWN0MikpOwotICAgICAgcmV0dXJuIDE7Ci0gICAgfQorICAgIHJldHVy biAxOwogCiAgIHJldHVybiAwOwogfQpAQCAtODIzLDEyICs4MTcsMTMzIEBA IHByZWZlcnJlZF9vYmpfc2VjdGlvbiAoc3RydWN0IG9ial9zZWN0aW8KICAg cmV0dXJuIGI7CiB9CiAKKy8qIFJldHVybiAxIGlmIFNFQ1RJT04gc2hvdWxk IGJlIGluc2VydGVkIGludG8gdGhlIHNlY3Rpb24gbWFwLgorICAgV2Ugd2Fu dCB0byBpbnNlcnQgb25seSBub24tb3ZlcmxheSBhbmQgbm9uLVRMUyBzZWN0 aW9uLiAgKi8KKworc3RhdGljIGludAoraW5zZXJ0X3NlY3Rpb25fcCAoY29u c3Qgc3RydWN0IGJmZCAqYWJmZCwKKwkJICBjb25zdCBzdHJ1Y3QgYmZkX3Nl Y3Rpb24gKnNlY3Rpb24pCit7CisgIGNvbnN0IGJmZF92bWEgbG1hID0gYmZk X3NlY3Rpb25fbG1hIChhYmZkLCBzZWN0aW9uKTsKKworICBpZiAobG1hICE9 IDAgJiYgbG1hICE9IGJmZF9zZWN0aW9uX3ZtYSAoYWJmZCwgc2VjdGlvbikK KyAgICAgICYmIChiZmRfZ2V0X2ZpbGVfZmxhZ3MgKGFiZmQpICYgQkZEX0lO X01FTU9SWSkgPT0gMCkKKyAgICAvKiBUaGlzIGlzIGFuIG92ZXJsYXkgc2Vj dGlvbi4gIElOX01FTU9SWSBjaGVjayBpcyBuZWVkZWQgdG8gYXZvaWQKKyAg ICAgICBkaXNjYXJkaW5nIHNlY3Rpb25zIGZyb20gdGhlICJzeXN0ZW0gc3Vw cGxpZWQgRFNPIiAoYWthIHZkc28pCisgICAgICAgb24gTGludXguICAqLwor ICAgIHJldHVybiAwOworICBpZiAoKGJmZF9nZXRfc2VjdGlvbl9mbGFncyAo YWJmZCwgc2VjdGlvbikgJiBTRUNfVEhSRUFEX0xPQ0FMKSAhPSAwKQorICAg IC8qIFRoaXMgaXMgYSBUTFMgc2VjdGlvbi4gICovCisgICAgcmV0dXJuIDA7 CisKKyAgcmV0dXJuIDE7Cit9CisKKy8qIEZpbHRlciBvdXQgb3ZlcmxhcHBp bmcgc2VjdGlvbnMgd2hlcmUgb25lIHNlY3Rpb24gY2FtZSBmcm9tIHRoZSBy ZWFsCisgICBvYmpmaWxlLCBhbmQgdGhlIG90aGVyIGZyb20gYSBzZXBhcmF0 ZSBkZWJ1Z2luZm8gZmlsZS4KKyAgIFJldHVybiB0aGUgc2l6ZSBvZiB0YWJs ZSBhZnRlciByZWR1bmRhbnQgc2VjdGlvbnMgaGF2ZSBiZWVuIGVsaW1pbmF0 ZWQuICAqLworCitzdGF0aWMgaW50CitmaWx0ZXJfZGVidWdpbmZvX3NlY3Rp b25zIChzdHJ1Y3Qgb2JqX3NlY3Rpb24gKiptYXAsIGludCBtYXBfc2l6ZSkK K3sKKyAgaW50IGksIGo7CisKKyAgZm9yIChpID0gMCwgaiA9IDA7IGkgPCBt YXBfc2l6ZSAtIDE7IGkrKykKKyAgICB7CisgICAgICBzdHJ1Y3Qgb2JqX3Nl Y3Rpb24gKmNvbnN0IHNlY3QxID0gbWFwW2ldOworICAgICAgc3RydWN0IG9i al9zZWN0aW9uICpjb25zdCBzZWN0MiA9IG1hcFtpICsgMV07CisgICAgICBj b25zdCBzdHJ1Y3Qgb2JqZmlsZSAqY29uc3Qgb2JqZmlsZTEgPSBzZWN0MS0+ b2JqZmlsZTsKKyAgICAgIGNvbnN0IHN0cnVjdCBvYmpmaWxlICpjb25zdCBv YmpmaWxlMiA9IHNlY3QyLT5vYmpmaWxlOworICAgICAgY29uc3QgQ09SRV9B RERSIHNlY3QxX2FkZHIgPSBvYmpfc2VjdGlvbl9hZGRyIChzZWN0MSk7Cisg ICAgICBjb25zdCBDT1JFX0FERFIgc2VjdDJfYWRkciA9IG9ial9zZWN0aW9u X2FkZHIgKHNlY3QyKTsKKworICAgICAgaWYgKHNlY3QxX2FkZHIgPT0gc2Vj dDJfYWRkcgorCSAgJiYgKG9iamZpbGUxLT5zZXBhcmF0ZV9kZWJ1Z19vYmpm aWxlID09IG9iamZpbGUyCisJICAgICAgfHwgb2JqZmlsZTItPnNlcGFyYXRl X2RlYnVnX29iamZpbGUgPT0gb2JqZmlsZTEpKQorCXsKKwkgIG1hcFtqKytd ID0gcHJlZmVycmVkX29ial9zZWN0aW9uIChzZWN0MSwgc2VjdDIpOworCSAg KytpOworCX0KKyAgICAgIGVsc2UKKwltYXBbaisrXSA9IHNlY3QxOworICAg IH0KKworICBpZiAoaSA8IG1hcF9zaXplKQorICAgIG1hcFtqKytdID0gbWFw W2ldOworCisgIC8qIFRoZSBtYXAgc2hvdWxkIG5vdCBoYXZlIHNocnVuayB0 byBsZXNzIHRoYW4gaGFsZiB0aGUgb3JpZ2luYWwgc2l6ZS4gICovCisgIGdk Yl9hc3NlcnQgKG1hcF9zaXplIC8gMiA8PSBqKTsKKworICByZXR1cm4gajsK K30KKworLyogRmlsdGVyIG91dCBvdmVybGFwcGluZyBzZWN0aW9ucywgaXNz dWluZyBhIHdhcm5pbmcgaWYgYW55IGFyZSBmb3VuZC4KKyAgIE92ZXJsYXBw aW5nIHNlY3Rpb25zIGNvdWxkIHJlYWxseSBiZSBvdmVybGF5IHNlY3Rpb25z IHdoaWNoIHdlIGRpZG4ndAorICAgY2xhc3NpZnkgYXMgc3VjaCBpbiBpbnNl cnRfc2VjdGlvbl9wLCBvciB3ZSBjb3VsZCBiZSBkZWFsaW5nIHdpdGggYQor ICAgY29ycnVwdCBiaW5hcnkuICAqLworCitzdGF0aWMgaW50CitmaWx0ZXJf b3ZlcmxhcHBpbmdfc2VjdGlvbnMgKHN0cnVjdCBvYmpfc2VjdGlvbiAqKm1h cCwgaW50IG1hcF9zaXplKQoreworICBpbnQgaSwgajsKKworICBmb3IgKGkg PSAwLCBqID0gMDsgaSA8IG1hcF9zaXplIC0gMTsgKQorICAgIHsKKyAgICAg IGludCBrOworCisgICAgICBtYXBbaisrXSA9IG1hcFtpXTsKKyAgICAgIGZv ciAoayA9IGkgKyAxOyBrIDwgbWFwX3NpemU7IGsrKykKKwl7CisJICBzdHJ1 Y3Qgb2JqX3NlY3Rpb24gKmNvbnN0IHNlY3QxID0gbWFwW2ldOworCSAgc3Ry dWN0IG9ial9zZWN0aW9uICpjb25zdCBzZWN0MiA9IG1hcFtrXTsKKwkgIGNv bnN0IENPUkVfQUREUiBzZWN0MV9hZGRyID0gb2JqX3NlY3Rpb25fYWRkciAo c2VjdDEpOworCSAgY29uc3QgQ09SRV9BRERSIHNlY3QyX2FkZHIgPSBvYmpf c2VjdGlvbl9hZGRyIChzZWN0Mik7CisJICBjb25zdCBDT1JFX0FERFIgc2Vj dDFfZW5kYWRkciA9IG9ial9zZWN0aW9uX2VuZGFkZHIgKHNlY3QxKTsKKwor CSAgZ2RiX2Fzc2VydCAoc2VjdDFfYWRkciA8PSBzZWN0Ml9hZGRyKTsKKwor CSAgaWYgKHNlY3QxX2VuZGFkZHIgPD0gc2VjdDJfYWRkcikKKwkgICAgYnJl YWs7CisJICBlbHNlCisJICAgIHsKKwkgICAgICAvKiBXZSBoYXZlIGFuIG92 ZXJsYXAuICBSZXBvcnQgaXQuICAqLworCisJICAgICAgc3RydWN0IG9iamZp bGUgKmNvbnN0IG9iamYxID0gc2VjdDEtPm9iamZpbGU7CisJICAgICAgc3Ry dWN0IG9iamZpbGUgKmNvbnN0IG9iamYyID0gc2VjdDItPm9iamZpbGU7CisK KwkgICAgICBjb25zdCBzdHJ1Y3QgYmZkICpjb25zdCBhYmZkMSA9IG9iamYx LT5vYmZkOworCSAgICAgIGNvbnN0IHN0cnVjdCBiZmQgKmNvbnN0IGFiZmQy ID0gb2JqZjItPm9iZmQ7CisKKwkgICAgICBjb25zdCBzdHJ1Y3QgYmZkX3Nl Y3Rpb24gKmNvbnN0IGJmZHMxID0gc2VjdDEtPnRoZV9iZmRfc2VjdGlvbjsK KwkgICAgICBjb25zdCBzdHJ1Y3QgYmZkX3NlY3Rpb24gKmNvbnN0IGJmZHMy ID0gc2VjdDItPnRoZV9iZmRfc2VjdGlvbjsKKworCSAgICAgIGNvbnN0IENP UkVfQUREUiBzZWN0Ml9lbmRhZGRyID0gb2JqX3NlY3Rpb25fZW5kYWRkciAo c2VjdDIpOworCisJICAgICAgc3RydWN0IGdkYmFyY2ggKmNvbnN0IGdkYmFy Y2ggPSBnZXRfb2JqZmlsZV9hcmNoIChvYmpmMSk7CisKKwkgICAgICB3YXJu aW5nIChfKCJVbmV4cGVjdGVkIG92ZXJsYXAgYmV0d2VlbiAiCisJCQkgInNl Y3Rpb24gYCVzJyBmcm9tIGAlcycgWyVzLCAlcykgYW5kICIKKwkJCSAic2Vj dGlvbiBgJXMnIGZyb20gYCVzJyBbJXMsICVzKSIpLAorCQkgICAgICAgYmZk X3NlY3Rpb25fbmFtZSAoYWJmZDEsIGJmZHMxKSwgb2JqZjEtPm5hbWUsCisJ CSAgICAgICBwYWRkcmVzcyAoZ2RiYXJjaCwgc2VjdDFfYWRkciksCisJCSAg ICAgICBwYWRkcmVzcyAoZ2RiYXJjaCwgc2VjdDFfZW5kYWRkciksCisJCSAg ICAgICBiZmRfc2VjdGlvbl9uYW1lIChhYmZkMiwgYmZkczIpLCBvYmpmMi0+ bmFtZSwKKwkJICAgICAgIHBhZGRyZXNzIChnZGJhcmNoLCBzZWN0Ml9hZGRy KSwKKwkJICAgICAgIHBhZGRyZXNzIChnZGJhcmNoLCBzZWN0Ml9lbmRhZGRy KSk7CisJICAgIH0KKwl9CisgICAgICBpID0gazsKKyAgICB9CisgIHJldHVy biBtYXBfc2l6ZTsKK30KKworCiAvKiBVcGRhdGUgUE1BUCwgUE1BUF9TSVpF IHdpdGggbm9uLVRMUyBzZWN0aW9ucyBmcm9tIGFsbCBvYmpmaWxlcy4gICov CiAKIHN0YXRpYyB2b2lkCiB1cGRhdGVfc2VjdGlvbl9tYXAgKHN0cnVjdCBv Ympfc2VjdGlvbiAqKipwbWFwLCBpbnQgKnBtYXBfc2l6ZSkKIHsKLSAgaW50 IG1hcF9zaXplLCBpLCBqOworICBpbnQgYWxsb2Nfc2l6ZSwgbWFwX3NpemUs IGk7CiAgIHN0cnVjdCBvYmpfc2VjdGlvbiAqcywgKiptYXA7CiAgIHN0cnVj dCBvYmpmaWxlICpvYmpmaWxlOwogCkBAIC04MzcsNTUgKzk1MiwyNyBAQCB1 cGRhdGVfc2VjdGlvbl9tYXAgKHN0cnVjdCBvYmpfc2VjdGlvbiAqCiAgIG1h cCA9ICpwbWFwOwogICB4ZnJlZSAobWFwKTsKIAotI2RlZmluZSBpbnNlcnRf cChvYmpmLCBzZWMpIFwKLSAgKChiZmRfZ2V0X3NlY3Rpb25fZmxhZ3MgKChv YmpmKS0+b2JmZCwgKHNlYyktPnRoZV9iZmRfc2VjdGlvbikgXAotICAgICYg U0VDX1RIUkVBRF9MT0NBTCkgPT0gMCkKLQotICBtYXBfc2l6ZSA9IDA7Cisg IGFsbG9jX3NpemUgPSAwOwogICBBTExfT0JKU0VDVElPTlMgKG9iamZpbGUs IHMpCi0gICAgaWYgKGluc2VydF9wIChvYmpmaWxlLCBzKSkKLSAgICAgIG1h cF9zaXplICs9IDE7CisgICAgaWYgKGluc2VydF9zZWN0aW9uX3AgKG9iamZp bGUtPm9iZmQsIHMtPnRoZV9iZmRfc2VjdGlvbikpCisgICAgICBhbGxvY19z aXplICs9IDE7CiAKLSAgbWFwID0geG1hbGxvYyAobWFwX3NpemUgKiBzaXpl b2YgKCptYXApKTsKKyAgbWFwID0geG1hbGxvYyAoYWxsb2Nfc2l6ZSAqIHNp emVvZiAoKm1hcCkpOwogCiAgIGkgPSAwOwogICBBTExfT0JKU0VDVElPTlMg KG9iamZpbGUsIHMpCi0gICAgaWYgKGluc2VydF9wIChvYmpmaWxlLCBzKSkK KyAgICBpZiAoaW5zZXJ0X3NlY3Rpb25fcCAob2JqZmlsZS0+b2JmZCwgcy0+ dGhlX2JmZF9zZWN0aW9uKSkKICAgICAgIG1hcFtpKytdID0gczsKIAotI3Vu ZGVmIGluc2VydF9wCi0KLSAgcXNvcnQgKG1hcCwgbWFwX3NpemUsIHNpemVv ZiAoKm1hcCksIHFzb3J0X2NtcCk7Ci0KLSAgLyogV2l0aCBzZXBhcmF0ZSBk ZWJ1Z2luZm8gZmlsZXMsIHdlIG1heSBoYXZlIHVwIHRvIHR3byAoYWxtb3N0 KQotICAgICBpZGVudGljYWwgY29waWVzIG9mIHNvbWUgb2JqX3NlY3Rpb25z IGluIHRoZSBtYXAuCi0gICAgIEZpbHRlciBvdXQgZHVwbGljYXRlcy4gICov Ci0gIGZvciAoaSA9IDAsIGogPSAwOyBpIDwgbWFwX3NpemU7ICsraSkKLSAg ICB7Ci0gICAgICBzdHJ1Y3Qgb2JqX3NlY3Rpb24gKnNlY3QxID0gbWFwW2ld OwotICAgICAgc3RydWN0IG9ial9zZWN0aW9uICpzZWN0MiA9IChpICsgMSA8 IG1hcF9zaXplKSA/IG1hcFtpICsgMV0gOiBOVUxMOwotCi0gICAgICBpZiAo c2VjdDIgPT0gTlVMTAotCSAgfHwgb2JqX3NlY3Rpb25fYWRkciAoc2VjdDEp ICE9IG9ial9zZWN0aW9uX2FkZHIgKHNlY3QyKSkKLQltYXBbaisrXSA9IHNl Y3QxOwotICAgICAgZWxzZQotCXsKLQkgIG1hcFtqKytdID0gcHJlZmVycmVk X29ial9zZWN0aW9uIChzZWN0MSwgc2VjdDIpOwotCSAgKytpOwotCX0KLSAg ICB9Ci0KLSAgaWYgKGogPCBtYXBfc2l6ZSkKLSAgICB7Ci0gICAgICAvKiBT b21lIGR1cGxpY2F0ZXMgd2VyZSBlbGltaW5hdGVkLgotCSBUaGUgbmV3IHNp emUgc2hvdWxkbid0IGJlIGxlc3MgdGhhbiBoYWxmIG9mIHRoZSBvcmlnaW5h bC4gKi8KLSAgICAgIGdkYl9hc3NlcnQgKG1hcF9zaXplIC8gMiA8PSBqKTsK LSAgICAgIG1hcF9zaXplID0gajsKLQotICAgICAgbWFwID0geHJlYWxsb2Mg KG1hcCwgbWFwX3NpemUgKiBzaXplb2YgKCptYXApKTsgIC8qIFRyaW0gZXhj ZXNzIHNwYWNlLiAgKi8KLSAgICB9CisgIHFzb3J0IChtYXAsIGFsbG9jX3Np emUsIHNpemVvZiAoKm1hcCksIHFzb3J0X2NtcCk7CisgIG1hcF9zaXplID0g ZmlsdGVyX2RlYnVnaW5mb19zZWN0aW9ucyhtYXAsIGFsbG9jX3NpemUpOwor ICBtYXBfc2l6ZSA9IGZpbHRlcl9vdmVybGFwcGluZ19zZWN0aW9ucyhtYXAs IG1hcF9zaXplKTsKKworICBpZiAobWFwX3NpemUgPCBhbGxvY19zaXplKQor ICAgIC8qIFNvbWUgc2VjdGlvbnMgd2VyZSBlbGltaW5hdGVkLiAgVHJpbSBl eGNlc3Mgc3BhY2UuICAqLworICAgIG1hcCA9IHhyZWFsbG9jIChtYXAsIG1h cF9zaXplICogc2l6ZW9mICgqbWFwKSk7CiAgIGVsc2UKLSAgICBnZGJfYXNz ZXJ0IChqID09IG1hcF9zaXplKTsKKyAgICBnZGJfYXNzZXJ0IChhbGxvY19z aXplID09IG1hcF9zaXplKTsKIAogICAqcG1hcCA9IG1hcDsKICAgKnBtYXBf c2l6ZSA9IG1hcF9zaXplOwo= --000e0cd29d6acd4e0304720647e0--