From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 30433 invoked by alias); 17 Jul 2009 16:27:27 -0000 Received: (qmail 30423 invoked by uid 22791); 17 Jul 2009 16:27:26 -0000 X-SWARE-Spam-Status: No, hits=-1.8 required=5.0 tests=AWL,BAYES_00,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, 17 Jul 2009 16:27:19 +0000 Received: from zps37.corp.google.com (zps37.corp.google.com [172.25.146.37]) by smtp-out.google.com with ESMTP id n6HGREYJ002208 for ; Fri, 17 Jul 2009 17:27:15 +0100 Received: from qw-out-2122.google.com (qwd5.prod.google.com [10.241.193.197]) by zps37.corp.google.com with ESMTP id n6HGRBfG021192 for ; Fri, 17 Jul 2009 09:27:12 -0700 Received: by qw-out-2122.google.com with SMTP id 5so322832qwd.31 for ; Fri, 17 Jul 2009 09:27:11 -0700 (PDT) MIME-Version: 1.0 Received: by 10.229.110.13 with SMTP id l13mr239107qcp.4.1247848031614; Fri, 17 Jul 2009 09:27:11 -0700 (PDT) In-Reply-To: References: <8ac60eac0907161724v40e5bd8bg7877d8901b8d7b6e@mail.gmail.com> Date: Fri, 17 Jul 2009 17:19:00 -0000 Message-ID: <8ac60eac0907170927x6314e81djc7f37e8a383dff2b@mail.gmail.com> Subject: Re: [patch] Speed up find_pc_section From: Paul Pluzhnikov To: tromey@redhat.com Cc: gdb-patches ml Content-Type: multipart/mixed; boundary=0016364eef70a8775f046ee94246 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-07/txt/msg00431.txt.bz2 --0016364eef70a8775f046ee94246 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Content-length: 1261 On Fri, Jul 17, 2009 at 8:06 AM, Tom Tromey wrote: > Paul> +static int objfiles_updated_p; > > This (plus the map itself) seems like another thing that will have to be > per-inferior or per-address-space. =A0But, perhaps we aren't quite ready > for that yet. Yes, this would definitely need to be modified to be per-address-space. > Paul> + objfiles_updated_p +=3D 1; /* Rebuild section map next time we = need it. */ > > It seems like we would need one of these in objfile_relocate Yes, looks like it. Added. > and maybe in reread_symbols. What do you think? Hmm, this one is trickier (I don't want to make objfiles_updated_p global). I moved the 'objfiles_updated_p +=3D 1' from free_objfile() into clear_objfile_data() -- that's called from reread_symbols() as well. > Paul> +int > Paul> +find_pc_section_cmp (const void *key, const void *elt) > > Should be static. Caught this one in the followup patch :-) Here is the update. Re-tested on Linux/x86_64 with no regressions. Thanks, --=20 Paul Pluzhnikov 2009-07-17 Paul Pluzhnikov * objfiles.c (objfiles_updated_p): New variable. (qsort_cmp, bsearch_cmp, update_section_map): New functions. (find_pc_section): Use bsearch. --0016364eef70a8775f046ee94246 Content-Type: text/plain; charset=US-ASCII; name="gdb-find_pc_section-20090717-2.txt" Content-Disposition: attachment; filename="gdb-find_pc_section-20090717-2.txt" Content-Transfer-Encoding: base64 X-Attachment-Id: f_fx94ffi20 Content-length: 6340 SW5kZXg6IG9iamZpbGVzLmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1Mg ZmlsZTogL2N2cy9zcmMvc3JjL2dkYi9vYmpmaWxlcy5jLHYKcmV0cmlldmlu ZyByZXZpc2lvbiAxLjg1CmRpZmYgLXUgLXAgLXUgLXIxLjg1IG9iamZpbGVz LmMKLS0tIG9iamZpbGVzLmMJMTQgSnVsIDIwMDkgMTQ6NTU6MDYgLTAwMDAJ MS44NQorKysgb2JqZmlsZXMuYwkxNyBKdWwgMjAwOSAxNjoyMzozMCAtMDAw MApAQCAtNjQsNiArNjQsMTEgQEAgc3RydWN0IG9iamZpbGUgKmN1cnJlbnRf b2JqZmlsZTsJLyogRm9yIAogc3RydWN0IG9iamZpbGUgKnN5bWZpbGVfb2Jq ZmlsZTsJLyogTWFpbiBzeW1ib2wgdGFibGUgbG9hZGVkIGZyb20gKi8KIHN0 cnVjdCBvYmpmaWxlICpydF9jb21tb25fb2JqZmlsZTsJLyogRm9yIHJ1bnRp bWUgY29tbW9uIHN5bWJvbHMgKi8KIAorLyogUmVjb3JkcyB3aGV0aGVyIGFu eSBvYmpmaWxlcyBhcHBlYXJlZCBvciBkaXNhcHBlYXJlZCBzaW5jZSB3ZSBs YXN0IHVwZGF0ZWQKKyAgIGFkZHJlc3MgdG8gb2JqIHNlY3Rpb24gbWFwLiAg Ki8KKworc3RhdGljIGludCBvYmpmaWxlc191cGRhdGVkX3A7CisKIC8qIExv Y2F0ZSBhbGwgbWFwcGFibGUgc2VjdGlvbnMgb2YgYSBCRkQgZmlsZS4gCiAg ICBvYmpmaWxlX3BfY2hhciBpcyBhIGNoYXIgKiB0byBnZXQgaXQgdGhyb3Vn aAogICAgYmZkX21hcF9vdmVyX3NlY3Rpb25zOyB3ZSBjYXN0IGl0IGJhY2sg dG8gaXRzIHByb3BlciB0eXBlLiAgKi8KQEAgLTk0LDYgKzk5LDcgQEAgYWRk X3RvX29iamZpbGVfc2VjdGlvbnMgKHN0cnVjdCBiZmQgKmFiZgogICBvYnN0 YWNrX2dyb3cgKCZvYmpmaWxlLT5vYmpmaWxlX29ic3RhY2ssIChjaGFyICop ICZzZWN0aW9uLCBzaXplb2YgKHNlY3Rpb24pKTsKICAgb2JqZmlsZS0+c2Vj dGlvbnNfZW5kCiAgICAgPSAoc3RydWN0IG9ial9zZWN0aW9uICopICgoKHNp emVfdCkgb2JqZmlsZS0+c2VjdGlvbnNfZW5kKSArIDEpOworICBvYmpmaWxl c191cGRhdGVkX3AgKz0gMTsgIC8qIFJlYnVpbGQgc2VjdGlvbiBtYXAgbmV4 dCB0aW1lIHdlIG5lZWQgaXQuICAqLwogfQogCiAvKiBCdWlsZHMgYSBzZWN0 aW9uIHRhYmxlIGZvciBPQkpGSUxFLgpAQCAtNjc2LDYgKzY4Miw3IEBAIG9i amZpbGVfcmVsb2NhdGUgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWwKIAogICAv KiBSZWxvY2F0ZSBicmVha3BvaW50cyBhcyBuZWNlc3NhcnksIGFmdGVyIHRo aW5ncyBhcmUgcmVsb2NhdGVkLiAqLwogICBicmVha3BvaW50X3JlX3NldCAo KTsKKyAgb2JqZmlsZXNfdXBkYXRlZF9wICs9IDE7ICAvKiBSZWJ1aWxkIHNl Y3Rpb24gbWFwIG5leHQgdGltZSB3ZSBuZWVkIGl0LiAgKi8KIH0KIAwKIC8q IE1hbnkgcGxhY2VzIGluIGdkYiB3YW50IHRvIHRlc3QganVzdCB0byBzZWUg aWYgd2UgaGF2ZSBhbnkgcGFydGlhbApAQCAtNzU3LDIzICs3NjQsMTEzIEBA IGhhdmVfbWluaW1hbF9zeW1ib2xzICh2b2lkKQogICByZXR1cm4gMDsKIH0K IAorLyogUXNvcnQgY29tcGFyaXNvbiBmdW5jdGlvbi4gICovCisKK3N0YXRp YyBpbnQKK3Fzb3J0X2NtcCAoY29uc3Qgdm9pZCAqYSwgY29uc3Qgdm9pZCAq YikKK3sKKyAgY29uc3Qgc3RydWN0IG9ial9zZWN0aW9uICpzZWN0MSA9ICoo Y29uc3Qgc3RydWN0IG9ial9zZWN0aW9uICoqKSBhOworICBjb25zdCBzdHJ1 Y3Qgb2JqX3NlY3Rpb24gKnNlY3QyID0gKihjb25zdCBzdHJ1Y3Qgb2JqX3Nl Y3Rpb24gKiopIGI7CisgIGNvbnN0IENPUkVfQUREUiBzZWN0MV9hZGRyID0g b2JqX3NlY3Rpb25fYWRkciAoc2VjdDEpOworICBjb25zdCBDT1JFX0FERFIg c2VjdDJfYWRkciA9IG9ial9zZWN0aW9uX2FkZHIgKHNlY3QyKTsKKworICBp ZiAoc2VjdDFfYWRkciA8IHNlY3QyX2FkZHIpCisgICAgeworICAgICAgZ2Ri X2Fzc2VydCAob2JqX3NlY3Rpb25fZW5kYWRkciAoc2VjdDEpIDw9IHNlY3Qy X2FkZHIpOworICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgZWxzZSBpZiAo c2VjdDFfYWRkciA+IHNlY3QyX2FkZHIpCisgICAgeworICAgICAgZ2RiX2Fz c2VydCAoc2VjdDFfYWRkciA+PSBvYmpfc2VjdGlvbl9lbmRhZGRyIChzZWN0 MikpOworICAgICAgcmV0dXJuIDE7CisgICAgfQorICAvKiBUaGlzIGNhbiBo YXBwZW4gZm9yIHNlcGFyYXRlIGRlYnVnLWluZm8gZmlsZXMuICAqLworICBn ZGJfYXNzZXJ0IChvYmpfc2VjdGlvbl9lbmRhZGRyIChzZWN0MSkgPT0gb2Jq X3NlY3Rpb25fZW5kYWRkciAoc2VjdDIpKTsKKworICByZXR1cm4gMDsKK30K KworLyogVXBkYXRlIFBNQVAsIFBNQVBfU0laRSB3aXRoIG5vbi1UTFMgc2Vj dGlvbnMgZnJvbSBhbGwgb2JqZmlsZXMuICAqLworCitzdGF0aWMgdm9pZAor dXBkYXRlX3NlY3Rpb25fbWFwIChzdHJ1Y3Qgb2JqX3NlY3Rpb24gKioqcG1h cCwgaW50ICpwbWFwX3NpemUpCit7CisgIGludCBtYXBfc2l6ZSwgaWR4Owor ICBzdHJ1Y3Qgb2JqX3NlY3Rpb24gKnMsICoqbWFwOworICBzdHJ1Y3Qgb2Jq ZmlsZSAqb2JqZmlsZTsKKworICBnZGJfYXNzZXJ0IChvYmpmaWxlc191cGRh dGVkX3AgIT0gMCk7CisKKyAgbWFwID0gKnBtYXA7CisgIHhmcmVlIChtYXAp OworCisjZGVmaW5lIGluc2VydF9wKG9iamYsIHNlYykgXAorICAoKGJmZF9n ZXRfc2VjdGlvbl9mbGFncyAoKG9iamYpLT5vYmZkLCAoc2VjKS0+dGhlX2Jm ZF9zZWN0aW9uKSBcCisgICAgJiBTRUNfVEhSRUFEX0xPQ0FMKSA9PSAwKQor CisgIG1hcF9zaXplID0gMDsKKyAgQUxMX09CSlNFQ1RJT05TIChvYmpmaWxl LCBzKQorICAgIGlmIChpbnNlcnRfcCAob2JqZmlsZSwgcykpCisgICAgICBt YXBfc2l6ZSArPSAxOworCisgIG1hcCA9IHhtYWxsb2MgKG1hcF9zaXplICog c2l6ZW9mICgqbWFwKSk7CisKKyAgaWR4ID0gMDsKKyAgQUxMX09CSlNFQ1RJ T05TIChvYmpmaWxlLCBzKQorICAgIGlmIChpbnNlcnRfcCAob2JqZmlsZSwg cykpCisgICAgICBtYXBbaWR4KytdID0gczsKKworI3VuZGVmIGluc2VydF9w CisKKyAgcXNvcnQgKG1hcCwgbWFwX3NpemUsIHNpemVvZiAoKm1hcCksIHFz b3J0X2NtcCk7CisKKyAgKnBtYXAgPSBtYXA7CisgICpwbWFwX3NpemUgPSBt YXBfc2l6ZTsKK30KKworLyogQnNlYXJjaCBjb21wYXJpc29uIGZ1bmN0aW9u LiAqLworCitzdGF0aWMgaW50Citic2VhcmNoX2NtcCAoY29uc3Qgdm9pZCAq a2V5LCBjb25zdCB2b2lkICplbHQpCit7CisgIGNvbnN0IENPUkVfQUREUiBw YyA9ICooQ09SRV9BRERSICopIGtleTsKKyAgY29uc3Qgc3RydWN0IG9ial9z ZWN0aW9uICpzZWN0aW9uID0gKihjb25zdCBzdHJ1Y3Qgb2JqX3NlY3Rpb24g KiopIGVsdDsKKworICBpZiAocGMgPCBvYmpfc2VjdGlvbl9hZGRyIChzZWN0 aW9uKSkKKyAgICByZXR1cm4gLTE7CisgIGlmIChwYyA8IG9ial9zZWN0aW9u X2VuZGFkZHIgKHNlY3Rpb24pKQorICAgIHJldHVybiAwOworICByZXR1cm4g MTsKK30KKwogLyogUmV0dXJucyBhIHNlY3Rpb24gd2hvc2UgcmFuZ2UgaW5j bHVkZXMgUEMgb3IgTlVMTCBpZiBub25lIGZvdW5kLiAgICovCiAKIHN0cnVj dCBvYmpfc2VjdGlvbiAqCiBmaW5kX3BjX3NlY3Rpb24gKENPUkVfQUREUiBw YykKIHsKLSAgc3RydWN0IG9ial9zZWN0aW9uICpzOwotICBzdHJ1Y3Qgb2Jq ZmlsZSAqb2JqZmlsZTsKKyAgc3RhdGljIHN0cnVjdCBvYmpfc2VjdGlvbiAq KnNlY3Rpb25zOworICBzdGF0aWMgaW50IG51bV9zZWN0aW9uczsKKworICBz dHJ1Y3Qgb2JqX3NlY3Rpb24gKnMsICoqc3A7CiAKICAgLyogQ2hlY2sgZm9y IG1hcHBlZCBvdmVybGF5IHNlY3Rpb24gZmlyc3QuICAqLwogICBzID0gZmlu ZF9wY19tYXBwZWRfc2VjdGlvbiAocGMpOwogICBpZiAocykKICAgICByZXR1 cm4gczsKIAotICBBTExfT0JKU0VDVElPTlMgKG9iamZpbGUsIHMpCi0gICAg aWYgKG9ial9zZWN0aW9uX2FkZHIgKHMpIDw9IHBjICYmIHBjIDwgb2JqX3Nl Y3Rpb25fZW5kYWRkciAocykpCi0gICAgICByZXR1cm4gczsKKyAgaWYgKG9i amZpbGVzX3VwZGF0ZWRfcCAhPSAwKQorICAgIHsKKyAgICAgIHVwZGF0ZV9z ZWN0aW9uX21hcCAoJnNlY3Rpb25zLCAmbnVtX3NlY3Rpb25zKTsKKworICAg ICAgLyogRG9uJ3QgbmVlZCB1cGRhdGVzIHRvIHNlY3Rpb24gbWFwIHVudGls IG9iamZpbGVzIGFyZSBhZGRlZAorICAgICAgICAgb3IgcmVtb3ZlZC4gICov CisgICAgICBvYmpmaWxlc191cGRhdGVkX3AgPSAwOworICAgIH0KIAorICBz cCA9IChzdHJ1Y3Qgb2JqX3NlY3Rpb24gKiopIGJzZWFyY2ggKCZwYywgc2Vj dGlvbnMsIG51bV9zZWN0aW9ucywKKwkJCQkJc2l6ZW9mICgqc2VjdGlvbnMp LCBic2VhcmNoX2NtcCk7CisgIGlmIChzcCAhPSBOVUxMKQorICAgIHJldHVy biAqc3A7CiAgIHJldHVybiBOVUxMOwogfQogCkBAIC04NzYsNiArOTczLDcg QEAgY2xlYXJfb2JqZmlsZV9kYXRhIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZgog ICAgICAgcmVnaXN0cmF0aW9uLT5kYXRhLT5jbGVhbnVwIChvYmpmaWxlLCBv YmpmaWxlLT5kYXRhW2ldKTsKIAogICBtZW1zZXQgKG9iamZpbGUtPmRhdGEs IDAsIG9iamZpbGUtPm51bV9kYXRhICogc2l6ZW9mICh2b2lkICopKTsKKyAg b2JqZmlsZXNfdXBkYXRlZF9wICs9IDE7ICAvKiBSZWJ1aWxkIHNlY3Rpb24g bWFwIG5leHQgdGltZSB3ZSBuZWVkIGl0LiAgKi8KIH0KIAogdm9pZAo= --0016364eef70a8775f046ee94246--