From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 19230 invoked by alias); 25 May 2012 04:29:26 -0000 Received: (qmail 19220 invoked by uid 22791); 25 May 2012 04:29:25 -0000 X-SWARE-Spam-Status: No, hits=-5.2 required=5.0 tests=AWL,BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FROM,KHOP_RCVD_TRUST,KHOP_THREADED,RCVD_IN_DNSWL_LOW,RCVD_IN_HOSTKARMA_YE,TW_BJ X-Spam-Check-By: sourceware.org Received: from mail-lb0-f169.google.com (HELO mail-lb0-f169.google.com) (209.85.217.169) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Fri, 25 May 2012 04:29:12 +0000 Received: by lbjn8 with SMTP id n8so425716lbj.0 for ; Thu, 24 May 2012 21:29:10 -0700 (PDT) MIME-Version: 1.0 Received: by 10.112.23.196 with SMTP id o4mr838599lbf.49.1337920150789; Thu, 24 May 2012 21:29:10 -0700 (PDT) Received: by 10.112.44.70 with HTTP; Thu, 24 May 2012 21:29:10 -0700 (PDT) In-Reply-To: References: <20120524175852.D38381E139C@ruffy2.mtv.corp.google.com> Date: Fri, 25 May 2012 04:29:00 -0000 Message-ID: Subject: Re: [RFA] massively speed up "info var foo" on large programs From: Matt Rice To: Doug Evans Cc: gdb-patches@sourceware.org Content-Type: multipart/mixed; boundary=90e6ba308f10535c9f04c0d4cf97 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-05/txt/msg00955.txt.bz2 --90e6ba308f10535c9f04c0d4cf97 Content-Type: text/plain; charset=ISO-8859-1 Content-length: 1383 On Thu, May 24, 2012 at 2:28 PM, Doug Evans wrote: > On Thu, May 24, 2012 at 10:58 AM, Doug Evans wrote: >> Hi. >> >> I'm not entirely sure this patch is correct, but it feels correct (*1), >> and is a massive win. >> "info var Task" in one large program goes from 350 seconds to 28 seconds. FWIW i don't have anything with enough objfiles for the above to matter, but here's something that can apply on top of your patch which helps somewhat for objfiles with lots of symtabs, it still contains the same worst case, but helps in the 'info var' case with no arguments in e.g. ./gdb ./gdb -batch -ex 'info var' case where there is a lot of symtabs per objfile, and many symbols returned by info var. it could be faster if we had a way to know if a msymbol has no symbol associated with it, but this was as good as I could get without any major refactoring, though maybe it is a little too ad-hoc. anyhow if you don't mind having a look/testing it out. it does come with a change of behaviour (IMO bugfix) in that it compares the symbol/msymbol addresses, this is for the case of ambiguous variable names, where previously it would not output a msymbol if it found a symbol of the same name. anyhow it speeds up the aforementioned ./gdb ./gdb -batch -ex 'info var' case a bit. though i doubt it will affect 'info var foo' much if at all. thanks --90e6ba308f10535c9f04c0d4cf97 Content-Type: application/octet-stream; name="foo.diff" Content-Disposition: attachment; filename="foo.diff" Content-Transfer-Encoding: base64 X-Attachment-Id: f_h2mqsstl0 Content-length: 7394 ZGlmZiAtLWdpdCBhL2dkYi9zeW10YWIuYyBiL2dkYi9zeW10YWIuYwppbmRl eCA4NjhiY2YyLi5kZDVlNzNmIDEwMDY0NAotLS0gYS9nZGIvc3ltdGFiLmMK KysrIGIvZ2RiL3N5bXRhYi5jCkBAIC0xNTU5LDI2ICsxNTU5LDEzMiBAQCBs b29rdXBfc3ltYm9sX2F1eF9zeW10YWJzIChpbnQgYmxvY2tfaW5kZXgsIGNv bnN0IGNoYXIgKm5hbWUsCiAgIHJldHVybiBOVUxMOwogfQogCisvKiBIZWxw ZXIgZm9yIGxvb2t1cF9zeW1ib2xfbXN5bWJvbF9ibG9ja3ZlY3RvciAqLwor c3RydWN0IHN5bWJvbCAqCitsb29rdXBfYmxvY2tfc3ltYm9sX2Zvcl9tc3lt Ym9sIChjb25zdCBzdHJ1Y3QgYmxvY2sgKmJsb2NrLAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgc3RydWN0IG1pbmltYWxfc3ltYm9sICpt c3ltLAorCQkJCSBjb25zdCBjaGFyICpuYW1lKTsKK3N0cnVjdCBzeW1ib2wg KgorbG9va3VwX2Jsb2NrX3N5bWJvbF9mb3JfbXN5bWJvbCAoY29uc3Qgc3Ry dWN0IGJsb2NrICpibG9jaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHN0cnVjdCBtaW5pbWFsX3N5bWJvbCAqbXN5bSwKKwkJCQkgY29u c3QgY2hhciAqbmFtZSkKK3sKKyAgc3RydWN0IGRpY3RfaXRlcmF0b3IgaXRl cjsKKyAgc3RydWN0IHN5bWJvbCAqc3ltOworCisgIGZvciAoc3ltID0gZGlj dF9pdGVyX25hbWVfZmlyc3QgKEJMT0NLX0RJQ1QgKGJsb2NrKSwKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZSwgJml0ZXIpOwor ICAgICAgIHN5bSAhPSBOVUxMOworICAgICAgIHN5bSA9IGRpY3RfaXRlcl9u YW1lX25leHQgKG5hbWUsICZpdGVyKSkKKyAgICB7CisgICAgICBpZiAoU1lN Qk9MX1ZBTFVFX0FERFJFU1MgKG1zeW0pID09IFNZTUJPTF9WQUxVRV9BRERS RVNTIChzeW0pKQorCXsKKwkgIHJldHVybiBzeW07CisJfQorICAgIH0KKyAg cmV0dXJuIE5VTEw7Cit9CisKK3N0cnVjdCBzeW1ib2wgKgorbG9va3VwX3N5 bWJvbF9tc3ltYm9sX2Jsb2NrX3ZlY3RvciAoY29uc3QgY2hhciAqbmFtZSwK KwkJCQkgICAgc3RydWN0IG1pbmltYWxfc3ltYm9sICptc3ltLAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGJsb2NrdmVj dG9yICpidik7CisKK3N0cnVjdCBzeW1ib2wgKgorbG9va3VwX3N5bWJvbF9t c3ltYm9sX2Jsb2NrX3ZlY3RvciAoY29uc3QgY2hhciAqbmFtZSwKKwkJCQkg ICAgc3RydWN0IG1pbmltYWxfc3ltYm9sICptc3ltLAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGJsb2NrdmVjdG9yICpi dikKK3sKKyAgc3RydWN0IGJsb2NrICpibG9jazsKKyAgc3RydWN0IHN5bWJv bCAqc3ltID0gTlVMTDsKKworICBibG9jayA9IEJMT0NLVkVDVE9SX0JMT0NL IChidiwgR0xPQkFMX0JMT0NLKTsKKyAgc3ltID0gbG9va3VwX2Jsb2NrX3N5 bWJvbF9mb3JfbXN5bWJvbCAoYmxvY2ssIG1zeW0sIG5hbWUpOworICBpZiAo c3ltKQorICAgIHJldHVybiBzeW07CisKKyAgYmxvY2sgPSBCTE9DS1ZFQ1RP Ul9CTE9DSyAoYnYsIFNUQVRJQ19CTE9DSyk7CisgIHN5bSA9IGxvb2t1cF9i bG9ja19zeW1ib2xfZm9yX21zeW1ib2wgKGJsb2NrLCBtc3ltLCBuYW1lKTsK KworICByZXR1cm4gc3ltOworfQorCitzdHJ1Y3Qgc3ltdGFiX2NhY2hlIHsK KyAgc3RydWN0IG9iamZpbGUgKmxhc3Rfb2JqZmlsZTsKKyAgc3RydWN0IHN5 bXRhYiAqbGFzdF9zeW10YWI7Cit9OworCit2b2lkIHN5bXRhYl9jYWNoZV9p bml0IChzdHJ1Y3Qgc3ltdGFiX2NhY2hlICpjYWNoZSk7Cit2b2lkIHN5bXRh Yl9jYWNoZV9pbml0IChzdHJ1Y3Qgc3ltdGFiX2NhY2hlICpjYWNoZSkKK3sK KyAgY2FjaGUtPmxhc3Rfb2JqZmlsZSA9IE5VTEw7CisgIGNhY2hlLT5sYXN0 X3N5bXRhYiA9IE5VTEw7Cit9CisKIC8qIFdyYXBwZXIgYXJvdW5kIGxvb2t1 cF9zeW1ib2xfYXV4X29iamZpbGUgZm9yIHNlYXJjaF9zeW1ib2xzLgogICAg TG9vayB1cCBNU1lNQk9MIGluIERPTUFJTiBpbiB0aGUgZ2xvYmFsIGFuZCBz dGF0aWMgYmxvY2tzIG9mIE9CSkZJTEUuICAqLwogCiBzdGF0aWMgc3RydWN0 IHN5bWJvbCAqCiBsb29rdXBfbXN5bWJvbF9pbl9vYmpmaWxlIChzdHJ1Y3Qg b2JqZmlsZSAqb2JqZmlsZSwKIAkJCSAgIHN0cnVjdCBtaW5pbWFsX3N5bWJv bCAqbXN5bWJvbCwKLQkJCSAgIGRvbWFpbl9lbnVtIGRvbWFpbikKKwkJCSAg IGRvbWFpbl9lbnVtIGRvbWFpbiwKKwkJCSAgIHN0cnVjdCBzeW10YWJfY2Fj aGUgKmNhY2hlKQogewogICBjb25zdCBjaGFyICpuYW1lID0gU1lNQk9MX0xJ TktBR0VfTkFNRSAobXN5bWJvbCk7CiAgIGVudW0gbGFuZ3VhZ2UgbGFuZyA9 IGN1cnJlbnRfbGFuZ3VhZ2UtPmxhX2xhbmd1YWdlOwogICBjb25zdCBjaGFy ICptb2RpZmllZF9uYW1lOwotICBzdHJ1Y3QgY2xlYW51cCAqY2xlYW51cCA9 IGRlbWFuZ2xlX2Zvcl9sb29rdXAgKG5hbWUsIGxhbmcsICZtb2RpZmllZF9u YW1lKTsKLSAgc3RydWN0IHN5bWJvbCAqcmV0dXJudmFsOworICBzdHJ1Y3Qg Y2xlYW51cCAqY2xlYW51cDsKKyAgc3RydWN0IHN5bWJvbCAqcmV0dXJudmFs ID0gTlVMTDsKKyAgc3RydWN0IHN5bXRhYiAqY3VycmVudF9zeW10YWI7Cisg IHN0cnVjdCBzeW10YWIgKm9yaWdfc3ltdGFiOworICBzdHJ1Y3Qgc3ltdGFi ICpuZXh0X3N5bXRhYjsKKyAgc3RydWN0IHN5bXRhYiAqc3RvcF9hdF90aGlz X3N5bXRhYjsKKworICAvKiBGSVhNRTogY2FuIHRoaXMga2lsbCB0aGUgc3lt dGFiIGV4cGFuc2lvbiBzaWRlLWVmZmVjdD8gKi8KKyAgaWYgKCFvYmpmaWxl X2hhc19zeW1ib2xzIChvYmpmaWxlKSkKKyAgICByZXR1cm4gTlVMTDsKKwor ICBjbGVhbnVwID0gZGVtYW5nbGVfZm9yX2xvb2t1cCAobmFtZSwgbGFuZywg Jm1vZGlmaWVkX25hbWUpOworCisgIGlmIChjYWNoZS0+bGFzdF9vYmpmaWxl ICE9IG9iamZpbGUpCisgICAgY3VycmVudF9zeW10YWIgPSBvYmpmaWxlLT5z eW10YWJzOworICBlbHNlCisgICAgY3VycmVudF9zeW10YWIgPSBjYWNoZS0+ bGFzdF9zeW10YWI7CisKKyAgb3JpZ19zeW10YWIgPSBjdXJyZW50X3N5bXRh YjsKKyAgc3RvcF9hdF90aGlzX3N5bXRhYiA9IE5VTEw7CisgIG5leHRfc3lt dGFiID0gb2JqZmlsZS0+c3ltdGFiczsKKworICB3aGlsZSAoY3VycmVudF9z eW10YWIgIT0gc3RvcF9hdF90aGlzX3N5bXRhYikKKyAgICB7CisgICAgICBp ZiAoY3VycmVudF9zeW10YWItPnByaW1hcnkpCisgICAgICAgIHsKKyAgICAg ICAgICBzdHJ1Y3QgYmxvY2t2ZWN0b3IgKmJ2ID0gQkxPQ0tWRUNUT1IgKGN1 cnJlbnRfc3ltdGFiKTsKIAotICByZXR1cm52YWwgPSBsb29rdXBfc3ltYm9s X2F1eF9vYmpmaWxlIChvYmpmaWxlLCBHTE9CQUxfQkxPQ0ssCi0JCQkJCSBt b2RpZmllZF9uYW1lLCBkb21haW4pOwotICBpZiAocmV0dXJudmFsID09IE5V TEwpCi0gICAgcmV0dXJudmFsID0gbG9va3VwX3N5bWJvbF9hdXhfb2JqZmls ZSAob2JqZmlsZSwgU1RBVElDX0JMT0NLLAotCQkJCQkgICBtb2RpZmllZF9u YW1lLCBkb21haW4pOworICAgICAgICAgIHJldHVybnZhbCA9IGxvb2t1cF9z eW1ib2xfbXN5bWJvbF9ibG9ja192ZWN0b3IgKG5hbWUsIG1zeW1ib2wsIGJ2 KTsKIAorICAgICAgICAgIGlmIChyZXR1cm52YWwpCisgICAgICAgICAgICB7 CisgICAgICAgICAgICAgIGlmIChjYWNoZS0+bGFzdF9vYmpmaWxlICE9IG9i amZpbGUpCisJCWNhY2hlLT5sYXN0X29iamZpbGUgPSBvYmpmaWxlOworCisJ ICAgICAgaWYgKGNhY2hlLT5sYXN0X3N5bXRhYiAhPSBjdXJyZW50X3N5bXRh YikKKwkJY2FjaGUtPmxhc3Rfc3ltdGFiID0gY3VycmVudF9zeW10YWI7CisK KwkgICAgICBnb3RvIHJldF9zeW07CisJICAgIH0KKwl9CisgICAgICBpZiAo Y3VycmVudF9zeW10YWItPm5leHQgPT0gTlVMTCkKKwl7CisJICBjdXJyZW50 X3N5bXRhYiA9IG5leHRfc3ltdGFiOworCSAgc3RvcF9hdF90aGlzX3N5bXRh YiA9IG9yaWdfc3ltdGFiOworCSAgbmV4dF9zeW10YWIgPSBvcmlnX3N5bXRh YjsKKwl9CisgICAgICBlbHNlCisgICAgICAgIGN1cnJlbnRfc3ltdGFiID0g Y3VycmVudF9zeW10YWItPm5leHQ7CisgICAgfQorCisgcmV0X3N5bToKICAg ZG9fY2xlYW51cHMgKGNsZWFudXApOwogICByZXR1cm4gcmV0dXJudmFsOwog fQpAQCAtMzQ3NCw2ICszNTgwLDEwIEBAIHNlYXJjaF9zeW1ib2xzIChjaGFy ICpyZWdleHAsIGVudW0gc2VhcmNoX2RvbWFpbiBraW5kLAogCiAgIGlmIChu ZmlsZXMgPT0gMCAmJiAoa2luZCA9PSBWQVJJQUJMRVNfRE9NQUlOIHx8IGtp bmQgPT0gRlVOQ1RJT05TX0RPTUFJTikpCiAgICAgeworICAgICAgc3RydWN0 IHN5bXRhYl9jYWNoZSBzdF9jYWNoZTsKKworICAgICAgc3ltdGFiX2NhY2hl X2luaXQoJnN0X2NhY2hlKTsKKwogICAgICAgQUxMX01TWU1CT0xTIChvYmpm aWxlLCBtc3ltYm9sKQogICAgICAgewogICAgICAgICBRVUlUOwpAQCAtMzQ5 Miw3ICszNjAyLDggQEAgc2VhcmNoX3N5bWJvbHMgKGNoYXIgKnJlZ2V4cCwg ZW51bSBzZWFyY2hfZG9tYWluIGtpbmQsCiAJCWlmIChraW5kID09IEZVTkNU SU9OU19ET01BSU4KIAkJICAgID8gZmluZF9wY19zeW10YWIgKFNZTUJPTF9W QUxVRV9BRERSRVNTIChtc3ltYm9sKSkgPT0gTlVMTAogCQkgICAgOiBsb29r dXBfbXN5bWJvbF9pbl9vYmpmaWxlIChvYmpmaWxlLCBtc3ltYm9sLAotCQkJ CQkJIFZBUl9ET01BSU4pID09IE5VTEwpCisJCQkJCQkgVkFSX0RPTUFJTiwK KwkJCQkJCSAmc3RfY2FjaGUpID09IE5VTEwpCiAJCSAgZm91bmRfbWlzYyA9 IDE7CiAJICAgICAgfQogCSAgfQpAQCAtMzU3Miw2ICszNjgzLDEwIEBAIHNl YXJjaF9zeW1ib2xzIChjaGFyICpyZWdleHAsIGVudW0gc2VhcmNoX2RvbWFp biBraW5kLAogCiAgIGlmIChmb3VuZF9taXNjIHx8IGtpbmQgIT0gRlVOQ1RJ T05TX0RPTUFJTikKICAgICB7CisgICAgICBzdHJ1Y3Qgc3ltdGFiX2NhY2hl IHN0X2NhY2hlOworCisgICAgICBzeW10YWJfY2FjaGVfaW5pdCgmc3RfY2Fj aGUpOworCiAgICAgICBBTExfTVNZTUJPTFMgKG9iamZpbGUsIG1zeW1ib2wp CiAgICAgICB7CiAgICAgICAgIFFVSVQ7CkBAIC0zNTkyLDcgKzM3MDcsOCBA QCBzZWFyY2hfc3ltYm9scyAoY2hhciAqcmVnZXhwLCBlbnVtIHNlYXJjaF9k b21haW4ga2luZCwKIAkJICAgIC8qIFZhcmlhYmxlcy9BYnNvbHV0ZXM6ICBM b29rIHVwIGJ5IG5hbWUuICAqLwogCQkgICAgLyogRklYTUU6IFdoeSBkbyB3 ZSBhbHNvIGxvb2sgdXAgZm5zIGJ5IG5hbWU/ICAqLwogCQkgICAgaWYgKGxv b2t1cF9tc3ltYm9sX2luX29iamZpbGUgKG9iamZpbGUsIG1zeW1ib2wsCi0J CQkJCQkgICBWQVJfRE9NQUlOKSA9PSBOVUxMKQorCQkJCQkJICAgVkFSX0RP TUFJTiwKKwkJCQkJCSAgICZzdF9jYWNoZSkgPT0gTlVMTCkKIAkJICAgICAg ewogCQkJLyogbWF0Y2ggKi8KIAkJCXBzciA9IChzdHJ1Y3Qgc3ltYm9sX3Nl YXJjaCAqKQo= --90e6ba308f10535c9f04c0d4cf97--