From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 11674 invoked by alias); 11 Sep 2009 17:47:28 -0000 Received: (qmail 11663 invoked by uid 22791); 11 Sep 2009 17:47:27 -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.33.17) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Fri, 11 Sep 2009 17:47:23 +0000 Received: from spaceape7.eur.corp.google.com (spaceape7.eur.corp.google.com [172.28.16.141]) by smtp-out.google.com with ESMTP id n8BHlJ7E009499 for ; Fri, 11 Sep 2009 18:47:20 +0100 Received: from an-out-0708.google.com (andd40.prod.google.com [10.100.30.40]) by spaceape7.eur.corp.google.com with ESMTP id n8BHlHLC012828 for ; Fri, 11 Sep 2009 10:47:17 -0700 Received: by an-out-0708.google.com with SMTP id d40so522699and.41 for ; Fri, 11 Sep 2009 10:47:16 -0700 (PDT) MIME-Version: 1.0 Received: by 10.101.46.15 with SMTP id y15mr3603918anj.4.1252691236809; Fri, 11 Sep 2009 10:47:16 -0700 (PDT) In-Reply-To: <001201ca32ba$f9060e70$eb122b50$@u-strasbg.fr> References: <8ac60eac0908201340k6b759eb5o9bb73c8f473d8785@mail.gmail.com> <20090909055824.GB11738@adacore.com> <8ac60eac0909101036r101263e7qd11c1a69f13008f1@mail.gmail.com> <20090910182952.GK20694@adacore.com> <8ac60eac0909101829g5384d665gdab27526fe95c27c@mail.gmail.com> <000c01ca32ac$0ca9f8b0$25fdea10$@u-strasbg.fr> <8ac60eac0909110029q1c88dcetdb644fa461fa545c@mail.gmail.com> <000f01ca32b3$0e6b5390$2b41fab0$@u-strasbg.fr> <8ac60eac0909110103l2b88dc95i2f3c238aa4be2ed0@mail.gmail.com> <001201ca32ba$f9060e70$eb122b50$@u-strasbg.fr> Date: Fri, 11 Sep 2009 17:47:00 -0000 Message-ID: <8ac60eac0909111047r1e9f2115u863e250d1c402534@mail.gmail.com> Subject: Re: [patch] Speed up find_pc_section From: Paul Pluzhnikov To: Pierre Muller Cc: Joel Brobecker , Ulrich Weigand , gdb-patches ml , Tom Tromey , Jan Kratochvil Content-Type: multipart/mixed; boundary=001636ed6b162eeea6047350e86c 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-09/txt/msg00324.txt.bz2 --001636ed6b162eeea6047350e86c Content-Type: text/plain; charset=ISO-8859-1 Content-length: 989 On Fri, Sep 11, 2009 at 1:36 AM, Pierre Muller wrote: > Maybe you could alter the complaint so that it becomes > clear which of the two sections is discarded from the mapping? Patch with all the suggestions so far incorporated. Tested on Linux/x86_64 with no regressions. Here is what the complaint looks like for gdb.base/solib-overlap.exp (if I turn complaints on): During symbol reading, unexpected overlap between (A) section `.hash' from `/usr/local/google/gdb/testsuite/gdb.base/solib-overlap-lib1-0x40000000.so' [0x158, 0x19c) and (B) section `.hash' from `/usr/local/google/gdb/testsuite/gdb.base/solib-overlap-lib2-0x40000000.so' [0x158, 0x19c). Will ignore section B. Thanks, -- Paul Pluzhnikov 2009-09-11 Paul Pluzhnikov * objfiles.c (qsort_cmp): Remove asserts. (insert_section_p, filter_debuginfo_sections): New function. (filter_overlapping_sections): Likewise. (update_section_map): Adjust. --001636ed6b162eeea6047350e86c Content-Type: text/plain; charset=US-ASCII; name="gdb-find_pc_section-20090911.txt" Content-Disposition: attachment; filename="gdb-find_pc_section-20090911.txt" Content-Transfer-Encoding: base64 X-Attachment-Id: f_fzh7zdns0 Content-length: 9720 SW5kZXg6IG9iamZpbGVzLmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1Mg ZmlsZTogL2N2cy9zcmMvc3JjL2dkYi9vYmpmaWxlcy5jLHYKcmV0cmlldmlu ZyByZXZpc2lvbiAxLjk0CmRpZmYgLXUgLXAgLXUgLXIxLjk0IG9iamZpbGVz LmMKLS0tIG9iamZpbGVzLmMJMjcgQXVnIDIwMDkgMjE6NTY6MzggLTAwMDAJ MS45NAorKysgb2JqZmlsZXMuYwkxMSBTZXAgMjAwOSAxNjozMzowOCAtMDAw MApAQCAtNTEsNiArNTEsNyBAQAogI2luY2x1ZGUgImFyY2gtdXRpbHMuaCIK ICNpbmNsdWRlICJleGVjLmgiCiAjaW5jbHVkZSAib2JzZXJ2ZXIuaCIKKyNp bmNsdWRlICJjb21wbGFpbnRzLmgiCiAKIC8qIFByb3RvdHlwZXMgZm9yIGxv Y2FsIGZ1bmN0aW9ucyAqLwogCkBAIC04MDIsMTUgKzgwMyw5IEBAIHFzb3J0 X2NtcCAoY29uc3Qgdm9pZCAqYSwgY29uc3Qgdm9pZCAqYikKICAgY29uc3Qg Q09SRV9BRERSIHNlY3QyX2FkZHIgPSBvYmpfc2VjdGlvbl9hZGRyIChzZWN0 Mik7CiAKICAgaWYgKHNlY3QxX2FkZHIgPCBzZWN0Ml9hZGRyKQotICAgIHsK LSAgICAgIGdkYl9hc3NlcnQgKG9ial9zZWN0aW9uX2VuZGFkZHIgKHNlY3Qx KSA8PSBzZWN0Ml9hZGRyKTsKLSAgICAgIHJldHVybiAtMTsKLSAgICB9Cisg ICAgcmV0dXJuIC0xOwogICBlbHNlIGlmIChzZWN0MV9hZGRyID4gc2VjdDJf YWRkcikKLSAgICB7Ci0gICAgICBnZGJfYXNzZXJ0IChzZWN0MV9hZGRyID49 IG9ial9zZWN0aW9uX2VuZGFkZHIgKHNlY3QyKSk7Ci0gICAgICByZXR1cm4g MTsKLSAgICB9CisgICAgcmV0dXJuIDE7CiAKICAgcmV0dXJuIDA7CiB9CkBA IC04MzUsMTIgKzgzMCwxMzYgQEAgcHJlZmVycmVkX29ial9zZWN0aW9uIChz dHJ1Y3Qgb2JqX3NlY3RpbwogICByZXR1cm4gYjsKIH0KIAotLyogVXBkYXRl IFBNQVAsIFBNQVBfU0laRSB3aXRoIG5vbi1UTFMgc2VjdGlvbnMgZnJvbSBh bGwgb2JqZmlsZXMuICAqLworLyogUmV0dXJuIDEgaWYgU0VDVElPTiBzaG91 bGQgYmUgaW5zZXJ0ZWQgaW50byB0aGUgc2VjdGlvbiBtYXAuCisgICBXZSB3 YW50IHRvIGluc2VydCBvbmx5IG5vbi1vdmVybGF5IGFuZCBub24tVExTIHNl Y3Rpb24uICAqLworCitzdGF0aWMgaW50CitpbnNlcnRfc2VjdGlvbl9wIChj b25zdCBzdHJ1Y3QgYmZkICphYmZkLAorCQkgIGNvbnN0IHN0cnVjdCBiZmRf c2VjdGlvbiAqc2VjdGlvbikKK3sKKyAgY29uc3QgYmZkX3ZtYSBsbWEgPSBi ZmRfc2VjdGlvbl9sbWEgKGFiZmQsIHNlY3Rpb24pOworCisgIGlmIChsbWEg IT0gMCAmJiBsbWEgIT0gYmZkX3NlY3Rpb25fdm1hIChhYmZkLCBzZWN0aW9u KQorICAgICAgJiYgKGJmZF9nZXRfZmlsZV9mbGFncyAoYWJmZCkgJiBCRkRf SU5fTUVNT1JZKSA9PSAwKQorICAgIC8qIFRoaXMgaXMgYW4gb3ZlcmxheSBz ZWN0aW9uLiAgSU5fTUVNT1JZIGNoZWNrIGlzIG5lZWRlZCB0byBhdm9pZAor ICAgICAgIGRpc2NhcmRpbmcgc2VjdGlvbnMgZnJvbSB0aGUgInN5c3RlbSBz dXBwbGllZCBEU08iIChha2EgdmRzbykKKyAgICAgICBvbiBMaW51eC4gICov CisgICAgcmV0dXJuIDA7CisgIGlmICgoYmZkX2dldF9zZWN0aW9uX2ZsYWdz IChhYmZkLCBzZWN0aW9uKSAmIFNFQ19USFJFQURfTE9DQUwpICE9IDApCisg ICAgLyogVGhpcyBpcyBhIFRMUyBzZWN0aW9uLiAgKi8KKyAgICByZXR1cm4g MDsKKworICByZXR1cm4gMTsKK30KKworLyogRmlsdGVyIG91dCBvdmVybGFw cGluZyBzZWN0aW9ucyB3aGVyZSBvbmUgc2VjdGlvbiBjYW1lIGZyb20gdGhl IHJlYWwKKyAgIG9iamZpbGUsIGFuZCB0aGUgb3RoZXIgZnJvbSBhIHNlcGFy YXRlIGRlYnVnaW5mbyBmaWxlLgorICAgUmV0dXJuIHRoZSBzaXplIG9mIHRh YmxlIGFmdGVyIHJlZHVuZGFudCBzZWN0aW9ucyBoYXZlIGJlZW4gZWxpbWlu YXRlZC4gICovCisKK3N0YXRpYyBpbnQKK2ZpbHRlcl9kZWJ1Z2luZm9fc2Vj dGlvbnMgKHN0cnVjdCBvYmpfc2VjdGlvbiAqKm1hcCwgaW50IG1hcF9zaXpl KQoreworICBpbnQgaSwgajsKKworICBmb3IgKGkgPSAwLCBqID0gMDsgaSA8 IG1hcF9zaXplIC0gMTsgaSsrKQorICAgIHsKKyAgICAgIHN0cnVjdCBvYmpf c2VjdGlvbiAqY29uc3Qgc2VjdDEgPSBtYXBbaV07CisgICAgICBzdHJ1Y3Qg b2JqX3NlY3Rpb24gKmNvbnN0IHNlY3QyID0gbWFwW2kgKyAxXTsKKyAgICAg IGNvbnN0IHN0cnVjdCBvYmpmaWxlICpjb25zdCBvYmpmaWxlMSA9IHNlY3Qx LT5vYmpmaWxlOworICAgICAgY29uc3Qgc3RydWN0IG9iamZpbGUgKmNvbnN0 IG9iamZpbGUyID0gc2VjdDItPm9iamZpbGU7CisgICAgICBjb25zdCBDT1JF X0FERFIgc2VjdDFfYWRkciA9IG9ial9zZWN0aW9uX2FkZHIgKHNlY3QxKTsK KyAgICAgIGNvbnN0IENPUkVfQUREUiBzZWN0Ml9hZGRyID0gb2JqX3NlY3Rp b25fYWRkciAoc2VjdDIpOworCisgICAgICBpZiAoc2VjdDFfYWRkciA9PSBz ZWN0Ml9hZGRyCisJICAmJiAob2JqZmlsZTEtPnNlcGFyYXRlX2RlYnVnX29i amZpbGUgPT0gb2JqZmlsZTIKKwkgICAgICB8fCBvYmpmaWxlMi0+c2VwYXJh dGVfZGVidWdfb2JqZmlsZSA9PSBvYmpmaWxlMSkpCisJeworCSAgbWFwW2or K10gPSBwcmVmZXJyZWRfb2JqX3NlY3Rpb24gKHNlY3QxLCBzZWN0Mik7CisJ ICArK2k7CisJfQorICAgICAgZWxzZQorCW1hcFtqKytdID0gc2VjdDE7Cisg ICAgfQorCisgIGlmIChpIDwgbWFwX3NpemUpCisgICAgbWFwW2orK10gPSBt YXBbaV07CisKKyAgLyogVGhlIG1hcCBzaG91bGQgbm90IGhhdmUgc2hydW5r IHRvIGxlc3MgdGhhbiBoYWxmIHRoZSBvcmlnaW5hbCBzaXplLiAgKi8KKyAg Z2RiX2Fzc2VydCAobWFwX3NpemUgLyAyIDw9IGopOworCisgIHJldHVybiBq OworfQorCisvKiBGaWx0ZXIgb3V0IG92ZXJsYXBwaW5nIHNlY3Rpb25zLCBp c3N1aW5nIGEgd2FybmluZyBpZiBhbnkgYXJlIGZvdW5kLgorICAgT3Zlcmxh cHBpbmcgc2VjdGlvbnMgY291bGQgcmVhbGx5IGJlIG92ZXJsYXkgc2VjdGlv bnMgd2hpY2ggd2UgZGlkbid0CisgICBjbGFzc2lmeSBhcyBzdWNoIGluIGlu c2VydF9zZWN0aW9uX3AsIG9yIHdlIGNvdWxkIGJlIGRlYWxpbmcgd2l0aCBh CisgICBjb3JydXB0IGJpbmFyeS4gICovCisKK3N0YXRpYyBpbnQKK2ZpbHRl cl9vdmVybGFwcGluZ19zZWN0aW9ucyAoc3RydWN0IG9ial9zZWN0aW9uICoq bWFwLCBpbnQgbWFwX3NpemUpCit7CisgIGludCBpLCBqOworCisgIGZvciAo aSA9IDAsIGogPSAwOyBpIDwgbWFwX3NpemUgLSAxOyApCisgICAgeworICAg ICAgaW50IGs7CisKKyAgICAgIG1hcFtqKytdID0gbWFwW2ldOworICAgICAg Zm9yIChrID0gaSArIDE7IGsgPCBtYXBfc2l6ZTsgaysrKQorCXsKKwkgIHN0 cnVjdCBvYmpfc2VjdGlvbiAqY29uc3Qgc2VjdDEgPSBtYXBbaV07CisJICBz dHJ1Y3Qgb2JqX3NlY3Rpb24gKmNvbnN0IHNlY3QyID0gbWFwW2tdOworCSAg Y29uc3QgQ09SRV9BRERSIHNlY3QxX2FkZHIgPSBvYmpfc2VjdGlvbl9hZGRy IChzZWN0MSk7CisJICBjb25zdCBDT1JFX0FERFIgc2VjdDJfYWRkciA9IG9i al9zZWN0aW9uX2FkZHIgKHNlY3QyKTsKKwkgIGNvbnN0IENPUkVfQUREUiBz ZWN0MV9lbmRhZGRyID0gb2JqX3NlY3Rpb25fZW5kYWRkciAoc2VjdDEpOwor CisJICBnZGJfYXNzZXJ0IChzZWN0MV9hZGRyIDw9IHNlY3QyX2FkZHIpOwor CisJICBpZiAoc2VjdDFfZW5kYWRkciA8PSBzZWN0Ml9hZGRyKQorCSAgICBi cmVhazsKKwkgIGVsc2UKKwkgICAgeworCSAgICAgIC8qIFdlIGhhdmUgYW4g b3ZlcmxhcC4gIFJlcG9ydCBpdC4gICovCisKKwkgICAgICBzdHJ1Y3Qgb2Jq ZmlsZSAqY29uc3Qgb2JqZjEgPSBzZWN0MS0+b2JqZmlsZTsKKwkgICAgICBz dHJ1Y3Qgb2JqZmlsZSAqY29uc3Qgb2JqZjIgPSBzZWN0Mi0+b2JqZmlsZTsK KworCSAgICAgIGNvbnN0IHN0cnVjdCBiZmQgKmNvbnN0IGFiZmQxID0gb2Jq ZjEtPm9iZmQ7CisJICAgICAgY29uc3Qgc3RydWN0IGJmZCAqY29uc3QgYWJm ZDIgPSBvYmpmMi0+b2JmZDsKKworCSAgICAgIGNvbnN0IHN0cnVjdCBiZmRf c2VjdGlvbiAqY29uc3QgYmZkczEgPSBzZWN0MS0+dGhlX2JmZF9zZWN0aW9u OworCSAgICAgIGNvbnN0IHN0cnVjdCBiZmRfc2VjdGlvbiAqY29uc3QgYmZk czIgPSBzZWN0Mi0+dGhlX2JmZF9zZWN0aW9uOworCisJICAgICAgY29uc3Qg Q09SRV9BRERSIHNlY3QyX2VuZGFkZHIgPSBvYmpfc2VjdGlvbl9lbmRhZGRy IChzZWN0Mik7CisKKwkgICAgICBzdHJ1Y3QgZ2RiYXJjaCAqY29uc3QgZ2Ri YXJjaCA9IGdldF9vYmpmaWxlX2FyY2ggKG9iamYxKTsKKworCSAgICAgIGNv bXBsYWludCAoJnN5bWZpbGVfY29tcGxhaW50cywKKwkJCSBfKCJ1bmV4cGVj dGVkIG92ZXJsYXAgYmV0d2VlbiAoQSkgIgorCQkJICAgInNlY3Rpb24gYCVz JyBmcm9tIGAlcycgWyVzLCAlcykgYW5kIChCKSAiCisJCQkgICAic2VjdGlv biBgJXMnIGZyb20gYCVzJyBbJXMsICVzKS4gIgorCQkJICAgIldpbGwgaWdu b3JlIHNlY3Rpb24gQiIpLAorCQkJIGJmZF9zZWN0aW9uX25hbWUgKGFiZmQx LCBiZmRzMSksIG9iamYxLT5uYW1lLAorCQkJIHBhZGRyZXNzIChnZGJhcmNo LCBzZWN0MV9hZGRyKSwKKwkJCSBwYWRkcmVzcyAoZ2RiYXJjaCwgc2VjdDFf ZW5kYWRkciksCisJCQkgYmZkX3NlY3Rpb25fbmFtZSAoYWJmZDIsIGJmZHMy KSwgb2JqZjItPm5hbWUsCisJCQkgcGFkZHJlc3MgKGdkYmFyY2gsIHNlY3Qy X2FkZHIpLAorCQkJIHBhZGRyZXNzIChnZGJhcmNoLCBzZWN0Ml9lbmRhZGRy KSk7CisJICAgIH0KKwl9CisgICAgICBpID0gazsKKyAgICB9CisgIHJldHVy biBqOworfQorCisKKy8qIFVwZGF0ZSBQTUFQLCBQTUFQX1NJWkUgd2l0aCBz ZWN0aW9ucyBmcm9tIGFsbCBvYmpmaWxlcywgZXhjbHVkaW5nIGFueQorICAg VExTLCBvdmVybGF5IGFuZCBvdmVybGFwcGluZyBzZWN0aW9ucy4gICovCiAK IHN0YXRpYyB2b2lkCiB1cGRhdGVfc2VjdGlvbl9tYXAgKHN0cnVjdCBvYmpf c2VjdGlvbiAqKipwbWFwLCBpbnQgKnBtYXBfc2l6ZSkKIHsKLSAgaW50IG1h cF9zaXplLCBpLCBqOworICBpbnQgYWxsb2Nfc2l6ZSwgbWFwX3NpemUsIGk7 CiAgIHN0cnVjdCBvYmpfc2VjdGlvbiAqcywgKiptYXA7CiAgIHN0cnVjdCBv YmpmaWxlICpvYmpmaWxlOwogCkBAIC04NDksNTUgKzk2OCwyNyBAQCB1cGRh dGVfc2VjdGlvbl9tYXAgKHN0cnVjdCBvYmpfc2VjdGlvbiAqCiAgIG1hcCA9 ICpwbWFwOwogICB4ZnJlZSAobWFwKTsKIAotI2RlZmluZSBpbnNlcnRfcChv YmpmLCBzZWMpIFwKLSAgKChiZmRfZ2V0X3NlY3Rpb25fZmxhZ3MgKChvYmpm KS0+b2JmZCwgKHNlYyktPnRoZV9iZmRfc2VjdGlvbikgXAotICAgICYgU0VD X1RIUkVBRF9MT0NBTCkgPT0gMCkKLQotICBtYXBfc2l6ZSA9IDA7CisgIGFs bG9jX3NpemUgPSAwOwogICBBTExfT0JKU0VDVElPTlMgKG9iamZpbGUsIHMp Ci0gICAgaWYgKGluc2VydF9wIChvYmpmaWxlLCBzKSkKLSAgICAgIG1hcF9z aXplICs9IDE7CisgICAgaWYgKGluc2VydF9zZWN0aW9uX3AgKG9iamZpbGUt Pm9iZmQsIHMtPnRoZV9iZmRfc2VjdGlvbikpCisgICAgICBhbGxvY19zaXpl ICs9IDE7CiAKLSAgbWFwID0geG1hbGxvYyAobWFwX3NpemUgKiBzaXplb2Yg KCptYXApKTsKKyAgbWFwID0geG1hbGxvYyAoYWxsb2Nfc2l6ZSAqIHNpemVv ZiAoKm1hcCkpOwogCiAgIGkgPSAwOwogICBBTExfT0JKU0VDVElPTlMgKG9i amZpbGUsIHMpCi0gICAgaWYgKGluc2VydF9wIChvYmpmaWxlLCBzKSkKKyAg ICBpZiAoaW5zZXJ0X3NlY3Rpb25fcCAob2JqZmlsZS0+b2JmZCwgcy0+dGhl X2JmZF9zZWN0aW9uKSkKICAgICAgIG1hcFtpKytdID0gczsKIAotI3VuZGVm IGluc2VydF9wCi0KLSAgcXNvcnQgKG1hcCwgbWFwX3NpemUsIHNpemVvZiAo Km1hcCksIHFzb3J0X2NtcCk7Ci0KLSAgLyogV2l0aCBzZXBhcmF0ZSBkZWJ1 Z2luZm8gZmlsZXMsIHdlIG1heSBoYXZlIHVwIHRvIHR3byAoYWxtb3N0KQot ICAgICBpZGVudGljYWwgY29waWVzIG9mIHNvbWUgb2JqX3NlY3Rpb25zIGlu IHRoZSBtYXAuCi0gICAgIEZpbHRlciBvdXQgZHVwbGljYXRlcy4gICovCi0g IGZvciAoaSA9IDAsIGogPSAwOyBpIDwgbWFwX3NpemU7ICsraSkKLSAgICB7 Ci0gICAgICBzdHJ1Y3Qgb2JqX3NlY3Rpb24gKnNlY3QxID0gbWFwW2ldOwot ICAgICAgc3RydWN0IG9ial9zZWN0aW9uICpzZWN0MiA9IChpICsgMSA8IG1h cF9zaXplKSA/IG1hcFtpICsgMV0gOiBOVUxMOwotCi0gICAgICBpZiAoc2Vj dDIgPT0gTlVMTAotCSAgfHwgb2JqX3NlY3Rpb25fYWRkciAoc2VjdDEpICE9 IG9ial9zZWN0aW9uX2FkZHIgKHNlY3QyKSkKLQltYXBbaisrXSA9IHNlY3Qx OwotICAgICAgZWxzZQotCXsKLQkgIG1hcFtqKytdID0gcHJlZmVycmVkX29i al9zZWN0aW9uIChzZWN0MSwgc2VjdDIpOwotCSAgKytpOwotCX0KLSAgICB9 Ci0KLSAgaWYgKGogPCBtYXBfc2l6ZSkKLSAgICB7Ci0gICAgICAvKiBTb21l IGR1cGxpY2F0ZXMgd2VyZSBlbGltaW5hdGVkLgotCSBUaGUgbmV3IHNpemUg c2hvdWxkbid0IGJlIGxlc3MgdGhhbiBoYWxmIG9mIHRoZSBvcmlnaW5hbC4g Ki8KLSAgICAgIGdkYl9hc3NlcnQgKG1hcF9zaXplIC8gMiA8PSBqKTsKLSAg ICAgIG1hcF9zaXplID0gajsKLQotICAgICAgbWFwID0geHJlYWxsb2MgKG1h cCwgbWFwX3NpemUgKiBzaXplb2YgKCptYXApKTsgIC8qIFRyaW0gZXhjZXNz IHNwYWNlLiAgKi8KLSAgICB9CisgIHFzb3J0IChtYXAsIGFsbG9jX3NpemUs IHNpemVvZiAoKm1hcCksIHFzb3J0X2NtcCk7CisgIG1hcF9zaXplID0gZmls dGVyX2RlYnVnaW5mb19zZWN0aW9ucyhtYXAsIGFsbG9jX3NpemUpOworICBt YXBfc2l6ZSA9IGZpbHRlcl9vdmVybGFwcGluZ19zZWN0aW9ucyhtYXAsIG1h cF9zaXplKTsKKworICBpZiAobWFwX3NpemUgPCBhbGxvY19zaXplKQorICAg IC8qIFNvbWUgc2VjdGlvbnMgd2VyZSBlbGltaW5hdGVkLiAgVHJpbSBleGNl c3Mgc3BhY2UuICAqLworICAgIG1hcCA9IHhyZWFsbG9jIChtYXAsIG1hcF9z aXplICogc2l6ZW9mICgqbWFwKSk7CiAgIGVsc2UKLSAgICBnZGJfYXNzZXJ0 IChqID09IG1hcF9zaXplKTsKKyAgICBnZGJfYXNzZXJ0IChhbGxvY19zaXpl ID09IG1hcF9zaXplKTsKIAogICAqcG1hcCA9IG1hcDsKICAgKnBtYXBfc2l6 ZSA9IG1hcF9zaXplOwo= --001636ed6b162eeea6047350e86c--