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 D696F385E007 for ; Sat, 28 Mar 2020 17:24:39 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org D696F385E007 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 84B82AAC7; Sat, 28 Mar 2020 17:24:38 +0000 (UTC) Subject: Re: [PATCH][gdb] Fix missing symtab includes To: Simon Marchi , gdb-patches@sourceware.org Cc: Tom Tromey References: <20200327204948.GA23365@delia> From: Tom de Vries 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: <44300932-0e15-c3b6-9ce8-44e08dd5d8ef@suse.de> Date: Sat, 28 Mar 2020 18:24:37 +0100 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: Content-Type: text/plain; charset=utf-8 Content-Language: en-US Content-Transfer-Encoding: 7bit X-Spam-Status: No, score=-21.0 required=5.0 tests=BAYES_00, 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: Sat, 28 Mar 2020 17:24:41 -0000 On 28-03-2020 17:32, Simon Marchi wrote: > On 2020-03-27 4:49 p.m., Tom de Vries wrote: >> Hi, >> >> Consider hello.h: >> ... >> inline static const char* >> foo (void) >> { >> return "foo"; >> } >> ... >> and hello.c: >> ... >> #include >> #include "hello.h" >> >> int >> main (void) >> { >> printf ("hello: %s\n", foo ()); >> return 0; >> } >> ... >> compiled with -g, and dwz-compressed: >> ... >> $ gcc -g hello.c >> $ dwz a.out >> ... >> >> When breaking on foo and printing the symbol tables, we have two includes for >> the hello.c compunit_symtab, representing two imported partial units: >> ... >> $ gdb -iex "set language c" -batch a.out -ex "b foo" -ex "maint info symtabs" >> Breakpoint 1 at 0x40050b: file hello.h, line 4. >> ... >> { ((struct compunit_symtab *) 0x38fa890) >> debugformat DWARF 2 >> producer GNU C11 7.5.0 -mtune=generic -march=x86-64 -g >> dirname /data/gdb_versions/devel >> blockvector ((struct blockvector *) 0x39af9f0) >> user ((struct compunit_symtab *) (null)) >> ( includes >> ((struct compunit_symtab *) 0x39afb10) >> ((struct compunit_symtab *) 0x39b00c0) >> ) >> { symtab hello.c ((struct symtab *) 0x38fa940) >> fullname (null) >> linetable ((struct linetable *) 0x39afa80) >> } >> ... > > I am not able to reproduce this. In both cases, I don't get the `includes`. > > What transformation is dwz expected to do on the binary? Here, it looks like > it just compressed the debug info a little bit, changing the addresses, but the > general structure was untouched. > > I'm using the latest git version of dwz (commit b7111689a2ccec2f57343f1051ec8f1df5e89e5c). Hi Simon, thanks for trying this out. I've attached the original a.out here ( https://sourceware.org/bugzilla/show_bug.cgi?id=25718#c3 ) and the dwz-ed a.out here ( https://sourceware.org/bugzilla/show_bug.cgi?id=25718#c4 ). I'm hoping you might be able to reproduce using the latter file (and FWIW, I'm using the same dwz version). I think the reason for the difference in what we are seeing is due to me using openSUSE, which has debug info on various linked in objects like glibc's init.c and elf-init.c. Looking at the readelf -wi output of the dwz-ed executable, dwz exploits commonality between those objects and hello.c, so it's not surprising dwz does not create partial units for platforms that do not have debug info for those objects. Anyway, I'll need to construct a better test-case that reproduces the problem on other platforms. Thanks, - Tom