From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 15419 invoked by alias); 25 May 2012 08:21:46 -0000 Received: (qmail 15408 invoked by uid 22791); 25 May 2012 08:21:42 -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-vb0-f41.google.com (HELO mail-vb0-f41.google.com) (209.85.212.41) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Fri, 25 May 2012 08:21:29 +0000 Received: by vbbey12 with SMTP id ey12so591974vbb.0 for ; Fri, 25 May 2012 01:21:28 -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=qfUcOXyDL3bx4hevcfDYlHv60kyaT5dMe4xR+/xr4x8=; b=J3ezZJicaZNrXDR2FAfGbQus1vUDFrT8gMQ73ViBd2IRIpqBTld7Gx7djJTjWDoCrG LRWf8YGNgFZ2/Rkfr++qGA2v9kZEhHDXwgfeAPwUwuJ/OvddAc6LVNscybgiDbQHY4Eo 4MjyP2f0qXcoomwUyQBOchFwW3RXqaykF9sRUB7d2GgX/H5Gbux4NSH7tBvbVD0EMFFz RFBbvV+sYB5mxJ+1YauAUh9TALoCuwtq977YqMfc5xYkX4J/iCfB+B+uLka2SzjKPRQY vXDUVVuIg+YJDMCSFtpEe4l+L4elTZp1gsS+ny8xDl7OxrH/qn+dU+cQRgcH7BKWb6FY tf7w== Received: by 10.220.141.79 with SMTP id l15mr2449686vcu.48.1337934088207; Fri, 25 May 2012 01:21:28 -0700 (PDT) MIME-Version: 1.0 Received: by 10.220.141.79 with SMTP id l15mr2449664vcu.48.1337934087849; Fri, 25 May 2012 01:21:27 -0700 (PDT) Received: by 10.52.172.166 with HTTP; Fri, 25 May 2012 01:21:27 -0700 (PDT) In-Reply-To: References: <20120524175852.D38381E139C@ruffy2.mtv.corp.google.com> Date: Fri, 25 May 2012 08:21:00 -0000 Message-ID: Subject: Re: [RFA] massively speed up "info var foo" on large programs From: Doug Evans To: gdb-patches@sourceware.org Cc: ratmice@gmail.com Content-Type: multipart/mixed; boundary=f46d04308a680a075904c0d80ee6 X-System-Of-Record: true X-Gm-Message-State: ALoCoQkERVrCYcYTvX4Txv0MB7kBiYq+8aAjEZLLzKMa73HGrn2KnkjuDhk5OZ4cbOKzSrNFPHIAfPos0QKRpz0Qw8LNZ5xZywrHUnCa8R3KXcrnwNSG9uHJpz0p3p4dsK1YZXMChogdcOZ0vQG8qmVkAc62JkA+tQ== 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/msg00960.txt.bz2 --f46d04308a680a075904c0d80ee6 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Content-length: 1990 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. >> >> [...] >> >> 2012-05-23 =A0Doug Evans =A0 >> >> =A0 =A0 =A0 =A0* symtab.c (lookup_msymbol_in_objfile): New function. >> =A0 =A0 =A0 =A0(search_symbols): Call it. > > Hmmm. > One thing that occurs to me is separate debug objfiles. > lookup_msymbol_in_objfile should probably search them. This is a revised patch. It scans separate debug files. I think I understand the code better so I've removed the FIXME: The comments in the code were misleading, find_pc_symtab is, I think, an optimization to avoid unnecessarily calling lookup_symbol. This patch also adds a (nfiles =3D=3D 0) check to the second minsym loop: there's no point in scanning minsyms for specific files. The output is different from the previous code, I didn't take into account the symbols that gdb creates for @plt entries. I think if we want to continue to provide the current output, we should add an option to "info var|fun|type" to produce it: the normal case shouldn't be that slow. This patch removes the gdb-created minsyms from the output. Another way to go is to print them. I don't have a strong opinion on either choice. [The different with the current behaviour is that if the minsym is found in any objfile then the current code won't print it in the "Non-debugging symbols" section of the output.] Ok to check in? 2012-05-25 Doug Evans * symtab.c (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_msymbol_in_objfile): New function. (search_symbols): Call it. Only scan minsyms if nfiles =3D=3D 0. --f46d04308a680a075904c0d80ee6 Content-Type: text/plain; charset=US-ASCII; name="gdb-120525-search-symbols-speedup-2.patch.txt" Content-Disposition: attachment; filename="gdb-120525-search-symbols-speedup-2.patch.txt" Content-Transfer-Encoding: base64 X-Attachment-Id: f_h2mzbra10 Content-length: 7723 MjAxMi0wNS0yNSAgRG91ZyBFdmFucyAgPGRqZUBnb29nbGUuY29tPgoKCSog c3ltdGFiLmMgKG1pbmltYWxfc3ltYm9sKTogTmV3IG1lbWJlciBjcmVhdGVk X2J5X2dkYi4KCSogZWxmcmVhZC5jIChlbGZfc3ltdGFiX3JlYWQpOiBTZXQg Y3JlYXRlZF9ieV9nZGIgZm9yIEBwbHQgbWluc3ltCgljcmVhdGVkIGJ5IGdk Yi4KCSogc3ltdGFiLmMgKGxvb2t1cF9tc3ltYm9sX2luX29iamZpbGUpOiBO ZXcgZnVuY3Rpb24uCgkoc2VhcmNoX3N5bWJvbHMpOiBDYWxsIGl0LiAgT25s eSBzY2FuIG1pbnN5bXMgaWYgbmZpbGVzID09IDAuCgpJbmRleDogZWxmcmVh ZC5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvc3Jj L3NyYy9nZGIvZWxmcmVhZC5jLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjEz MQpkaWZmIC11IC1wIC1yMS4xMzEgZWxmcmVhZC5jCi0tLSBlbGZyZWFkLmMJ MTggTWF5IDIwMTIgMjE6MDI6NDcgLTAwMDAJMS4xMzEKKysrIGVsZnJlYWQu YwkyNSBNYXkgMjAxMiAwNzoxMzo0MSAtMDAwMApAQCAtNTk0LDYgKzU5NCw3 IEBAIGVsZl9zeW10YWJfcmVhZCAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUK IAkJICBpZiAobXRyYW1wKQogCQkgICAgewogCQkgICAgICBNU1lNQk9MX1NJ WkUgKG10cmFtcCkgPSBNU1lNQk9MX1NJWkUgKG1zeW0pOworCQkgICAgICBt dHJhbXAtPmNyZWF0ZWRfYnlfZ2RiID0gMTsKIAkJICAgICAgbXRyYW1wLT5m aWxlbmFtZSA9IGZpbGVzeW1uYW1lOwogCQkgICAgICBnZGJhcmNoX2VsZl9t YWtlX21zeW1ib2xfc3BlY2lhbCAoZ2RiYXJjaCwgc3ltLCBtdHJhbXApOwog CQkgICAgfQpJbmRleDogc3ltdGFiLmMKPT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PQpSQ1MgZmlsZTogL2N2cy9zcmMvc3JjL2dkYi9zeW10YWIuYyx2CnJldHJp ZXZpbmcgcmV2aXNpb24gMS4zMDYKZGlmZiAtdSAtcCAtcjEuMzA2IHN5bXRh Yi5jCi0tLSBzeW10YWIuYwkyNCBNYXkgMjAxMiAwMjo1MTo0OCAtMDAwMAkx LjMwNgorKysgc3ltdGFiLmMJMjUgTWF5IDIwMTIgMDc6MTM6NDEgLTAwMDAK QEAgLTE1NTksNiArMTU1OSw0OCBAQCBsb29rdXBfc3ltYm9sX2F1eF9zeW10 YWJzIChpbnQgYmxvY2tfaW5kCiAgIHJldHVybiBOVUxMOwogfQogCisvKiBX cmFwcGVyIGFyb3VuZCBsb29rdXBfc3ltYm9sX2F1eF9vYmpmaWxlIGZvciBz ZWFyY2hfc3ltYm9scy4KKyAgIExvb2sgdXAgTVNZTUJPTCBpbiBET01BSU4g aW4gdGhlIGdsb2JhbCBhbmQgc3RhdGljIGJsb2NrcyBvZiBPQkpGSUxFCisg ICBhbmQgYWxsIHJlbGF0ZWQgb2JqZmlsZXMuICAqLworCitzdGF0aWMgc3Ry dWN0IHN5bWJvbCAqCitsb29rdXBfbXN5bWJvbF9pbl9vYmpmaWxlIChzdHJ1 Y3Qgb2JqZmlsZSAqb2JqZmlsZSwKKwkJCSAgIHN0cnVjdCBtaW5pbWFsX3N5 bWJvbCAqbXN5bWJvbCwKKwkJCSAgIGRvbWFpbl9lbnVtIGRvbWFpbikKK3sK KyAgY29uc3QgY2hhciAqbmFtZSA9IFNZTUJPTF9MSU5LQUdFX05BTUUgKG1z eW1ib2wpOworICBlbnVtIGxhbmd1YWdlIGxhbmcgPSBjdXJyZW50X2xhbmd1 YWdlLT5sYV9sYW5ndWFnZTsKKyAgY29uc3QgY2hhciAqbW9kaWZpZWRfbmFt ZTsKKyAgc3RydWN0IGNsZWFudXAgKmNsZWFudXAgPSBkZW1hbmdsZV9mb3Jf bG9va3VwIChuYW1lLCBsYW5nLCAmbW9kaWZpZWRfbmFtZSk7CisgIHN0cnVj dCBvYmpmaWxlICptYWluX29iamZpbGUsICpjdXJfb2JqZmlsZTsKKworICBp ZiAob2JqZmlsZS0+c2VwYXJhdGVfZGVidWdfb2JqZmlsZV9iYWNrbGluaykK KyAgICBtYWluX29iamZpbGUgPSBvYmpmaWxlLT5zZXBhcmF0ZV9kZWJ1Z19v YmpmaWxlX2JhY2tsaW5rOworICBlbHNlCisgICAgbWFpbl9vYmpmaWxlID0g b2JqZmlsZTsKKworICBmb3IgKGN1cl9vYmpmaWxlID0gbWFpbl9vYmpmaWxl OworICAgICAgIGN1cl9vYmpmaWxlOworICAgICAgIGN1cl9vYmpmaWxlID0g b2JqZmlsZV9zZXBhcmF0ZV9kZWJ1Z19pdGVyYXRlIChtYWluX29iamZpbGUs IGN1cl9vYmpmaWxlKSkKKyAgICB7CisgICAgICBzdHJ1Y3Qgc3ltYm9sICpz eW07CisKKyAgICAgIHN5bSA9IGxvb2t1cF9zeW1ib2xfYXV4X29iamZpbGUg KGN1cl9vYmpmaWxlLCBHTE9CQUxfQkxPQ0ssCisJCQkJICAgICAgIG1vZGlm aWVkX25hbWUsIGRvbWFpbik7CisgICAgICBpZiAoc3ltID09IE5VTEwpCisJ c3ltID0gbG9va3VwX3N5bWJvbF9hdXhfb2JqZmlsZSAoY3VyX29iamZpbGUs IFNUQVRJQ19CTE9DSywKKwkJCQkJIG1vZGlmaWVkX25hbWUsIGRvbWFpbik7 CisgICAgICBpZiAoc3ltICE9IE5VTEwpCisJeworCSAgZG9fY2xlYW51cHMg KGNsZWFudXApOworCSAgcmV0dXJuIHN5bTsKKwl9CisgICAgfQorCisgIGRv X2NsZWFudXBzIChjbGVhbnVwKTsKKyAgcmV0dXJuIE5VTEw7Cit9CisKIC8q IEEgaGVscGVyIGZ1bmN0aW9uIGZvciBsb29rdXBfc3ltYm9sX2F1eCB0aGF0 IGludGVyZmFjZXMgd2l0aCB0aGUKICAgICJxdWljayIgc3ltYm9sIHRhYmxl IGZ1bmN0aW9ucy4gICovCiAKQEAgLTM0NjMsMjEgKzM1MDUsMTMgQEAgc2Vh cmNoX3N5bWJvbHMgKGNoYXIgKnJlZ2V4cCwgZW51bSBzZWFyYwogCQl8fCBy ZWdleGVjICgmZGF0dW0ucHJlZywgU1lNQk9MX05BVFVSQUxfTkFNRSAobXN5 bWJvbCksIDAsCiAJCQkgICAgTlVMTCwgMCkgPT0gMCkKIAkgICAgICB7Ci0J CWlmICgwID09IGZpbmRfcGNfc3ltdGFiIChTWU1CT0xfVkFMVUVfQUREUkVT UyAobXN5bWJvbCkpKQotCQkgIHsKLQkJICAgIC8qIEZJWE1FOiBjYXJsdG9u LzIwMDMtMDItMDQ6IEdpdmVuIHRoYXQgdGhlCi0JCSAgICAgICBzZW1hbnRp Y3Mgb2YgbG9va3VwX3N5bWJvbCBrZWVwcyBvbiBjaGFuZ2luZwotCQkgICAg ICAgc2xpZ2h0bHksIGl0IHdvdWxkIGJlIGEgbmljZSBpZGVhIGlmIHdlIGhh ZCBhCi0JCSAgICAgICBmdW5jdGlvbiBsb29rdXBfc3ltYm9sX21pbnN5bSB0 aGF0IGZvdW5kIHRoZQotCQkgICAgICAgc3ltYm9sIGFzc29jaWF0ZWQgdG8g YSBnaXZlbiBtaW5pbWFsIHN5bWJvbCAoaWYKLQkJICAgICAgIGFueSkuICAq LwotCQkgICAgaWYgKGtpbmQgPT0gRlVOQ1RJT05TX0RPTUFJTgotCQkJfHwg bG9va3VwX3N5bWJvbCAoU1lNQk9MX0xJTktBR0VfTkFNRSAobXN5bWJvbCks Ci0JCQkJCSAgKHN0cnVjdCBibG9jayAqKSBOVUxMLAotCQkJCQkgIFZBUl9E T01BSU4sIDApCi0JCQk9PSBOVUxMKQotCQkgICAgICBmb3VuZF9taXNjID0g MTsKLQkJICB9CisJCS8qIE5vdGU6IEFuIGltcG9ydGFudCBzaWRlLWVmZmVj dCBvZiB0aGVzZSBsb29rdXAgZnVuY3Rpb25zCisJCSAgIGlzIHRvIGV4cGFu ZCB0aGUgc3ltYm9sIHRhYmxlIGlmIG1zeW1ib2wgaXMgZm91bmQuICAqLwor CQlpZiAoa2luZCA9PSBGVU5DVElPTlNfRE9NQUlOCisJCSAgICA/IGZpbmRf cGNfc3ltdGFiIChTWU1CT0xfVkFMVUVfQUREUkVTUyAobXN5bWJvbCkpID09 IE5VTEwKKwkJICAgIDogbG9va3VwX21zeW1ib2xfaW5fb2JqZmlsZSAob2Jq ZmlsZSwgbXN5bWJvbCwKKwkJCQkJCSBWQVJfRE9NQUlOKSA9PSBOVUxMKQor CQkgIGZvdW5kX21pc2MgPSAxOwogCSAgICAgIH0KIAkgIH0KICAgICAgIH0K QEAgLTM1NTQsMTIgKzM1ODgsMTUgQEAgc2VhcmNoX3N5bWJvbHMgKGNoYXIg KnJlZ2V4cCwgZW51bSBzZWFyYwogICAvKiBJZiB0aGVyZSBhcmUgbm8gZXll cywgYXZvaWQgYWxsIGNvbnRhY3QuICBJIG1lYW4sIGlmIHRoZXJlIGFyZQog ICAgICBubyBkZWJ1ZyBzeW1ib2xzLCB0aGVuIHByaW50IGRpcmVjdGx5IGZy b20gdGhlIG1zeW1ib2xfdmVjdG9yLiAgKi8KIAotICBpZiAoZm91bmRfbWlz YyB8fCBraW5kICE9IEZVTkNUSU9OU19ET01BSU4pCisgIGlmIChmb3VuZF9t aXNjIHx8IChuZmlsZXMgPT0gMCAmJiBraW5kICE9IEZVTkNUSU9OU19ET01B SU4pKQogICAgIHsKICAgICAgIEFMTF9NU1lNQk9MUyAob2JqZmlsZSwgbXN5 bWJvbCkKICAgICAgIHsKICAgICAgICAgUVVJVDsKIAorCWlmIChtc3ltYm9s LT5jcmVhdGVkX2J5X2dkYikKKwkgIGNvbnRpbnVlOworCiAJaWYgKE1TWU1C T0xfVFlQRSAobXN5bWJvbCkgPT0gb3VydHlwZQogCSAgICB8fCBNU1lNQk9M X1RZUEUgKG1zeW1ib2wpID09IG91cnR5cGUyCiAJICAgIHx8IE1TWU1CT0xf VFlQRSAobXN5bWJvbCkgPT0gb3VydHlwZTMKQEAgLTM1NjksMTQgKzM2MDYs MTMgQEAgc2VhcmNoX3N5bWJvbHMgKGNoYXIgKnJlZ2V4cCwgZW51bSBzZWFy YwogCQl8fCByZWdleGVjICgmZGF0dW0ucHJlZywgU1lNQk9MX05BVFVSQUxf TkFNRSAobXN5bWJvbCksIDAsCiAJCQkgICAgTlVMTCwgMCkgPT0gMCkKIAkg ICAgICB7Ci0JCS8qIEZ1bmN0aW9uczogIExvb2sgdXAgYnkgYWRkcmVzcy4g ICovCi0JCWlmIChraW5kICE9IEZVTkNUSU9OU19ET01BSU4gfHwKLQkJICAg ICgwID09IGZpbmRfcGNfc3ltdGFiIChTWU1CT0xfVkFMVUVfQUREUkVTUyAo bXN5bWJvbCkpKSkKKwkJLyogRm9yIGZ1bmN0aW9ucyB3ZSBjYW4gZG8gYSBx dWljayBjaGVjayBvZiB3aGV0aGVyIHRoZQorCQkgICBzeW1ib2wgbWlnaHQg YmUgZm91bmQgdmlhIGZpbmRfcGNfc3ltdGFiLiAgKi8KKwkJaWYgKGtpbmQg IT0gRlVOQ1RJT05TX0RPTUFJTgorCQkgICAgfHwgZmluZF9wY19zeW10YWIg KFNZTUJPTF9WQUxVRV9BRERSRVNTIChtc3ltYm9sKSkgPT0gTlVMTCkKIAkJ ICB7Ci0JCSAgICAvKiBWYXJpYWJsZXMvQWJzb2x1dGVzOiAgTG9vayB1cCBi eSBuYW1lLiAgKi8KLQkJICAgIGlmIChsb29rdXBfc3ltYm9sIChTWU1CT0xf TElOS0FHRV9OQU1FIChtc3ltYm9sKSwKLQkJCQkgICAgICAgKHN0cnVjdCBi bG9jayAqKSBOVUxMLCBWQVJfRE9NQUlOLCAwKQotCQkJID09IE5VTEwpCisJ CSAgICBpZiAobG9va3VwX21zeW1ib2xfaW5fb2JqZmlsZSAob2JqZmlsZSwg bXN5bWJvbCwKKwkJCQkJCSAgIFZBUl9ET01BSU4pID09IE5VTEwpCiAJCSAg ICAgIHsKIAkJCS8qIG1hdGNoICovCiAJCQlwc3IgPSAoc3RydWN0IHN5bWJv bF9zZWFyY2ggKikKSW5kZXg6IHN5bXRhYi5oCj09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0KUkNTIGZpbGU6IC9jdnMvc3JjL3NyYy9nZGIvc3ltdGFiLmgsdgpy ZXRyaWV2aW5nIHJldmlzaW9uIDEuMjA2CmRpZmYgLXUgLXAgLXIxLjIwNiBz eW10YWIuaAotLS0gc3ltdGFiLmgJMTAgTWF5IDIwMTIgMjA6MDQ6MDAgLTAw MDAJMS4yMDYKKysrIHN5bXRhYi5oCTI1IE1heSAyMDEyIDA3OjEzOjQyIC0w MDAwCkBAIC0zMzksNiArMzM5LDEwIEBAIHN0cnVjdCBtaW5pbWFsX3N5bWJv bAogCiAgIEVOVU1fQklURklFTEQobWluaW1hbF9zeW1ib2xfdHlwZSkgdHlw ZSA6IDg7CiAKKyAgLyogTm9uLXplcm8gaWYgdGhpcyBzeW1ib2wgd2FzIGNy ZWF0ZWQgYnkgZ2RiLgorICAgICBTdWNoIHN5bWJvbHMgZG8gbm90IGFwcGVh ciBpbiB0aGUgb3V0cHV0IG9mICJpbmZvIHZhcnxmdW4iLiAgKi8KKyAgdW5z aWduZWQgaW50IGNyZWF0ZWRfYnlfZ2RiIDogMTsKKwogICAvKiBUd28gZmxh ZyBiaXRzIHByb3ZpZGVkIGZvciB0aGUgdXNlIG9mIHRoZSB0YXJnZXQuICAq LwogICB1bnNpZ25lZCBpbnQgdGFyZ2V0X2ZsYWdfMSA6IDE7CiAgIHVuc2ln bmVkIGludCB0YXJnZXRfZmxhZ18yIDogMTsK --f46d04308a680a075904c0d80ee6--