From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from smtp.polymtl.ca (smtp.polymtl.ca [132.207.4.11]) by sourceware.org (Postfix) with ESMTPS id 7186F3858422 for ; Fri, 19 Nov 2021 02:10:52 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 7186F3858422 Received: from simark.ca (simark.ca [158.69.221.121]) (authenticated bits=0) by smtp.polymtl.ca (8.14.7/8.14.7) with ESMTP id 1AJ2Aj4x026488 (version=TLSv1/SSLv3 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Thu, 18 Nov 2021 21:10:50 -0500 DKIM-Filter: OpenDKIM Filter v2.11.0 smtp.polymtl.ca 1AJ2Aj4x026488 Received: from [10.0.0.11] (192-222-157-6.qc.cable.ebox.net [192.222.157.6]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by simark.ca (Postfix) with ESMTPSA id 535181F0CC; Thu, 18 Nov 2021 21:10:45 -0500 (EST) Message-ID: Date: Thu, 18 Nov 2021 21:10:44 -0500 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Thunderbird/91.3.0 Subject: Re: [PATCH] gdb: use actual DWARF version in compunit's debugformat field Content-Language: en-US To: Simon Marchi , gdb-patches@sourceware.org References: <20211119020845.2606300-1-simon.marchi@efficios.com> From: Simon Marchi In-Reply-To: <20211119020845.2606300-1-simon.marchi@efficios.com> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit X-Poly-FromMTA: (simark.ca [158.69.221.121]) at Fri, 19 Nov 2021 02:10:45 +0000 X-Spam-Status: No, score=-4.7 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, KAM_SHORT, NICE_REPLY_A, RCVD_IN_MSPIKE_H3, RCVD_IN_MSPIKE_WL, SPF_HELO_PASS, SPF_PASS, TXREP autolearn=ham autolearn_force=no version=3.4.4 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) 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: Fri, 19 Nov 2021 02:10:53 -0000 On 2021-11-18 21:08, Simon Marchi via Gdb-patches wrote: > The "info source" command, with a DWARF-compile program, always show > that the debug info is "DWARF 2": > > (gdb) info source > Current source file is test.c > Compilation directory is /home/smarchi/build/binutils-gdb/gdb > Located in /home/smarchi/build/binutils-gdb/gdb/test.c > Contains 2 lines. > Source language is c. > Producer is GNU C17 9.3.0 -mtune=generic -march=x86-64 -g3 -gdwarf-5 -O0 -fasynchronous-unwind-tables -fstack-protector-strong -fstack-clash-protection -fcf-protection. > Compiled with DWARF 2 debugging format. > Includes preprocessor macro info. > > Change it to display the actual DWARF version: > > (gdb) info source > Current source file is test.c > Compilation directory is /home/smarchi/build/binutils-gdb/gdb > Located in /home/smarchi/build/binutils-gdb/gdb/test.c > Contains 2 lines. > Source language is c. > Producer is GNU C17 9.3.0 -mtune=generic -march=x86-64 -g3 -gdwarf-5 -O0 -fasynchronous-unwind-tables -fstack-protector-strong -fstack-clash-protection -fcf-protection. > Compiled with DWARF 5 debugging format. > Includes preprocessor macro info. > > The debug format strings need to live as long as the obfile itself, so > the most straightforward thing to do is to save those strings on the > objfile's obstack. But it seems like we don't have an equivalent of > "obstack_printf". An obstack_printf function is provided by glibc: > > https://www.gnu.org/software/libc/manual/html_node/Dynamic-Output.html > > ... and there's even a gnulib module for it: > > https://www.gnu.org/software/gnulib/manual/html_node/obstack_005fprintf.html > > However, since GDB uses its own obstack implementation (include/obstack.h), I > don't think it would be safe to use a glibc obstack function and pass it a GDB > obstack. The obstack struct layouts might not be the same. > > Implement some simple gdb_obstack_printf/gdb_obstack_vprintf functions > to work around that. And I forgot to add: this should not cause a change in behavior. The only places where GDB checks that string, it checks whether the string starts with "dwarf" (case insensitive). So the version doesn't matter. Simon