From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 20405 invoked by alias); 13 Jul 2012 17:39:50 -0000 Received: (qmail 20127 invoked by uid 22791); 13 Jul 2012 17:39:44 -0000 X-SWARE-Spam-Status: No, hits=-5.5 required=5.0 tests=AWL,BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,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-vb0-f41.google.com (HELO mail-vb0-f41.google.com) (209.85.212.41) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Fri, 13 Jul 2012 17:39:26 +0000 Received: by vbkv13 with SMTP id v13so2999242vbk.0 for ; Fri, 13 Jul 2012 10:39:25 -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 :cc:content-type:x-system-of-record:x-gm-message-state; bh=VydkPcewDruJy25hW8ubfkN4CIrIUhHWE41ibH2UUUw=; b=p2SCwY0KwT4YuzvRefT72uFbDKEzOKCzfh/90cU35adHfrTlILInQpt+s7boSB7dV9 7mTOGLmHnVCTEW+byMfBHc0vk6nvCDXrZ0cZYZKGTocO7WILwfJSobi/hmwdQRCSgYez aZk/OO9HhOnpROu0mroWOzR+3ZjTUHwUtwPHmLBBOZsW3/tXj0SxN20kcglxXHV/PMR2 j6XgKbLjHTsnVlckKEy93+NKBy0V8I3dqesPseAJKqqpVrA0kHXPhLly0ZcaeTzZQVPn tiu/V/I/cz8uDRqoh1kUkyDnlzGPAxVy5h+ooGMyIBOJik8zAfP/FqCGsTxUgK0+NSCN C/rA== Received: by 10.52.90.144 with SMTP id bw16mr840403vdb.129.1342201165624; Fri, 13 Jul 2012 10:39:25 -0700 (PDT) MIME-Version: 1.0 Received: by 10.52.90.144 with SMTP id bw16mr840391vdb.129.1342201165347; Fri, 13 Jul 2012 10:39:25 -0700 (PDT) Received: by 10.52.157.4 with HTTP; Fri, 13 Jul 2012 10:39:25 -0700 (PDT) In-Reply-To: <87wr27aeuk.fsf@fleche.redhat.com> References: <20120710003324.100001E13A1@ruffy2.mtv.corp.google.com> <87629vip17.fsf@fleche.redhat.com> <87wr27aeuk.fsf@fleche.redhat.com> Date: Fri, 13 Jul 2012 17:39:00 -0000 Message-ID: Subject: Re: [RFA] symtab.c: Set "first" to zero. From: Doug Evans To: Tom Tromey Cc: gdb-patches@sourceware.org Content-Type: multipart/mixed; boundary=20cf307f33e0ad7c1604c4b98fc1 X-System-Of-Record: true X-Gm-Message-State: ALoCoQmKY5GcBlCjNagw70VkNR0A7AO2qZYkjZbBGGf+asS+DgoWGwEtvAQt4if94GvxsfjriZkyoxmHVIO8YA9mi5polv2maZD4XROcomL/K/Q6Jj4XF+KjefbRxpSG1NyoPfq2HlFEK0+8AvaYGz246ZAbCl4bFkJpmNmiA4w9TeFeVJVSxgCPcXZTLBGF8CnVr+PxW12g 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-07/txt/msg00179.txt.bz2 --20cf307f33e0ad7c1604c4b98fc1 Content-Type: text/plain; charset=ISO-8859-1 Content-length: 2531 On Fri, Jul 13, 2012 at 7:57 AM, Tom Tromey wrote: >>>>>> "Doug" == Doug Evans writes: > > Doug> Any preference? > > Not really, I guess. > > I didn't realize this way would have to have that weirdness in > output_source_filename. > > What do you think of this? > It just makes the cache explicitly managed, and so avoids the confusion > in output_source_filename about what 'first' means. > > Tom > > 2012-07-13 Tom Tromey > > * symtab.c (filename_seen_tab, filename_seen_tab_alloc_size) > (filename_seen_tab_cur_size): New globals. > (reset_filename_seen_cache): New function. > (filename_seen): Remove 'first' parameter. Update. > (output_source_filename): Update. > (sources_info): Call reset_filename_seen_cache. > (struct add_partial_filename_data) : Remove field. > (maybe_add_partial_symtab_filename): Update. > (make_source_files_completion_list): Call > reset_filename_seen_cache. Update. In that case I'd rather "go whole hog" with this. 2012-07-13 Doug Evans * symtab.c (output_source_filename): Delete unnecessary forward decl. (filename_seen_cache): New struct. (INITIAL_FILENAME_SEEN_CACHE_SIZE): New macro. (create_filename_seen_cache): New function. (clear_filename_seen_cache, delete_filename_seen_cache): New functions. (filename_seen): Delete arg "first". New arg "cache". All callers updated. (output_source_filename_data): New struct. (output_source_filename): Delete arg "first". New arg "data". All callers updated. (sources_info): Delete local "first". New locals "data", "cleanups". Rewrite to use filename_seen_cache. (add_partial_filename_data): Delete member "first". New member "filename_seen_cache". All uses updated. (make_source_files_completion_list): Rewrite to use filename_seen_cache. > @@ -3209,6 +3216,7 @@ sources_info (char *ignore, int from_tty) > > printf_filtered ("Source files for which symbols have been read in:\n\n"); > > + reset_filename_seen_cache (); > first = 1; > ALL_SYMTABS (objfile, s) > { Another call to reset_filename_cache would be needed here: printf_filtered ("Source files for which symbols " "will be read in on demand:\n\n"); + reset_filename_seen_cache (); [assuming the intent wasn't to change the output of course] --20cf307f33e0ad7c1604c4b98fc1 Content-Type: text/plain; charset=US-ASCII; name="gdb-120713-filename-seen-cache-1.patch.txt" Content-Disposition: attachment; filename="gdb-120713-filename-seen-cache-1.patch.txt" Content-Transfer-Encoding: base64 X-Attachment-Id: f_h4ljwoja0 Content-length: 13335 MjAxMi0wNy0xMyAgRG91ZyBFdmFucyAgPGRqZUBnb29nbGUuY29tPgoKCSog c3ltdGFiLmMgKG91dHB1dF9zb3VyY2VfZmlsZW5hbWUpOiBEZWxldGUgdW5u ZWNlc3NhcnkgZm9yd2FyZCBkZWNsLgoJKGZpbGVuYW1lX3NlZW5fY2FjaGUp OiBOZXcgc3RydWN0LgoJKElOSVRJQUxfRklMRU5BTUVfU0VFTl9DQUNIRV9T SVpFKTogTmV3IG1hY3JvLgoJKGNyZWF0ZV9maWxlbmFtZV9zZWVuX2NhY2hl KTogTmV3IGZ1bmN0aW9uLgoJKGNsZWFyX2ZpbGVuYW1lX3NlZW5fY2FjaGUs IGRlbGV0ZV9maWxlbmFtZV9zZWVuX2NhY2hlKTogTmV3IGZ1bmN0aW9ucy4K CShmaWxlbmFtZV9zZWVuKTogRGVsZXRlIGFyZyAiZmlyc3QiLiAgTmV3IGFy ZyAiY2FjaGUiLiAgQWxsIGNhbGxlcnMKCXVwZGF0ZWQuCgkob3V0cHV0X3Nv dXJjZV9maWxlbmFtZV9kYXRhKTogTmV3IHN0cnVjdC4KCShvdXRwdXRfc291 cmNlX2ZpbGVuYW1lKTogRGVsZXRlIGFyZyAiZmlyc3QiLiAgTmV3IGFyZyAi ZGF0YSIuCglBbGwgY2FsbGVycyB1cGRhdGVkLgoJKHNvdXJjZXNfaW5mbyk6 IERlbGV0ZSBsb2NhbCAiZmlyc3QiLiAgTmV3IGxvY2FscyAiZGF0YSIsICJj bGVhbnVwcyIuCglSZXdyaXRlIHRvIHVzZSBmaWxlbmFtZV9zZWVuX2NhY2hl LgoJKGFkZF9wYXJ0aWFsX2ZpbGVuYW1lX2RhdGEpOiBEZWxldGUgbWVtYmVy ICJmaXJzdCIuICBOZXcgbWVtYmVyCgkiZmlsZW5hbWVfc2Vlbl9jYWNoZSIu ICBBbGwgdXNlcyB1cGRhdGVkLgoJKG1ha2Vfc291cmNlX2ZpbGVzX2NvbXBs ZXRpb25fbGlzdCk6IFJld3JpdGUgdG8gdXNlCglmaWxlbmFtZV9zZWVuX2Nh Y2hlLgoKSW5kZXg6IHN5bXRhYi5jCj09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K UkNTIGZpbGU6IC9jdnMvc3JjL3NyYy9nZGIvc3ltdGFiLmMsdgpyZXRyaWV2 aW5nIHJldmlzaW9uIDEuMzE2CmRpZmYgLXUgLXAgLXIxLjMxNiBzeW10YWIu YwotLS0gc3ltdGFiLmMJMjkgSnVuIDIwMTIgMjI6NDY6NDUgLTAwMDAJMS4z MTYKKysrIHN5bXRhYi5jCTEzIEp1bCAyMDEyIDE3OjIzOjQyIC0wMDAwCkBA IC03NSw4ICs3NSw2IEBAIHN0YXRpYyB2b2lkIHZhcmlhYmxlc19pbmZvIChj aGFyICosIGludCkKIAogc3RhdGljIHZvaWQgc291cmNlc19pbmZvIChjaGFy ICosIGludCk7CiAKLXN0YXRpYyB2b2lkIG91dHB1dF9zb3VyY2VfZmlsZW5h bWUgKGNvbnN0IGNoYXIgKiwgaW50ICopOwotCiBzdGF0aWMgaW50IGZpbmRf bGluZV9jb21tb24gKHN0cnVjdCBsaW5ldGFibGUgKiwgaW50LCBpbnQgKiwg aW50KTsKIAogc3RhdGljIHN0cnVjdCBzeW1ib2wgKmxvb2t1cF9zeW1ib2xf YXV4IChjb25zdCBjaGFyICpuYW1lLApAQCAtMzEwNSw1NyArMzEwMywxMDQg QEAgb3BlcmF0b3JfY2hhcnMgKGNoYXIgKnAsIGNoYXIgKiplbmQpCiB9CiAM CiAKKy8qIENhY2hlIHRvIHdhdGNoIGZvciBmaWxlIG5hbWVzIGFscmVhZHkg c2VlbiBieSBmaWxlbmFtZV9zZWVuLiAgKi8KKworc3RydWN0IGZpbGVuYW1l X3NlZW5fY2FjaGUKK3sKKyAgLyogVGFibGUgb2YgZmlsZXMgc2VlbiBzbyBm YXIuICAqLworICBjb25zdCBjaGFyICoqdGFiOworCisgIC8qIEFsbG9jYXRl ZCBzaXplIG9mIHRhYiBpbiBlbGVtZW50cy4gICovCisgIGludCB0YWJfYWxs b2Nfc2l6ZTsKKyNkZWZpbmUgSU5JVElBTF9GSUxFTkFNRV9TRUVOX0NBQ0hF X1NJWkUgMTAwCisKKyAgLyogQ3VycmVudCBzaXplIG9mIHRhYiBpbiBlbGVt ZW50cy4gICovCisgIGludCB0YWJfY3VyX3NpemU7Cit9OworCisvKiBmaWxl bmFtZV9zZWVuX2NhY2hlIGNvbnN0cnVjdG9yLiAgKi8KKworc3RhdGljIHN0 cnVjdCBmaWxlbmFtZV9zZWVuX2NhY2hlICoKK2NyZWF0ZV9maWxlbmFtZV9z ZWVuX2NhY2hlICh2b2lkKQoreworICBzdHJ1Y3QgZmlsZW5hbWVfc2Vlbl9j YWNoZSAqY2FjaGU7CisKKyAgY2FjaGUgPSBYTkVXIChzdHJ1Y3QgZmlsZW5h bWVfc2Vlbl9jYWNoZSk7CisgIGNhY2hlLT50YWJfYWxsb2Nfc2l6ZSA9IElO SVRJQUxfRklMRU5BTUVfU0VFTl9DQUNIRV9TSVpFOworICBjYWNoZS0+dGFi ID0gWE5FV1ZFQyAoY29uc3QgY2hhciAqLCBjYWNoZS0+dGFiX2FsbG9jX3Np emUpOworICBjYWNoZS0+dGFiX2N1cl9zaXplID0gMDsKKworICByZXR1cm4g Y2FjaGU7Cit9CisKKy8qIEVtcHR5IHRoZSBjYWNoZSwgYnV0IGRvIG5vdCBk ZWxldGUgaXQuICAqLworCitzdGF0aWMgdm9pZAorY2xlYXJfZmlsZW5hbWVf c2Vlbl9jYWNoZSAoc3RydWN0IGZpbGVuYW1lX3NlZW5fY2FjaGUgKiBjYWNo ZSkKK3sKKyAgY2FjaGUtPnRhYl9jdXJfc2l6ZSA9IDA7Cit9CisKKy8qIGZp bGVuYW1lX3NlZW5fY2FjaGUgZGVzdHJ1Y3Rvci4KKyAgIFRoaXMgdGFrZXMg YSB2b2lkICogYXJndW1lbnQgYXMgaXQgaXMgZ2VuZXJhbGx5IHVzZWQgYXMg YSBjbGVhbnVwLiAgKi8KKworc3RhdGljIHZvaWQKK2RlbGV0ZV9maWxlbmFt ZV9zZWVuX2NhY2hlICh2b2lkICpwdHIpCit7CisgIHN0cnVjdCBmaWxlbmFt ZV9zZWVuX2NhY2hlICpjYWNoZSA9IHB0cjsKKworICB4ZnJlZSAoY2FjaGUt PnRhYik7CisgIHhmcmVlIChjYWNoZSk7Cit9CisKIC8qIElmIEZJTEUgaXMg bm90IGFscmVhZHkgaW4gdGhlIHRhYmxlIG9mIGZpbGVzLCByZXR1cm4gemVy bzsKICAgIG90aGVyd2lzZSByZXR1cm4gbm9uLXplcm8uICBPcHRpb25hbGx5 IGFkZCBGSUxFIHRvIHRoZSB0YWJsZSBpZiBBREQKICAgIGlzIG5vbi16ZXJv LiAgSWYgKkZJUlNUIGlzIG5vbi16ZXJvLCBmb3JnZXQgdGhlIG9sZCB0YWJs ZQogICAgY29udGVudHMuICAqLwogCiBzdGF0aWMgaW50Ci1maWxlbmFtZV9z ZWVuIChjb25zdCBjaGFyICpmaWxlLCBpbnQgYWRkLCBpbnQgKmZpcnN0KQor ZmlsZW5hbWVfc2VlbiAoc3RydWN0IGZpbGVuYW1lX3NlZW5fY2FjaGUgKmNh Y2hlLCBjb25zdCBjaGFyICpmaWxlLCBpbnQgYWRkKQogewotICAvKiBUYWJs ZSBvZiBmaWxlcyBzZWVuIHNvIGZhci4gICovCi0gIHN0YXRpYyBjb25zdCBj aGFyICoqdGFiID0gTlVMTDsKLSAgLyogQWxsb2NhdGVkIHNpemUgb2YgdGFi IGluIGVsZW1lbnRzLgotICAgICBTdGFydCB3aXRoIG9uZSAyNTYtYnl0ZSBi bG9jayAod2hlbiB1c2luZyBHTlUgbWFsbG9jLmMpLgotICAgICAyNCBpcyB0 aGUgbWFsbG9jIG92ZXJoZWFkIHdoZW4gcmFuZ2UgY2hlY2tpbmcgaXMgaW4g ZWZmZWN0LiAgKi8KLSAgc3RhdGljIGludCB0YWJfYWxsb2Nfc2l6ZSA9ICgy NTYgLSAyNCkgLyBzaXplb2YgKGNoYXIgKik7Ci0gIC8qIEN1cnJlbnQgc2l6 ZSBvZiB0YWIgaW4gZWxlbWVudHMuICAqLwotICBzdGF0aWMgaW50IHRhYl9j dXJfc2l6ZTsKICAgY29uc3QgY2hhciAqKnA7CiAKLSAgaWYgKCpmaXJzdCkK LSAgICB7Ci0gICAgICBpZiAodGFiID09IE5VTEwpCi0JdGFiID0gKGNvbnN0 IGNoYXIgKiopIHhtYWxsb2MgKHRhYl9hbGxvY19zaXplICogc2l6ZW9mICgq dGFiKSk7Ci0gICAgICB0YWJfY3VyX3NpemUgPSAwOwotICAgIH0KLQogICAv KiBJcyBGSUxFIGluIHRhYj8gICovCi0gIGZvciAocCA9IHRhYjsgcCA8IHRh YiArIHRhYl9jdXJfc2l6ZTsgcCsrKQorICBmb3IgKHAgPSBjYWNoZS0+dGFi OyBwIDwgY2FjaGUtPnRhYiArIGNhY2hlLT50YWJfY3VyX3NpemU7IHArKykK ICAgICBpZiAoZmlsZW5hbWVfY21wICgqcCwgZmlsZSkgPT0gMCkKICAgICAg IHJldHVybiAxOwogCiAgIC8qIE5vOyBtYXliZSBhZGQgaXQgdG8gdGFiLiAg Ki8KICAgaWYgKGFkZCkKICAgICB7Ci0gICAgICBpZiAodGFiX2N1cl9zaXpl ID09IHRhYl9hbGxvY19zaXplKQorICAgICAgaWYgKGNhY2hlLT50YWJfY3Vy X3NpemUgPT0gY2FjaGUtPnRhYl9hbGxvY19zaXplKQogCXsKLQkgIHRhYl9h bGxvY19zaXplICo9IDI7Ci0JICB0YWIgPSAoY29uc3QgY2hhciAqKikgeHJl YWxsb2MgKChjaGFyICopIHRhYiwKLQkJCQkJICB0YWJfYWxsb2Nfc2l6ZSAq IHNpemVvZiAoKnRhYikpOworCSAgY2FjaGUtPnRhYl9hbGxvY19zaXplICo9 IDI7CisJICBjYWNoZS0+dGFiID0gWFJFU0laRVZFQyAoY29uc3QgY2hhciAq LCBjYWNoZS0+dGFiLAorCQkJCSAgIGNhY2hlLT50YWJfYWxsb2Nfc2l6ZSk7 CiAJfQotICAgICAgdGFiW3RhYl9jdXJfc2l6ZSsrXSA9IGZpbGU7CisgICAg ICBjYWNoZS0+dGFiW2NhY2hlLT50YWJfY3VyX3NpemUrK10gPSBmaWxlOwog ICAgIH0KIAogICByZXR1cm4gMDsKIH0KIAorLyogRGF0YSBzdHJ1Y3R1cmUg dG8gbWFpbnRhaW4gcHJpbnRpbmcgc3RhdGUgZm9yIG91dHB1dF9zb3VyY2Vf ZmlsZW5hbWUuICAqLworCitzdHJ1Y3Qgb3V0cHV0X3NvdXJjZV9maWxlbmFt ZV9kYXRhCit7CisgIC8qIENhY2hlIG9mIHdoYXQgd2UndmUgc2VlbiBzbyBm YXIuICAqLworICBzdHJ1Y3QgZmlsZW5hbWVfc2Vlbl9jYWNoZSAqZmlsZW5h bWVfc2Vlbl9jYWNoZTsKKworICAvKiBGbGFnIG9mIHdoZXRoZXIgd2UncmUg cHJpbnRpbmcgdGhlIGZpcnN0IG9uZS4gICovCisgIGludCBmaXJzdDsKK307 CisKIC8qIFNsYXZlIHJvdXRpbmUgZm9yIHNvdXJjZXNfaW5mby4gIEZvcmNl IGxpbmUgYnJlYWtzIGF0ICwncy4KLSAgIE5BTUUgaXMgdGhlIG5hbWUgdG8g cHJpbnQgYW5kICpGSVJTVCBpcyBub256ZXJvIGlmIHRoaXMgaXMgdGhlIGZp cnN0Ci0gICBuYW1lIHByaW50ZWQuICBTZXQgKkZJUlNUIHRvIHplcm8uICAq LworICAgTkFNRSBpcyB0aGUgbmFtZSB0byBwcmludC4KKyAgIERBVEEgY29u dGFpbnMgdGhlIHN0YXRlIGZvciBwcmludGluZyBhbmQgd2F0Y2hpbmcgZm9y IGR1cGxpY2F0ZXMuICAqLwogCiBzdGF0aWMgdm9pZAotb3V0cHV0X3NvdXJj ZV9maWxlbmFtZSAoY29uc3QgY2hhciAqbmFtZSwgaW50ICpmaXJzdCkKK291 dHB1dF9zb3VyY2VfZmlsZW5hbWUgKGNvbnN0IGNoYXIgKm5hbWUsCisJCQlz dHJ1Y3Qgb3V0cHV0X3NvdXJjZV9maWxlbmFtZV9kYXRhICpkYXRhKQogewog ICAvKiBTaW5jZSBhIHNpbmdsZSBzb3VyY2UgZmlsZSBjYW4gcmVzdWx0IGlu IHNldmVyYWwgcGFydGlhbCBzeW1ib2wKICAgICAgdGFibGVzLCB3ZSBuZWVk IHRvIGF2b2lkIHByaW50aW5nIGl0IG1vcmUgdGhhbiBvbmNlLiAgTm90ZTog aWYKQEAgLTMxNjcsMjAgKzMyMTIsMTYgQEAgb3V0cHV0X3NvdXJjZV9maWxl bmFtZSAoY29uc3QgY2hhciAqbmFtZQogICAgICBzeW10YWJzOyBpdCBkb2Vz bid0IGh1cnQgdG8gY2hlY2suICAqLwogCiAgIC8qIFdhcyBOQU1FIGFscmVh ZHkgc2Vlbj8gICovCi0gIGlmIChmaWxlbmFtZV9zZWVuIChuYW1lLCAxLCBm aXJzdCkpCisgIGlmIChmaWxlbmFtZV9zZWVuIChkYXRhLT5maWxlbmFtZV9z ZWVuX2NhY2hlLCBuYW1lLCAxKSkKICAgICB7CiAgICAgICAvKiBZZXM7IGRv bid0IHByaW50IGl0IGFnYWluLiAgKi8KICAgICAgIHJldHVybjsKICAgICB9 CisKICAgLyogTm87IHByaW50IGl0IGFuZCByZXNldCAqRklSU1QuICAqLwot ICBpZiAoKmZpcnN0KQotICAgIHsKLSAgICAgICpmaXJzdCA9IDA7Ci0gICAg fQotICBlbHNlCi0gICAgewotICAgICAgcHJpbnRmX2ZpbHRlcmVkICgiLCAi KTsKLSAgICB9CisgIGlmICghIGRhdGEtPmZpcnN0KQorICAgIHByaW50Zl9m aWx0ZXJlZCAoIiwgIik7CisgIGRhdGEtPmZpcnN0ID0gMDsKIAogICB3cmFw X2hlcmUgKCIiKTsKICAgZnB1dHNfZmlsdGVyZWQgKG5hbWUsIGdkYl9zdGRv dXQpOwpAQCAtMzIwMCwzMSArMzI0MSwzOSBAQCBzb3VyY2VzX2luZm8gKGNo YXIgKmlnbm9yZSwgaW50IGZyb21fdHR5CiB7CiAgIHN0cnVjdCBzeW10YWIg KnM7CiAgIHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlOwotICBpbnQgZmlyc3Q7 CisgIHN0cnVjdCBvdXRwdXRfc291cmNlX2ZpbGVuYW1lX2RhdGEgZGF0YTsK KyAgc3RydWN0IGNsZWFudXAgKmNsZWFudXBzOwogCiAgIGlmICghaGF2ZV9m dWxsX3N5bWJvbHMgKCkgJiYgIWhhdmVfcGFydGlhbF9zeW1ib2xzICgpKQog ICAgIHsKICAgICAgIGVycm9yIChfKCJObyBzeW1ib2wgdGFibGUgaXMgbG9h ZGVkLiAgVXNlIHRoZSBcImZpbGVcIiBjb21tYW5kLiIpKTsKICAgICB9CiAK KyAgZGF0YS5maWxlbmFtZV9zZWVuX2NhY2hlID0gY3JlYXRlX2ZpbGVuYW1l X3NlZW5fY2FjaGUgKCk7CisgIGNsZWFudXBzID0gbWFrZV9jbGVhbnVwIChk ZWxldGVfZmlsZW5hbWVfc2Vlbl9jYWNoZSwKKwkJCSAgIGRhdGEuZmlsZW5h bWVfc2Vlbl9jYWNoZSk7CisKICAgcHJpbnRmX2ZpbHRlcmVkICgiU291cmNl IGZpbGVzIGZvciB3aGljaCBzeW1ib2xzIGhhdmUgYmVlbiByZWFkIGluOlxu XG4iKTsKIAotICBmaXJzdCA9IDE7CisgIGRhdGEuZmlyc3QgPSAxOwogICBB TExfU1lNVEFCUyAob2JqZmlsZSwgcykKICAgewogICAgIGNvbnN0IGNoYXIg KmZ1bGxuYW1lID0gc3ltdGFiX3RvX2Z1bGxuYW1lIChzKTsKIAotICAgIG91 dHB1dF9zb3VyY2VfZmlsZW5hbWUgKGZ1bGxuYW1lID8gZnVsbG5hbWUgOiBz LT5maWxlbmFtZSwgJmZpcnN0KTsKKyAgICBvdXRwdXRfc291cmNlX2ZpbGVu YW1lIChmdWxsbmFtZSA/IGZ1bGxuYW1lIDogcy0+ZmlsZW5hbWUsICZkYXRh KTsKICAgfQogICBwcmludGZfZmlsdGVyZWQgKCJcblxuIik7CiAKICAgcHJp bnRmX2ZpbHRlcmVkICgiU291cmNlIGZpbGVzIGZvciB3aGljaCBzeW1ib2xz ICIKIAkJICAgIndpbGwgYmUgcmVhZCBpbiBvbiBkZW1hbmQ6XG5cbiIpOwog Ci0gIGZpcnN0ID0gMTsKLSAgbWFwX3BhcnRpYWxfc3ltYm9sX2ZpbGVuYW1l cyAob3V0cHV0X3BhcnRpYWxfc3ltYm9sX2ZpbGVuYW1lLCAmZmlyc3QsCisg IGNsZWFyX2ZpbGVuYW1lX3NlZW5fY2FjaGUgKGRhdGEuZmlsZW5hbWVfc2Vl bl9jYWNoZSk7CisgIGRhdGEuZmlyc3QgPSAxOworICBtYXBfcGFydGlhbF9z eW1ib2xfZmlsZW5hbWVzIChvdXRwdXRfcGFydGlhbF9zeW1ib2xfZmlsZW5h bWUsICZkYXRhLAogCQkJCTEgLypuZWVkX2Z1bGxuYW1lKi8pOwogICBwcmlu dGZfZmlsdGVyZWQgKCJcbiIpOworCisgIGRvX2NsZWFudXBzIChjbGVhbnVw cyk7CiB9CiAKIHN0YXRpYyBpbnQKQEAgLTQ1NDMsNyArNDU5Miw3IEBAIG5v dF9pbnRlcmVzdGluZ19mbmFtZSAoY29uc3QgY2hhciAqZm5hbWUKICAgIG1h cF9wYXJ0aWFsX3N5bWJvbF9maWxlbmFtZXMuICAqLwogc3RydWN0IGFkZF9w YXJ0aWFsX2ZpbGVuYW1lX2RhdGEKIHsKLSAgaW50ICpmaXJzdDsKKyAgc3Ry dWN0IGZpbGVuYW1lX3NlZW5fY2FjaGUgKmZpbGVuYW1lX3NlZW5fY2FjaGU7 CiAgIGNoYXIgKnRleHQ7CiAgIGNoYXIgKndvcmQ7CiAgIGludCB0ZXh0X2xl bjsKQEAgLTQ1NjAsNyArNDYwOSw3IEBAIG1heWJlX2FkZF9wYXJ0aWFsX3N5 bXRhYl9maWxlbmFtZSAoY29uc3QKIAogICBpZiAobm90X2ludGVyZXN0aW5n X2ZuYW1lIChmaWxlbmFtZSkpCiAgICAgcmV0dXJuOwotICBpZiAoIWZpbGVu YW1lX3NlZW4gKGZpbGVuYW1lLCAxLCBkYXRhLT5maXJzdCkKKyAgaWYgKCFm aWxlbmFtZV9zZWVuIChkYXRhLT5maWxlbmFtZV9zZWVuX2NhY2hlLCBmaWxl bmFtZSwgMSkKICAgICAgICYmIGZpbGVuYW1lX25jbXAgKGZpbGVuYW1lLCBk YXRhLT50ZXh0LCBkYXRhLT50ZXh0X2xlbikgPT0gMCkKICAgICB7CiAgICAg ICAvKiBUaGlzIGZpbGUgbWF0Y2hlcyBmb3IgYSBjb21wbGV0aW9uOyBhZGQg aXQgdG8gdGhlCkBAIC00NTcyLDcgKzQ2MjEsNyBAQCBtYXliZV9hZGRfcGFy dGlhbF9zeW10YWJfZmlsZW5hbWUgKGNvbnN0CiAgICAgICBjb25zdCBjaGFy ICpiYXNlX25hbWUgPSBsYmFzZW5hbWUgKGZpbGVuYW1lKTsKIAogICAgICAg aWYgKGJhc2VfbmFtZSAhPSBmaWxlbmFtZQotCSAgJiYgIWZpbGVuYW1lX3Nl ZW4gKGJhc2VfbmFtZSwgMSwgZGF0YS0+Zmlyc3QpCisJICAmJiAhZmlsZW5h bWVfc2VlbiAoZGF0YS0+ZmlsZW5hbWVfc2Vlbl9jYWNoZSwgYmFzZV9uYW1l LCAxKQogCSAgJiYgZmlsZW5hbWVfbmNtcCAoYmFzZV9uYW1lLCBkYXRhLT50 ZXh0LCBkYXRhLT50ZXh0X2xlbikgPT0gMCkKIAlhZGRfZmlsZW5hbWVfdG9f bGlzdCAoYmFzZV9uYW1lLCBkYXRhLT50ZXh0LCBkYXRhLT53b3JkLCBkYXRh LT5saXN0KTsKICAgICB9CkBAIC00NTg4LDIzICs0NjM3LDI3IEBAIG1ha2Vf c291cmNlX2ZpbGVzX2NvbXBsZXRpb25fbGlzdCAoY2hhciAKIHsKICAgc3Ry dWN0IHN5bXRhYiAqczsKICAgc3RydWN0IG9iamZpbGUgKm9iamZpbGU7Ci0g IGludCBmaXJzdCA9IDE7CiAgIHNpemVfdCB0ZXh0X2xlbiA9IHN0cmxlbiAo dGV4dCk7CiAgIFZFQyAoY2hhcl9wdHIpICpsaXN0ID0gTlVMTDsKICAgY29u c3QgY2hhciAqYmFzZV9uYW1lOwogICBzdHJ1Y3QgYWRkX3BhcnRpYWxfZmls ZW5hbWVfZGF0YSBkYXR1bTsKLSAgc3RydWN0IGNsZWFudXAgKmJhY2tfdG87 CisgIHN0cnVjdCBmaWxlbmFtZV9zZWVuX2NhY2hlICpmaWxlbmFtZV9zZWVu X2NhY2hlOworICBzdHJ1Y3QgY2xlYW51cCAqYmFja190bywgKmNhY2hlX2Ns ZWFudXA7CiAKICAgaWYgKCFoYXZlX2Z1bGxfc3ltYm9scyAoKSAmJiAhaGF2 ZV9wYXJ0aWFsX3N5bWJvbHMgKCkpCiAgICAgcmV0dXJuIGxpc3Q7CiAKICAg YmFja190byA9IG1ha2VfY2xlYW51cCAoZG9fZnJlZV9jb21wbGV0aW9uX2xp c3QsICZsaXN0KTsKIAorICBmaWxlbmFtZV9zZWVuX2NhY2hlID0gY3JlYXRl X2ZpbGVuYW1lX3NlZW5fY2FjaGUgKCk7CisgIGNhY2hlX2NsZWFudXAgPSBt YWtlX2NsZWFudXAgKGRlbGV0ZV9maWxlbmFtZV9zZWVuX2NhY2hlLAorCQkJ CWZpbGVuYW1lX3NlZW5fY2FjaGUpOworCiAgIEFMTF9TWU1UQUJTIChvYmpm aWxlLCBzKQogICAgIHsKICAgICAgIGlmIChub3RfaW50ZXJlc3RpbmdfZm5h bWUgKHMtPmZpbGVuYW1lKSkKIAljb250aW51ZTsKLSAgICAgIGlmICghZmls ZW5hbWVfc2VlbiAocy0+ZmlsZW5hbWUsIDEsICZmaXJzdCkKKyAgICAgIGlm ICghZmlsZW5hbWVfc2VlbiAoZmlsZW5hbWVfc2Vlbl9jYWNoZSwgcy0+Zmls ZW5hbWUsIDEpCiAJICAmJiBmaWxlbmFtZV9uY21wIChzLT5maWxlbmFtZSwg dGV4dCwgdGV4dF9sZW4pID09IDApCiAJewogCSAgLyogVGhpcyBmaWxlIG1h dGNoZXMgZm9yIGEgY29tcGxldGlvbjsgYWRkIGl0IHRvIHRoZSBjdXJyZW50 CkBAIC00NjE5LDE5ICs0NjcyLDIxIEBAIG1ha2Vfc291cmNlX2ZpbGVzX2Nv bXBsZXRpb25fbGlzdCAoY2hhciAKIAkgICAgIGNvbW1hbmQgZG8gd2hlbiB0 aGV5IHBhcnNlIGZpbGUgbmFtZXMuICAqLwogCSAgYmFzZV9uYW1lID0gbGJh c2VuYW1lIChzLT5maWxlbmFtZSk7CiAJICBpZiAoYmFzZV9uYW1lICE9IHMt PmZpbGVuYW1lCi0JICAgICAgJiYgIWZpbGVuYW1lX3NlZW4gKGJhc2VfbmFt ZSwgMSwgJmZpcnN0KQorCSAgICAgICYmICFmaWxlbmFtZV9zZWVuIChmaWxl bmFtZV9zZWVuX2NhY2hlLCBiYXNlX25hbWUsIDEpCiAJICAgICAgJiYgZmls ZW5hbWVfbmNtcCAoYmFzZV9uYW1lLCB0ZXh0LCB0ZXh0X2xlbikgPT0gMCkK IAkgICAgYWRkX2ZpbGVuYW1lX3RvX2xpc3QgKGJhc2VfbmFtZSwgdGV4dCwg d29yZCwgJmxpc3QpOwogCX0KICAgICB9CiAKLSAgZGF0dW0uZmlyc3QgPSAm Zmlyc3Q7CisgIGRhdHVtLmZpbGVuYW1lX3NlZW5fY2FjaGUgPSBmaWxlbmFt ZV9zZWVuX2NhY2hlOwogICBkYXR1bS50ZXh0ID0gdGV4dDsKICAgZGF0dW0u d29yZCA9IHdvcmQ7CiAgIGRhdHVtLnRleHRfbGVuID0gdGV4dF9sZW47CiAg IGRhdHVtLmxpc3QgPSAmbGlzdDsKICAgbWFwX3BhcnRpYWxfc3ltYm9sX2Zp bGVuYW1lcyAobWF5YmVfYWRkX3BhcnRpYWxfc3ltdGFiX2ZpbGVuYW1lLCAm ZGF0dW0sCiAJCQkJMCAvKm5lZWRfZnVsbG5hbWUqLyk7CisKKyAgZG9fY2xl YW51cHMgKGNhY2hlX2NsZWFudXApOwogICBkaXNjYXJkX2NsZWFudXBzIChi YWNrX3RvKTsKIAogICByZXR1cm4gbGlzdDsK --20cf307f33e0ad7c1604c4b98fc1--