From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 24774 invoked by alias); 30 Sep 2002 21:59:56 -0000 Mailing-List: contact gdb-help@sources.redhat.com; run by ezmlm Precedence: bulk List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-owner@sources.redhat.com Received: (qmail 24766 invoked from network); 30 Sep 2002 21:59:54 -0000 Received: from unknown (HELO crack.them.org) (65.125.64.184) by sources.redhat.com with SMTP; 30 Sep 2002 21:59:54 -0000 Received: from nevyn.them.org ([66.93.61.169]) by crack.them.org with asmtp (Exim 3.12 #1 (Debian)) id 17w9Vv-00019E-00; Mon, 30 Sep 2002 17:59:44 -0500 Received: from drow by nevyn.them.org with local (Exim 3.35 #1 (Debian)) id 17w8Zi-0007L0-00; Mon, 30 Sep 2002 17:59:34 -0400 Date: Mon, 30 Sep 2002 14:59:00 -0000 From: Daniel Jacobowitz To: Fernando Nasser Cc: gdb@sources.redhat.com Subject: Re: RFC: ui_out type? Message-ID: <20020930215934.GB27886@nevyn.them.org> Mail-Followup-To: Fernando Nasser , gdb@sources.redhat.com References: <3D98C484.4030500@redhat.com> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <3D98C484.4030500@redhat.com> User-Agent: Mutt/1.5.1i X-SW-Source: 2002-09/txt/msg00515.txt.bz2 On Mon, Sep 30, 2002 at 05:39:16PM -0400, Fernando Nasser wrote: > The old assembler code would print: > > 0x8048153 : push %ebp > 0x8048154 : mov %esp,%ebp > > The new one prints: > > 0x08048153 : push %ebp > 0x08048154 : mov %esp,%ebp > > Note the "+0" in > > This is because the output code is shared between the CLI and MI output and > the MI output version 1 is always expecting the "offset" keyword, even if > it is zero (based on the current MI tests). > > Sometimes it is necessary to test if the uiout object is of a certain > class. In this case I would like to test if it is of the "cli" type and do > not generate the offset when it is zero. Some other types it will be > necessary to check if the object is of the "mi" type, because we will need > to test which version of the MI we are generating output for. > > I have filled the gdb/774 asking for a function like that. > > I am currently stuck with the disassembler unification because I either > break a CLI test by having the "+0" in there (looks ugly, also), or I break > some MI tests by not having the 'offset="0"' there. > > Note: The MI output keywords are supposed to be optional, so not having an > offset keyword in the output would be fine (meaning that it is a zero > offset). But the current v1 tests, which have power of spec, currently look > for it explicitly. We should remove this from the v2 tests for the cases > the offset is zero, I believe. Well, in that case, may I suggest that we align CLI output based on some "reasonable" length offset? Four digits maybe? The example you paste above strikes me as horrifically ugly, because of the indentation change. I also wonder if there's a way we could shorten this format somewhat. As witness, this output, which I saw earlier today: (gdb) disas 'std::collate::do_compare(char const*, char const*, char const*, char const*) const' Unmatched single quote. [Er... that's not what I wanted to show. Does anyone know why we're reporting an unmatched quote there? "print" works but not "disas".] (gdb) disas 0x4c4e8 Dump of assembler code for function _ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRs: 0x4c4e8 <_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRs>: lui gp,0x8 0x4c4ec <_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRs+4>: addiu gp,gp,4056 0x4c4f0 <_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRs+8>: addu gp,gp,t9 0x4c4f4 <_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRs+12>: addiu sp,sp,-72 There, that's the dump I wanted. First of all, I suspect we should be demangling. Second of all, we should really find a way to print less. Something like: In function: std::num_get > >::get(std::istreambuf_iterator >, std::istreambuf_iterator >, std::ios_base&, std::_Ios_Iostate&, short&) const 0x4c4e8 [+0]: lui gp, 0x8 0x4c4ec [+4]: addiu gp,gp,4056 0x4c4f0 [+8]: addiu gp,gp,t9 0x4c4f4 [+12]: addiu sp,sp,-72 -- Daniel Jacobowitz MontaVista Software Debian GNU/Linux Developer