From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mx2.suse.de (mx2.suse.de [195.135.220.15]) by sourceware.org (Postfix) with ESMTPS id B13A5384A044 for ; Thu, 16 Apr 2020 06:45:55 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org B13A5384A044 Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=suse.de Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=tdevries@suse.de X-Virus-Scanned: by amavisd-new at test-mx.suse.de Received: from relay2.suse.de (unknown [195.135.220.254]) by mx2.suse.de (Postfix) with ESMTP id 09F03AC37; Thu, 16 Apr 2020 06:45:54 +0000 (UTC) Subject: [committed][gdb/testsuite] Fix maint-expand-symbols-header-file.exp for cc-with-gdb-index From: Tom de Vries To: Tom Tromey Cc: gdb-patches@sourceware.org References: <20200329160050.GA24275@delia> <87eet70z32.fsf@tromey.com> <752bb1c3-ae45-3ca6-d808-38c9c0bb2c2a@suse.de> Autocrypt: addr=tdevries@suse.de; keydata= xsBNBF0ltCcBCADDhsUnMMdEXiHFfqJdXeRvgqSEUxLCy/pHek88ALuFnPTICTwkf4g7uSR7 HvOFUoUyu8oP5mNb4VZHy3Xy8KRZGaQuaOHNhZAT1xaVo6kxjswUi3vYgGJhFMiLuIHdApoc u5f7UbV+egYVxmkvVLSqsVD4pUgHeSoAcIlm3blZ1sDKviJCwaHxDQkVmSsGXImaAU+ViJ5l CwkvyiiIifWD2SoOuFexZyZ7RUddLosgsO0npVUYbl6dEMq2a5ijGF6/rBs1m3nAoIgpXk6P TCKlSWVW6OCneTaKM5C387972qREtiArTakRQIpvDJuiR2soGfdeJ6igGA1FZjU+IsM5ABEB AAHNH1RvbSBkZSBWcmllcyA8dGRldnJpZXNAc3VzZS5kZT7CwKsEEwEIAD4WIQSsnSe5hKbL MK1mGmjuhV2rbOJEoAUCXSW0JwIbAwUJA8JnAAULCQgHAgYVCgkICwIEFgIDAQIeAQIXgAAh CRDuhV2rbOJEoBYhBKydJ7mEpsswrWYaaO6FXats4kSgc48H/Ra2lq5p3dHsrlQLqM7N68Fo eRDf3PMevXyMlrCYDGLVncQwMw3O/AkousktXKQ42DPJh65zoXB22yUt8m0g12xkLax98KFJ 5NyUloa6HflLl+wQL/uZjIdNUQaHQLw3HKwRMVi4l0/Jh/TygYG1Dtm8I4o708JS4y8GQxoQ UL0z1OM9hyM3gI2WVTTyprsBHy2EjMOu/2Xpod95pF8f90zBLajy6qXEnxlcsqreMaqmkzKn 3KTZpWRxNAS/IH3FbGQ+3RpWkNGSJpwfEMVCeyK5a1n7yt1podd1ajY5mA1jcaUmGppqx827 8TqyteNe1B/pbiUt2L/WhnTgW1NC1QDOwE0EXSW0JwEIAM99H34Bu4MKM7HDJVt864MXbx7B 1M93wVlpJ7Uq+XDFD0A0hIal028j+h6jA6bhzWto4RUfDl/9mn1StngNVFovvwtfzbamp6+W pKHZm9X5YvlIwCx131kTxCNDcF+/adRW4n8CU3pZWYmNVqhMUiPLxElA6QhXTtVBh1RkjCZQ Kmbd1szvcOfaD8s+tJABJzNZsmO2hVuFwkDrRN8Jgrh92a+yHQPd9+RybW2l7sJv26nkUH5Z 5s84P6894ebgimcprJdAkjJTgprl1nhgvptU5M9Uv85Pferoh2groQEAtRPlCGrZ2/2qVNe9 XJfSYbiyedvApWcJs5DOByTaKkcAEQEAAcLAkwQYAQgAJhYhBKydJ7mEpsswrWYaaO6FXats 4kSgBQJdJbQnAhsMBQkDwmcAACEJEO6FXats4kSgFiEErJ0nuYSmyzCtZhpo7oVdq2ziRKD3 twf7BAQBZ8TqR812zKAD7biOnWIJ0McV72PFBxmLIHp24UVe0ZogtYMxSWKLg3csh0yLVwc7 H3vldzJ9AoK3Qxp0Q6K/rDOeUy3HMqewQGcqrsRRh0NXDIQk5CgSrZslPe47qIbe3O7ik/MC q31FNIAQJPmKXX25B115MMzkSKlv4udfx7KdyxHrTSkwWZArLQiEZj5KG4cCKhIoMygPTA3U yGaIvI/BGOtHZ7bEBVUCFDFfOWJ26IOCoPnSVUvKPEOH9dv+sNy7jyBsP5QxeTqwxC/1ZtNS DUCSFQjqA6bEGwM22dP8OUY6SC94x1G81A9/xbtm9LQxKm0EiDH8KBMLfQ== Message-ID: <159563db-33bc-fb45-c51a-02797c60e857@suse.de> Date: Thu, 16 Apr 2020 08:45:53 +0200 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.5.0 MIME-Version: 1.0 In-Reply-To: <752bb1c3-ae45-3ca6-d808-38c9c0bb2c2a@suse.de> Content-Type: multipart/mixed; boundary="------------0D97D57C5835C104000A87B0" Content-Language: en-US X-Spam-Status: No, score=-30.5 required=5.0 tests=BAYES_00, GIT_PATCH_0, GIT_PATCH_1, GIT_PATCH_2, GIT_PATCH_3, KAM_DMARC_STATUS, RCVD_IN_MSPIKE_H3, RCVD_IN_MSPIKE_WL, SPF_HELO_NONE, SPF_PASS, TXREP autolearn=ham autolearn_force=no version=3.4.2 X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on server2.sourceware.org X-BeenThere: gdb-patches@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gdb-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 16 Apr 2020 06:45:57 -0000 This is a multi-part message in MIME format. --------------0D97D57C5835C104000A87B0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit [ was: Re: [PATCH][gdb] Expand symbolless symtabs using maint expand-symtabs ] On 14-04-2020 15:09, Tom de Vries wrote: > On 02-04-2020 10:44, Tom de Vries wrote: >> On 01-04-2020 21:45, Tom Tromey wrote: >>>>>>>> "Tom" == Tom de Vries writes: >>> >>> Tom> When trying to expand the partial symtab for hello.h: >>> Tom> ... >>> Tom> $ gdb -batch \ >>> Tom> -iex "set language c" \ >>> Tom> a.out \ >>> Tom> -ex "maint expand-symtabs hello.h" \ >>> Tom> -ex "maint info psymtabs" >>> Tom> ... >>> Tom> we in fact find that the partial symtab has not been expanded: >>> Tom> ... >>> Tom> { psymtab hello.h ((struct partial_symtab *) 0x27cf070) >>> Tom> readin no >>> Tom> ... >>> >>> Does this matter, though? >>> I thought include psymtabs like these were kind of placeholders. >>> >> >> Right, but the includer symtab they're pointing towards are also not >> expanded. >> > > I've updated the log message to reflect this, as well as the test-case. > >> Concretely, it does matter for dwarf assembly test-cases, in the sense >> that this patch allows me to have the symtab effect of setting a >> breakpoint in a certain file, without actually setting the breakpoint, >> which means there's no need to flesh out the .debug_line section in >> detail, or indeed even create the file. >> >> [ I mentioned this patch as a prerequisite for a dwarf assembly >> test-case here : >> https://sourceware.org/pipermail/gdb-patches/2020-March/167152.html ] >> >> Furthermore, I found this problem originally not with include psymtabs, >> but with this type of one-DIE CUs: >> ... >> <0>: Abbrev Number: 1 (DW_TAG_compile_unit) >> DW_AT_stmt_list : 0x0 >> <10> DW_AT_low_pc : 0x400430 >> <18> DW_AT_high_pc : 0x40045b >> <20> DW_AT_name : ../sysdeps/x86_64/start.S >> <24> DW_AT_comp_dir : /home/abuild/rpmbuild/BUILD/glibc-2.26/csu >> <28> DW_AT_producer : GNU AS 2.31.1 >> <2c> DW_AT_language : 32769 (MIPS assembler) >> ... >> which I get in every exec on openSUSE Leap 15.1. >> >> In that case, the problem means that "maint expand-symtabs" doesn't >> expand the symtab, in violation of the "maint expand-symtabs" >> documentation, while also being inconsistent with -readnow which does >> create a symbolless symtab. >> > > I've also noted this in the log message. > >> I used the include psymtabs as test-case and running example because it >> reproduces on all platforms in a standard test-case. >> >>> Tom> Fix this by passing a NULL symbol_matcher and lookup_name to >>> Tom> expand_symtabs_matching in maintenance_expand_symtabs, and skipping the call >>> Tom> to recursively_search_psymtabs if symbol_matcher == NULL and >>> Tom> lookup_name == NULL. >>> >>> Could this code use map_symtabs_matching_filename instead? >>> >> >> I can see how that would help with "maint expand-symtabs ", but >> still "maint expand-symtabs" would not expand the partial symtab for >> ../sysdeps/x86_64/start.S. >> >> Thanks, >> - Tom >> >>> I guess I'm not super fond of turning the reference arguments to >>> pointers, unless there's really no other way. > > Unfortunately I don't see another way atm, so I'm committing this as > attached below. > > [ FWIW, something I'm not very happy with myself is the undoing of the > micro-optimization of having this outside of the partial symtabs loop: > ... > lookup_name_info lookup_name = lookup_name_in.make_ignore_params (); > ... > but I'm not sure how to address that. ] I somehow forgot the logic behind manually setting the language and how that is related to indices, so in the committed version I removed the manual language setting, and did not retest with cc-with-gdb-index, with a FAIL as result. This patch fixes that by reinstating the manual language setting. Committed. Thanks, - Tom --------------0D97D57C5835C104000A87B0 Content-Type: text/x-patch; charset=UTF-8; name="0001-gdb-testsuite-Fix-maint-expand-symbols-header-file.exp-for-cc-with-gdb-index.patch" Content-Transfer-Encoding: 7bit Content-Disposition: inline; filename*0="0001-gdb-testsuite-Fix-maint-expand-symbols-header-file.exp-"; filename*1="for-cc-with-gdb-index.patch" [gdb/testsuite] Fix maint-expand-symbols-header-file.exp for cc-with-gdb-index With test-case gdb.base/maint-expand-symbols-header-file.exp and target board cc-with-gdb-index, we have: ... FAIL: gdb.base/maint-expand-symbols-header-file.exp: \ verify no symtabs are expanded ... By default, with partial symbols, we find the main function in the partial symbols, and derive the initial language setting from that, without expanding any psymtab. But that doesn't work with the indices, because the indices don't store the language with the symbols. So instead, the main psymtab is expanded to get the language of main, which causes the FAIL. Fix this by manually setting the language. Tested on x86_64-linux. gdb/testsuite/ChangeLog: 2020-04-16 Tom de Vries * gdb.base/maint-expand-symbols-header-file.exp: Set language before loading exec. --- gdb/testsuite/gdb.base/maint-expand-symbols-header-file.exp | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/gdb/testsuite/gdb.base/maint-expand-symbols-header-file.exp b/gdb/testsuite/gdb.base/maint-expand-symbols-header-file.exp index f73be404c9..05802b2719 100644 --- a/gdb/testsuite/gdb.base/maint-expand-symbols-header-file.exp +++ b/gdb/testsuite/gdb.base/maint-expand-symbols-header-file.exp @@ -18,10 +18,16 @@ standard_testfile .c -if {[prepare_for_testing "failed to prepare" $testfile \ +if {[build_executable "failed to prepare" $testfile \ $srcfile {debug nowarnings}]} { return -1 } +clean_restart + +# Make sure that no symtabs are expanded, by setting language before +# loading exec. +gdb_test_no_output "set language c" +gdb_load ${binfile} set test "verify no symtabs are expanded" if { [readnow] } { --------------0D97D57C5835C104000A87B0--