From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 21619 invoked by alias); 19 Jun 2012 00:58:02 -0000 Received: (qmail 21560 invoked by uid 22791); 19 Jun 2012 00:57:58 -0000 X-SWARE-Spam-Status: No, hits=-4.7 required=5.0 tests=AWL,BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,KAM_STOCKGEN,KHOP_RCVD_TRUST,KHOP_THREADED,RCVD_IN_DNSWL_LOW,RCVD_IN_HOSTKARMA_YE,TW_BJ,T_RP_MATCHES_RCVD X-Spam-Check-By: sourceware.org Received: from mail-vc0-f169.google.com (HELO mail-vc0-f169.google.com) (209.85.220.169) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Tue, 19 Jun 2012 00:57:43 +0000 Received: by vcbfl10 with SMTP id fl10so3761470vcb.0 for ; Mon, 18 Jun 2012 17:57:42 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20120113; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :content-type:x-system-of-record:x-gm-message-state; bh=avxn2gsgun/54xJ+uIwNY+dJ9EY+3kR4yit88g3QebM=; b=mJycUc8p979b4QfL7WB6gp5WrVf7WDhv1d5YsF2Kn5RUBjui4XCu6EnaS9JEok4JkC rl7bnWiGgy2kn4ZtuvjlboAONnZ6Tiy1Sybg1wYkmuktSA1O5hoAdfJZLEL5UOotCP3u evdnPWD3LP0AfspWsSRwctd7EHPuw2wCbf2/bOhCnqLkdglBmQBYopk05QUNdiXskVPh 0g+ZvwA/wcrjYW27KMpVUzS932yo2uPsgcaqsJqEX1UTOzbQQK6p6wz6rQ+csP3TNsid 9x5J89XX9C1WFWP+uNlGwhEZW0L+0UAJr+JzjWwCk+xGjU9Ww1MxyvTv/z4ytrvY4dOj xuvg== Received: by 10.220.107.130 with SMTP id b2mr8676510vcp.35.1340067462911; Mon, 18 Jun 2012 17:57:42 -0700 (PDT) MIME-Version: 1.0 Received: by 10.220.107.130 with SMTP id b2mr8676500vcp.35.1340067462588; Mon, 18 Jun 2012 17:57:42 -0700 (PDT) Received: by 10.52.161.199 with HTTP; Mon, 18 Jun 2012 17:57:42 -0700 (PDT) In-Reply-To: <4FCCCE27.2060804@redhat.com> References: <20120524175852.D38381E139C@ruffy2.mtv.corp.google.com> <4FBF47DD.4030100@redhat.com> <4FC91A33.5040900@redhat.com> <4FCCCE27.2060804@redhat.com> Date: Tue, 19 Jun 2012 00:58:00 -0000 Message-ID: Subject: Re: [RFA] massively speed up "info var foo" on large programs From: Doug Evans To: Pedro Alves , gdb-patches@sourceware.org, ratmice@gmail.com Content-Type: multipart/mixed; boundary=f46d043c809c1528a504c2c8c51e X-System-Of-Record: true X-Gm-Message-State: ALoCoQm/RNM533HnvwW6mMg4sbINCE7sTuwKj20Iifp16PAGauj3XNIPfAIz8PvVamQcUZY5VPknuz/NQdx76xI56T6bHBEL5oB/a9Y4poDqWVp7qdNpXNCeytdiQEqj97huNyxcAAB9VMu7iX/RtWyXFT3X/bTJ4A== 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: 2012-06/txt/msg00601.txt.bz2 --f46d043c809c1528a504c2c8c51e Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Content-length: 1486 On Mon, Jun 4, 2012 at 8:03 AM, Pedro Alves wrote: > On 06/04/2012 05:06 AM, Doug Evans wrote: > >> GDB's symbol support is a mess (IMO), and I wanted >> a name and usage to restrict it to the task at hand. =A0Anything more >> general and I was pretty sure this patch would get bogged down. > > > That'd be a bit beyond what I requested. =A0;-) > >> Later on I want to revamp the symbol API, but I don't want this patch >> tied down by that. > > > Certainly. =A0That'd clearly need to be a separate change. > >> (For example, I don't want to bubble up the semantics of >> demangle_for_lookup to the caller of this function. =A0 Here we have an >> msymbol, we know we have a mangled name. =A0If you want, I can go with >> lookup_symbol_in_objfile but rename it to >> lookup_symbol_in_objfile_from_linkage_name or some such.) > > > That'd be fine with me. =A0Thanks. Here is what I checked in. 2012-06-18 Doug Evans * symtab.h (minimal_symbol): New member created_by_gdb. * elfread.c (elf_symtab_read): Set created_by_gdb for @plt minsym created by gdb. * symtab.c (lookup_symbol_in_objfile_from_linkage_name): New functi= on. (search_symbols): Call it instead of lookup_symbol. Skip symbols created by gdb. Only scan minsyms if nfiles =3D=3D 0. testsuite: * gdb.base/info-fun.exp: New file. * gdb.base/info-fun.c: New file. * gdb.base/info-fun-solib.c: New file. --f46d043c809c1528a504c2c8c51e Content-Type: text/plain; charset=US-ASCII; name="gdb-120618-search-symbols-speedup-4.patch.txt" Content-Disposition: attachment; filename="gdb-120618-search-symbols-speedup-4.patch.txt" Content-Transfer-Encoding: base64 X-Attachment-Id: f_h3m9jltp0 Content-length: 16483 MjAxMi0wNi0xOCAgRG91ZyBFdmFucyAgPGRqZUBnb29nbGUuY29tPgoKCSog c3ltdGFiLmggKG1pbmltYWxfc3ltYm9sKTogTmV3IG1lbWJlciBjcmVhdGVk X2J5X2dkYi4KCSogZWxmcmVhZC5jIChlbGZfc3ltdGFiX3JlYWQpOiBTZXQg Y3JlYXRlZF9ieV9nZGIgZm9yIEBwbHQgbWluc3ltCgljcmVhdGVkIGJ5IGdk Yi4KCSogc3ltdGFiLmMgKGxvb2t1cF9zeW1ib2xfaW5fb2JqZmlsZV9mcm9t X2xpbmthZ2VfbmFtZSk6IE5ldyBmdW5jdGlvbi4KCShzZWFyY2hfc3ltYm9s cyk6IENhbGwgaXQgaW5zdGVhZCBvZiBsb29rdXBfc3ltYm9sLgoJU2tpcCBz eW1ib2xzIGNyZWF0ZWQgYnkgZ2RiLiAgT25seSBzY2FuIG1pbnN5bXMgaWYg bmZpbGVzID09IDAuCgoJdGVzdHN1aXRlOgoJKiBnZGIuYmFzZS9pbmZvLWZ1 bi5leHA6IE5ldyBmaWxlLgoJKiBnZGIuYmFzZS9pbmZvLWZ1bi5jOiBOZXcg ZmlsZS4KCSogZ2RiLmJhc2UvaW5mby1mdW4tc29saWIuYzogTmV3IGZpbGUu CgpJbmRleDogZWxmcmVhZC5jCj09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNT IGZpbGU6IC9jdnMvc3JjL3NyYy9nZGIvZWxmcmVhZC5jLHYKcmV0cmlldmlu ZyByZXZpc2lvbiAxLjEzMQpkaWZmIC11IC1wIC1yMS4xMzEgZWxmcmVhZC5j Ci0tLSBlbGZyZWFkLmMJMTggTWF5IDIwMTIgMjE6MDI6NDcgLTAwMDAJMS4x MzEKKysrIGVsZnJlYWQuYwkxOSBKdW4gMjAxMiAwMDoyMDo0OCAtMDAwMApA QCAtNTk0LDYgKzU5NCw3IEBAIGVsZl9zeW10YWJfcmVhZCAoc3RydWN0IG9i amZpbGUgKm9iamZpbGUKIAkJICBpZiAobXRyYW1wKQogCQkgICAgewogCQkg ICAgICBNU1lNQk9MX1NJWkUgKG10cmFtcCkgPSBNU1lNQk9MX1NJWkUgKG1z eW0pOworCQkgICAgICBtdHJhbXAtPmNyZWF0ZWRfYnlfZ2RiID0gMTsKIAkJ ICAgICAgbXRyYW1wLT5maWxlbmFtZSA9IGZpbGVzeW1uYW1lOwogCQkgICAg ICBnZGJhcmNoX2VsZl9tYWtlX21zeW1ib2xfc3BlY2lhbCAoZ2RiYXJjaCwg c3ltLCBtdHJhbXApOwogCQkgICAgfQpJbmRleDogc3ltdGFiLmMKPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9zcmMvc3JjL2dkYi9z eW10YWIuYyx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS4zMTIKZGlmZiAtdSAt cCAtcjEuMzEyIHN5bXRhYi5jCi0tLSBzeW10YWIuYwkxMyBKdW4gMjAxMiAx NTo0NzoxNCAtMDAwMAkxLjMxMgorKysgc3ltdGFiLmMJMTkgSnVuIDIwMTIg MDA6MjA6NDggLTAwMDAKQEAgLTE1NTIsNiArMTU1Miw0OCBAQCBsb29rdXBf c3ltYm9sX2F1eF9zeW10YWJzIChpbnQgYmxvY2tfaW5kCiAgIHJldHVybiBO VUxMOwogfQogCisvKiBXcmFwcGVyIGFyb3VuZCBsb29rdXBfc3ltYm9sX2F1 eF9vYmpmaWxlIGZvciBzZWFyY2hfc3ltYm9scy4KKyAgIExvb2sgdXAgTElO S0FHRV9OQU1FIGluIERPTUFJTiBpbiB0aGUgZ2xvYmFsIGFuZCBzdGF0aWMg YmxvY2tzIG9mIE9CSkZJTEUKKyAgIGFuZCBhbGwgcmVsYXRlZCBvYmpmaWxl cy4gICovCisKK3N0YXRpYyBzdHJ1Y3Qgc3ltYm9sICoKK2xvb2t1cF9zeW1i b2xfaW5fb2JqZmlsZV9mcm9tX2xpbmthZ2VfbmFtZSAoc3RydWN0IG9iamZp bGUgKm9iamZpbGUsCisJCQkJCSAgICBjb25zdCBjaGFyICpsaW5rYWdlX25h bWUsCisJCQkJCSAgICBkb21haW5fZW51bSBkb21haW4pCit7CisgIGVudW0g bGFuZ3VhZ2UgbGFuZyA9IGN1cnJlbnRfbGFuZ3VhZ2UtPmxhX2xhbmd1YWdl OworICBjb25zdCBjaGFyICptb2RpZmllZF9uYW1lOworICBzdHJ1Y3QgY2xl YW51cCAqY2xlYW51cCA9IGRlbWFuZ2xlX2Zvcl9sb29rdXAgKGxpbmthZ2Vf bmFtZSwgbGFuZywKKwkJCQkJCSAmbW9kaWZpZWRfbmFtZSk7CisgIHN0cnVj dCBvYmpmaWxlICptYWluX29iamZpbGUsICpjdXJfb2JqZmlsZTsKKworICBp ZiAob2JqZmlsZS0+c2VwYXJhdGVfZGVidWdfb2JqZmlsZV9iYWNrbGluaykK KyAgICBtYWluX29iamZpbGUgPSBvYmpmaWxlLT5zZXBhcmF0ZV9kZWJ1Z19v YmpmaWxlX2JhY2tsaW5rOworICBlbHNlCisgICAgbWFpbl9vYmpmaWxlID0g b2JqZmlsZTsKKworICBmb3IgKGN1cl9vYmpmaWxlID0gbWFpbl9vYmpmaWxl OworICAgICAgIGN1cl9vYmpmaWxlOworICAgICAgIGN1cl9vYmpmaWxlID0g b2JqZmlsZV9zZXBhcmF0ZV9kZWJ1Z19pdGVyYXRlIChtYWluX29iamZpbGUs IGN1cl9vYmpmaWxlKSkKKyAgICB7CisgICAgICBzdHJ1Y3Qgc3ltYm9sICpz eW07CisKKyAgICAgIHN5bSA9IGxvb2t1cF9zeW1ib2xfYXV4X29iamZpbGUg KGN1cl9vYmpmaWxlLCBHTE9CQUxfQkxPQ0ssCisJCQkJICAgICAgIG1vZGlm aWVkX25hbWUsIGRvbWFpbik7CisgICAgICBpZiAoc3ltID09IE5VTEwpCisJ c3ltID0gbG9va3VwX3N5bWJvbF9hdXhfb2JqZmlsZSAoY3VyX29iamZpbGUs IFNUQVRJQ19CTE9DSywKKwkJCQkJIG1vZGlmaWVkX25hbWUsIGRvbWFpbik7 CisgICAgICBpZiAoc3ltICE9IE5VTEwpCisJeworCSAgZG9fY2xlYW51cHMg KGNsZWFudXApOworCSAgcmV0dXJuIHN5bTsKKwl9CisgICAgfQorCisgIGRv X2NsZWFudXBzIChjbGVhbnVwKTsKKyAgcmV0dXJuIE5VTEw7Cit9CisKIC8q IEEgaGVscGVyIGZ1bmN0aW9uIGZvciBsb29rdXBfc3ltYm9sX2F1eCB0aGF0 IGludGVyZmFjZXMgd2l0aCB0aGUKICAgICJxdWljayIgc3ltYm9sIHRhYmxl IGZ1bmN0aW9ucy4gICovCiAKQEAgLTM0NTAsMTAgKzM0OTIsMTQgQEAgc2Vh cmNoX3N5bWJvbHMgKGNoYXIgKnJlZ2V4cCwgZW51bSBzZWFyYwogICAgICBU aGUgc3ltYm9sIHdpbGwgdGhlbiBiZSBmb3VuZCBkdXJpbmcgdGhlIHNjYW4g b2Ygc3ltdGFicyBiZWxvdy4KIAogICAgICBGb3IgZnVuY3Rpb25zLCBmaW5k X3BjX3N5bXRhYiBzaG91bGQgc3VjY2VlZCBpZiB3ZSBoYXZlIGRlYnVnIGlu Zm8KLSAgICAgZm9yIHRoZSBmdW5jdGlvbiwgZm9yIHZhcmlhYmxlcyB3ZSBo YXZlIHRvIGNhbGwgbG9va3VwX3N5bWJvbAotICAgICB0byBkZXRlcm1pbmUg aWYgdGhlIHZhcmlhYmxlIGhhcyBkZWJ1ZyBpbmZvLgorICAgICBmb3IgdGhl IGZ1bmN0aW9uLCBmb3IgdmFyaWFibGVzIHdlIGhhdmUgdG8gY2FsbAorICAg ICBsb29rdXBfc3ltYm9sX2luX29iamZpbGVfZnJvbV9saW5rYWdlX25hbWUg dG8gZGV0ZXJtaW5lIGlmIHRoZSB2YXJpYWJsZQorICAgICBoYXMgZGVidWcg aW5mby4KICAgICAgSWYgdGhlIGxvb2t1cCBmYWlscywgc2V0IGZvdW5kX21p c2Mgc28gdGhhdCB3ZSB3aWxsIHJlc2NhbiB0byBwcmludAotICAgICBhbnkg bWF0Y2hpbmcgc3ltYm9scyB3aXRob3V0IGRlYnVnIGluZm8uICAqLworICAg ICBhbnkgbWF0Y2hpbmcgc3ltYm9scyB3aXRob3V0IGRlYnVnIGluZm8uCisg ICAgIFdlIG9ubHkgc2VhcmNoIHRoZSBvYmpmaWxlIHRoZSBtc3ltYm9sIGNh bWUgZnJvbSwgd2Ugbm8gbG9uZ2VyIHNlYXJjaAorICAgICBhbGwgb2JqZmls ZXMuICBJbiBsYXJnZSBwcm9ncmFtcyAoMTAwMHMgb2Ygc2hhcmVkIGxpYnMp IHNlYXJjaGluZyBhbGwKKyAgICAgb2JqZmlsZXMgaXMgbm90IHdvcnRoIHRo ZSBwYWluLiAgKi8KIAogICBpZiAobmZpbGVzID09IDAgJiYgKGtpbmQgPT0g VkFSSUFCTEVTX0RPTUFJTiB8fCBraW5kID09IEZVTkNUSU9OU19ET01BSU4p KQogICAgIHsKQEAgLTM0NjEsNiArMzUwNyw5IEBAIHNlYXJjaF9zeW1ib2xz IChjaGFyICpyZWdleHAsIGVudW0gc2VhcmMKICAgICAgIHsKICAgICAgICAg UVVJVDsKIAorCWlmIChtc3ltYm9sLT5jcmVhdGVkX2J5X2dkYikKKwkgIGNv bnRpbnVlOworCiAJaWYgKE1TWU1CT0xfVFlQRSAobXN5bWJvbCkgPT0gb3Vy dHlwZQogCSAgICB8fCBNU1lNQk9MX1RZUEUgKG1zeW1ib2wpID09IG91cnR5 cGUyCiAJICAgIHx8IE1TWU1CT0xfVFlQRSAobXN5bWJvbCkgPT0gb3VydHlw ZTMKQEAgLTM0NzAsMjEgKzM1MTksMTUgQEAgc2VhcmNoX3N5bWJvbHMgKGNo YXIgKnJlZ2V4cCwgZW51bSBzZWFyYwogCQl8fCByZWdleGVjICgmZGF0dW0u cHJlZywgU1lNQk9MX05BVFVSQUxfTkFNRSAobXN5bWJvbCksIDAsCiAJCQkg ICAgTlVMTCwgMCkgPT0gMCkKIAkgICAgICB7Ci0JCWlmICgwID09IGZpbmRf cGNfc3ltdGFiIChTWU1CT0xfVkFMVUVfQUREUkVTUyAobXN5bWJvbCkpKQot CQkgIHsKLQkJICAgIC8qIEZJWE1FOiBjYXJsdG9uLzIwMDMtMDItMDQ6IEdp dmVuIHRoYXQgdGhlCi0JCSAgICAgICBzZW1hbnRpY3Mgb2YgbG9va3VwX3N5 bWJvbCBrZWVwcyBvbiBjaGFuZ2luZwotCQkgICAgICAgc2xpZ2h0bHksIGl0 IHdvdWxkIGJlIGEgbmljZSBpZGVhIGlmIHdlIGhhZCBhCi0JCSAgICAgICBm dW5jdGlvbiBsb29rdXBfc3ltYm9sX21pbnN5bSB0aGF0IGZvdW5kIHRoZQot CQkgICAgICAgc3ltYm9sIGFzc29jaWF0ZWQgdG8gYSBnaXZlbiBtaW5pbWFs IHN5bWJvbCAoaWYKLQkJICAgICAgIGFueSkuICAqLwotCQkgICAgaWYgKGtp bmQgPT0gRlVOQ1RJT05TX0RPTUFJTgotCQkJfHwgbG9va3VwX3N5bWJvbCAo U1lNQk9MX0xJTktBR0VfTkFNRSAobXN5bWJvbCksCi0JCQkJCSAgKHN0cnVj dCBibG9jayAqKSBOVUxMLAotCQkJCQkgIFZBUl9ET01BSU4sIDApCi0JCQk9 PSBOVUxMKQotCQkgICAgICBmb3VuZF9taXNjID0gMTsKLQkJICB9CisJCS8q IE5vdGU6IEFuIGltcG9ydGFudCBzaWRlLWVmZmVjdCBvZiB0aGVzZSBsb29r dXAgZnVuY3Rpb25zCisJCSAgIGlzIHRvIGV4cGFuZCB0aGUgc3ltYm9sIHRh YmxlIGlmIG1zeW1ib2wgaXMgZm91bmQsIGZvciB0aGUKKwkJICAgYmVuZWZp dCBvZiB0aGUgbmV4dCBsb29wIG9uIEFMTF9QUklNQVJZX1NZTVRBQlMuICAq LworCQlpZiAoa2luZCA9PSBGVU5DVElPTlNfRE9NQUlOCisJCSAgICA/IGZp bmRfcGNfc3ltdGFiIChTWU1CT0xfVkFMVUVfQUREUkVTUyAobXN5bWJvbCkp ID09IE5VTEwKKwkJICAgIDogKGxvb2t1cF9zeW1ib2xfaW5fb2JqZmlsZV9m cm9tX2xpbmthZ2VfbmFtZQorCQkgICAgICAgKG9iamZpbGUsIFNZTUJPTF9M SU5LQUdFX05BTUUgKG1zeW1ib2wpLCBWQVJfRE9NQUlOKQorCQkgICAgICAg PT0gTlVMTCkpCisJCSAgZm91bmRfbWlzYyA9IDE7CiAJICAgICAgfQogCSAg fQogICAgICAgfQpAQCAtMzU2MSwxMiArMzYwNCwxNSBAQCBzZWFyY2hfc3lt Ym9scyAoY2hhciAqcmVnZXhwLCBlbnVtIHNlYXJjCiAgIC8qIElmIHRoZXJl IGFyZSBubyBleWVzLCBhdm9pZCBhbGwgY29udGFjdC4gIEkgbWVhbiwgaWYg dGhlcmUgYXJlCiAgICAgIG5vIGRlYnVnIHN5bWJvbHMsIHRoZW4gcHJpbnQg ZGlyZWN0bHkgZnJvbSB0aGUgbXN5bWJvbF92ZWN0b3IuICAqLwogCi0gIGlm IChmb3VuZF9taXNjIHx8IGtpbmQgIT0gRlVOQ1RJT05TX0RPTUFJTikKKyAg aWYgKGZvdW5kX21pc2MgfHwgKG5maWxlcyA9PSAwICYmIGtpbmQgIT0gRlVO Q1RJT05TX0RPTUFJTikpCiAgICAgewogICAgICAgQUxMX01TWU1CT0xTIChv YmpmaWxlLCBtc3ltYm9sKQogICAgICAgewogICAgICAgICBRVUlUOwogCisJ aWYgKG1zeW1ib2wtPmNyZWF0ZWRfYnlfZ2RiKQorCSAgY29udGludWU7CisK IAlpZiAoTVNZTUJPTF9UWVBFIChtc3ltYm9sKSA9PSBvdXJ0eXBlCiAJICAg IHx8IE1TWU1CT0xfVFlQRSAobXN5bWJvbCkgPT0gb3VydHlwZTIKIAkgICAg fHwgTVNZTUJPTF9UWVBFIChtc3ltYm9sKSA9PSBvdXJ0eXBlMwpAQCAtMzU3 NiwxNCArMzYyMiwxNCBAQCBzZWFyY2hfc3ltYm9scyAoY2hhciAqcmVnZXhw LCBlbnVtIHNlYXJjCiAJCXx8IHJlZ2V4ZWMgKCZkYXR1bS5wcmVnLCBTWU1C T0xfTkFUVVJBTF9OQU1FIChtc3ltYm9sKSwgMCwKIAkJCSAgICBOVUxMLCAw KSA9PSAwKQogCSAgICAgIHsKLQkJLyogRnVuY3Rpb25zOiAgTG9vayB1cCBi eSBhZGRyZXNzLiAgKi8KLQkJaWYgKGtpbmQgIT0gRlVOQ1RJT05TX0RPTUFJ TiB8fAotCQkgICAgKDAgPT0gZmluZF9wY19zeW10YWIgKFNZTUJPTF9WQUxV RV9BRERSRVNTIChtc3ltYm9sKSkpKQorCQkvKiBGb3IgZnVuY3Rpb25zIHdl IGNhbiBkbyBhIHF1aWNrIGNoZWNrIG9mIHdoZXRoZXIgdGhlCisJCSAgIHN5 bWJvbCBtaWdodCBiZSBmb3VuZCB2aWEgZmluZF9wY19zeW10YWIuICAqLwor CQlpZiAoa2luZCAhPSBGVU5DVElPTlNfRE9NQUlOCisJCSAgICB8fCBmaW5k X3BjX3N5bXRhYiAoU1lNQk9MX1ZBTFVFX0FERFJFU1MgKG1zeW1ib2wpKSA9 PSBOVUxMKQogCQkgIHsKLQkJICAgIC8qIFZhcmlhYmxlcy9BYnNvbHV0ZXM6 ICBMb29rIHVwIGJ5IG5hbWUuICAqLwotCQkgICAgaWYgKGxvb2t1cF9zeW1i b2wgKFNZTUJPTF9MSU5LQUdFX05BTUUgKG1zeW1ib2wpLAotCQkJCSAgICAg ICAoc3RydWN0IGJsb2NrICopIE5VTEwsIFZBUl9ET01BSU4sIDApCi0JCQkg PT0gTlVMTCkKKwkJICAgIGlmIChsb29rdXBfc3ltYm9sX2luX29iamZpbGVf ZnJvbV9saW5rYWdlX25hbWUKKwkJCShvYmpmaWxlLCBTWU1CT0xfTElOS0FH RV9OQU1FIChtc3ltYm9sKSwgVkFSX0RPTUFJTikKKwkJCT09IE5VTEwpCiAJ CSAgICAgIHsKIAkJCS8qIG1hdGNoICovCiAJCQlwc3IgPSAoc3RydWN0IHN5 bWJvbF9zZWFyY2ggKikKSW5kZXg6IHN5bXRhYi5oCj09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvc3JjL3NyYy9nZGIvc3ltdGFiLmgs dgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMjA3CmRpZmYgLXUgLXAgLXIxLjIw NyBzeW10YWIuaAotLS0gc3ltdGFiLmgJMTMgSnVuIDIwMTIgMTU6NDc6MTUg LTAwMDAJMS4yMDcKKysrIHN5bXRhYi5oCTE5IEp1biAyMDEyIDAwOjIwOjQ4 IC0wMDAwCkBAIC0zNDAsNiArMzQwLDEwIEBAIHN0cnVjdCBtaW5pbWFsX3N5 bWJvbAogCiAgIEVOVU1fQklURklFTEQobWluaW1hbF9zeW1ib2xfdHlwZSkg dHlwZSA6IDg7CiAKKyAgLyogTm9uLXplcm8gaWYgdGhpcyBzeW1ib2wgd2Fz IGNyZWF0ZWQgYnkgZ2RiLgorICAgICBTdWNoIHN5bWJvbHMgZG8gbm90IGFw cGVhciBpbiB0aGUgb3V0cHV0IG9mICJpbmZvIHZhcnxmdW4iLiAgKi8KKyAg dW5zaWduZWQgaW50IGNyZWF0ZWRfYnlfZ2RiIDogMTsKKwogICAvKiBUd28g ZmxhZyBiaXRzIHByb3ZpZGVkIGZvciB0aGUgdXNlIG9mIHRoZSB0YXJnZXQu ICAqLwogICB1bnNpZ25lZCBpbnQgdGFyZ2V0X2ZsYWdfMSA6IDE7CiAgIHVu c2lnbmVkIGludCB0YXJnZXRfZmxhZ18yIDogMTsKSW5kZXg6IHRlc3RzdWl0 ZS9nZGIuYmFzZS9pbmZvLWZ1bi1zb2xpYi5jCj09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0KUkNTIGZpbGU6IHRlc3RzdWl0ZS9nZGIuYmFzZS9pbmZvLWZ1bi1z b2xpYi5jCmRpZmYgLU4gdGVzdHN1aXRlL2dkYi5iYXNlL2luZm8tZnVuLXNv bGliLmMKLS0tIC9kZXYvbnVsbAkxIEphbiAxOTcwIDAwOjAwOjAwIC0wMDAw CisrKyB0ZXN0c3VpdGUvZ2RiLmJhc2UvaW5mby1mdW4tc29saWIuYwkxOSBK dW4gMjAxMiAwMDoyMDo0OSAtMDAwMApAQCAtMCwwICsxLDIwIEBACisvKiBD b3B5cmlnaHQgMjAxMiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4K KworICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4g cmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAgIGl0IHVuZGVyIHRo ZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMg cHVibGlzaGVkIGJ5CisgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u OyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgorICAgKGF0 IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgVGhpcyBw cm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2ls bCBiZSB1c2VmdWwsCisgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdp dGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAgTUVSQ0hB TlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF LiAgU2VlIHRoZQorICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9y IG1vcmUgZGV0YWlscy4KKworICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVk IGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAg IGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6 Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LiAgKi8KKworaW50Citmb28gKHZv aWQpCit7CisgIHJldHVybiAwOworfQpJbmRleDogdGVzdHN1aXRlL2dkYi5i YXNlL2luZm8tZnVuLmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmls ZTogdGVzdHN1aXRlL2dkYi5iYXNlL2luZm8tZnVuLmMKZGlmZiAtTiB0ZXN0 c3VpdGUvZ2RiLmJhc2UvaW5mby1mdW4uYwotLS0gL2Rldi9udWxsCTEgSmFu IDE5NzAgMDA6MDA6MDAgLTAwMDAKKysrIHRlc3RzdWl0ZS9nZGIuYmFzZS9p bmZvLWZ1bi5jCTE5IEp1biAyMDEyIDAwOjIwOjQ5IC0wMDAwCkBAIC0wLDAg KzEsMjIgQEAKKy8qIENvcHlyaWdodCAyMDEyIEZyZWUgU29mdHdhcmUgRm91 bmRhdGlvbiwgSW5jLgorCisgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0 d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQor ICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJs aWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyAgIHRoZSBGcmVlIFNvZnR3 YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vu c2UsIG9yCisgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9u LgorCisgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhv cGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgIGJ1dCBXSVRIT1VUIEFO WSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5 IG9mCisgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJU SUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgICBHTlUgR2VuZXJhbCBQdWJs aWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgICBZb3Ugc2hvdWxk IGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJs aWMgTGljZW5zZQorICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBu b3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uICAqLwor CitleHRlcm4gaW50IGZvbyAodm9pZCk7CisKK2ludAorbWFpbiAoKQorewor ICByZXR1cm4gZm9vICgpOworfQpJbmRleDogdGVzdHN1aXRlL2dkYi5iYXNl L2luZm8tZnVuLmV4cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxl OiB0ZXN0c3VpdGUvZ2RiLmJhc2UvaW5mby1mdW4uZXhwCmRpZmYgLU4gdGVz dHN1aXRlL2dkYi5iYXNlL2luZm8tZnVuLmV4cAotLS0gL2Rldi9udWxsCTEg SmFuIDE5NzAgMDA6MDA6MDAgLTAwMDAKKysrIHRlc3RzdWl0ZS9nZGIuYmFz ZS9pbmZvLWZ1bi5leHAJMTkgSnVuIDIwMTIgMDA6MjA6NDkgLTAwMDAKQEAg LTAsMCArMSw3NiBAQAorIyBDb3B5cmlnaHQgMjAxMiBGcmVlIFNvZnR3YXJl IEZvdW5kYXRpb24sIEluYy4KKyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29m dHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkK KyMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJs aWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyMgdGhlIEZyZWUgU29mdHdh cmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5z ZSwgb3IKKyMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4K KyMKKyMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3Bl IHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisjIGJ1dCBXSVRIT1VUIEFOWSBX QVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9m CisjIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM QVIgUFVSUE9TRS4gIFNlZSB0aGUKKyMgR05VIEdlbmVyYWwgUHVibGljIExp Y2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyMKKyMgWW91IHNob3VsZCBoYXZl IHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExp Y2Vuc2UKKyMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNl ZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisKK2lmIHsgW3Nr aXBfc2hsaWJfdGVzdHNdIHx8IFtpc19yZW1vdGUgdGFyZ2V0XSB9IHsKKyAg ICByZXR1cm4gMAorfQorCisjIExpYnJhcnkgZmlsZS4KK3NldCBsaWJuYW1l ICJpbmZvLWZ1bi1zb2xpYiIKK3NldCBzcmNmaWxlX2xpYiAke3NyY2Rpcn0v JHtzdWJkaXJ9LyR7bGlibmFtZX0uYworc2V0IGJpbmZpbGVfbGliICR7b2Jq ZGlyfS8ke3N1YmRpcn0vJHtsaWJuYW1lfS5zbworc2V0IGxpYl9mbGFncyB7 fQorIyBCaW5hcnkgZmlsZS4KK3NldCB0ZXN0ZmlsZSAiaW5mby1mdW4iCitz ZXQgc3JjZmlsZSAke3NyY2Rpcn0vJHtzdWJkaXJ9LyR7dGVzdGZpbGV9LmMK K3NldCBleGVjdXRhYmxlICR7dGVzdGZpbGV9CitzZXQgYmluZmlsZSAke29i amRpcn0vJHtzdWJkaXJ9LyR7ZXhlY3V0YWJsZX0KK3NldCBiaW5fZmxhZ3Mg W2xpc3QgZGVidWcgc2hsaWI9JHtiaW5maWxlX2xpYn1dCisKK2lmIFtnZXRf Y29tcGlsZXJfaW5mbyAke2JpbmZpbGV9XSB7CisgICAgcmV0dXJuIC0xCit9 CisKKyMgU0VQIG11c3QgYmUgbGFzdCBmb3IgdGhlIHBvc3NpYmxlIGB1bnN1 cHBvcnRlZCcgZXJyb3IgcGF0aC4KK2ZvcmVhY2ggbGlic2VwZGVidWcge05P IElOIFNFUH0geyB3aXRoX3Rlc3RfcHJlZml4ICIkbGlic2VwZGVidWciIHsK KworICAgIHNldCBzZXBfbGliX2ZsYWdzICRsaWJfZmxhZ3MKKyAgICBpZiB7 JGxpYnNlcGRlYnVnICE9ICJOTyJ9IHsKKwlsYXBwZW5kIHNlcF9saWJfZmxh Z3Mge2RlYnVnfQorICAgIH0KKyAgICBpZiB7IFtnZGJfY29tcGlsZV9zaGxp YiAke3NyY2ZpbGVfbGlifSAke2JpbmZpbGVfbGlifSAkc2VwX2xpYl9mbGFn c10gIT0gIiIKKwkgfHwgW2dkYl9jb21waWxlICR7c3JjZmlsZX0gJHtiaW5m aWxlfSBleGVjdXRhYmxlICRiaW5fZmxhZ3NdICE9ICIiIH0geworICAgICAg dW50ZXN0ZWQgIkNvdWxkIG5vdCBjb21waWxlICRiaW5maWxlX2xpYiBvciAk YmluZmlsZS4iCisgICAgICByZXR1cm4gLTEKKyAgICB9CisKKyAgICBpZiB7 JGxpYnNlcGRlYnVnID09ICJTRVAifSB7CisJaWYge1tnZGJfZ251X3N0cmlw X2RlYnVnICRiaW5maWxlX2xpYl0gIT0gMH0geworCSAgICB1bnN1cHBvcnRl ZCAiQ291bGQgbm90IHNwbGl0IGRlYnVnIG9mICRiaW5maWxlX2xpYi4iCisJ ICAgIHJldHVybgorCX0gZWxzZSB7CisJICAgIHBhc3MgInNwbGl0IHNvbGli IgorCX0KKyAgICB9CisKKyAgICBjbGVhbl9yZXN0YXJ0ICRleGVjdXRhYmxl CisKKyAgICBpZiAhW3J1bnRvX21haW5dIHRoZW4geworICAgICAgZmFpbCAi Q2FuJ3QgcnVuIHRvIG1haW4iCisgICAgICByZXR1cm4gMAorICAgIH0KKwor ICAgIHNldCBtYXRjaF9zdHIge0FsbCBmdW5jdGlvbnMgbWF0Y2hpbmcgcmVn dWxhciBleHByZXNzaW9uICJmb28iOltcclxuXSp9CisgICAgaWYgeyAiJGxp YnNlcGRlYnVnIiAhPSAiTk8iICB9IHsKKwlhcHBlbmQgbWF0Y2hfc3RyIHtG aWxlIC4qL2luZm8tZnVuLXNvbGliWy5dYzpbXHJcbl0qfQorCWFwcGVuZCBt YXRjaF9zdHIge2ludCBmb29cKHZvaWRcKTtbXHJcbl0qfQorICAgIH0KKyAg ICBhcHBlbmQgbWF0Y2hfc3RyIHtOb24tZGVidWdnaW5nIHN5bWJvbHM6W1xy XG5dKn0KKyAgICBhcHBlbmQgbWF0Y2hfc3RyICIkaGV4ICpmb28oQHBsdCk/ XFtcclxuXF0qIgorICAgIGlmIHsgIiRsaWJzZXBkZWJ1ZyIgPT0gIk5PIiAg fSB7CisJYXBwZW5kIG1hdGNoX3N0ciAiJGhleCAqZm9vXFtcclxuXF0qIgor ICAgIH0KKworICAgIGdkYl90ZXN0ICJpbmZvIGZ1biBmb28iICIkbWF0Y2hf c3RyIgorfX0K --f46d043c809c1528a504c2c8c51e--